Instagram Reels Download API

Send a public Instagram Reel URL and get it back as an MP4 file. One request creates one job; private, removed, or restricted posts can fail.

First request

GET

Use the shared API host unless the dashboard shows an account-specific hostname.

curl --get "https://p.savenow.to/ajax/download.php" \
  --data-urlencode "url=https://www.instagram.com/reel/DaBiXu4hlK2/" \
  --data "format=720" \
  --data "apikey=YOUR_API_KEY"

Submit one public Instagram Reel

Pass the complete public Reel URL in the normal url parameter. The documented download endpoint creates one job for that Reel.

Request an MP4

Use format=720 to get the Reel as an MP4 with H.264 video and AAC audio. Instagram Reels are supported as video output.

Poll the returned job

Keep the returned id or progress_url with the source URL. Poll until progress reaches 1000, then require success=1 or true and a non-empty download_url.

Respect post access limits

Private, removed, login-required, age-restricted, or region-restricted Reels can fail. A public Reel that works today does not establish access to another account’s posts.

Feature details

Build an Instagram Reel job flow

Use a public Reel URL

Validate the submitted URL and create a separate download job for each Reel.

Keep the API key private

Create account API jobs from a server and read VDA_API_KEY from protected configuration.

Handle access errors

Show the terminal error and ask the user to check that the Reel is public and available instead of retrying indefinitely.

What to expect

Public Reels

Public Reels download as MP4 video.

MP4 output

Files use H.264 video and AAC audio, which play almost everywhere.

No private accounts

Private or login-restricted posts are not available.

Parameters

url Required Use the complete public Instagram Reel URL.
format=720 Video output Returns the Reel as an MP4 file.
apikey Required for account API jobs Authenticate account download requests with a server-side dashboard key.
progress_url Response Poll the returned job until it finishes or reports a terminal error.
download_url Ready file Fetch only the non-empty URL from the successful terminal response for this job.

Request examples

cURL Instagram Reel MP4 request

bash
curl --get "https://p.savenow.to/ajax/download.php" --data-urlencode "url=https://www.instagram.com/reel/DaBiXu4hlK2/" --data "format=720" --data "apikey=YOUR_API_KEY"

Node.js Instagram Reel MP4 request

javascript
const apiKey = process.env.VDA_API_KEY;
if (!apiKey) throw new Error('Set VDA_API_KEY on the server.');

const params = new URLSearchParams({
  url: 'https://www.instagram.com/reel/DaBiXu4hlK2/',
  format: '720',
  apikey: apiKey,
});
const response = await fetch('https://p.savenow.to/ajax/download.php?' + params);
if (!response.ok) throw new Error('Download request failed: ' + response.status);
const job = await response.json();
if (!job.success || !job.id) throw new Error(job.message || 'The Reel job was not accepted.');
console.log({ id: job.id, progressUrl: job.progress_url });

Python Instagram Reel MP4 request

python
import os
import requests

response = requests.get(
    "https://p.savenow.to/ajax/download.php",
    params={
        "url": "https://www.instagram.com/reel/DaBiXu4hlK2/",
        "format": "720",
        "apikey": os.environ["VDA_API_KEY"],
    },
    timeout=30,
)
response.raise_for_status()
job = response.json()
if not job.get("success") or not job.get("id"):
    raise RuntimeError(job.get("message") or "The Reel job was not accepted.")
print({"id": job["id"], "progress_url": job.get("progress_url")})

Important details

Create an API key

Use a dashboard key for account API jobs and keep it server-side.

Get an API key

Review the request contract

See the documented download parameters, progress response, and terminal success checks.

Read API docs

Download TikTok videos too

The same download endpoint also handles public TikTok videos as MP4 or MP3.

Read the TikTok guide

Related guides

Continue building

OpenAPI docs

Download YAML or JSON specs and inspect downloader, progress, and subtitle endpoints.

Read docs

Embed resources

Keep button, card, widget, and REST paths reachable for existing users and migrations.

View resources

Common questions

Can I download an Instagram Reel through the API?

Yes. Send the public Reel URL in the url parameter with format=720 to get an MP4. Private or restricted Reels are not available.

Can I get MP3 audio from a Reel?

Instagram is supported for MP4 video output. If you need audio only, extract it from the MP4 in your own pipeline.

Can the endpoint access private Reels?

No. Only public Reels are supported. Private, login-required, removed, or otherwise restricted posts fail.

Does the Video Info endpoint return Instagram metadata?

No. The documented metadata-only function accepts YouTube URLs. Use the download response fields for the Reel job itself.