saveapi.org

Why the Instagram Graph API won't download reels — and what does

Developers reach for the Graph API because it is the official one, then spend a week on App Review to discover it answers a different question. It is built for managing your own account, not for reading other people's public posts. This guide draws the line between the two, so you stop looking for an endpoint that is not there.

Updated

What the Graph API is for

It is an account-management API: publish to a professional account you own, read its insights, moderate its comments. The media_url field exists and points at real files — for media that belongs to the account that granted your token. There is no call that takes an arbitrary public reel and returns its video.

The three walls

First, every media endpoint is scoped to the authorised account. Second, the Basic Display API — the one that used to read a consenting user's own feed — was shut down in December 2024. Third, oEmbed, the only endpoint that accepts a public URL, returns embed HTML and a thumbnail, needs App Review to use, and never returns a video file.

A public reel through a downloader API

The request is the link and your key. There is no OAuth flow, no App Review and no Instagram account on your side. The endpoint accepts reels, posts, carousels and stories in whatever form the share sheet produced.

Terminal
curl -s "https://api.saveapi.org/v1/instagram" \
  -H "Authorization: Bearer sk_live_xxxx" \
  -G --data-urlencode "url=https://www.instagram.com/reel/ABC123/"

Read the response

medias[] holds every file in the post in order, each with a type and a direct URL to the source CDN. meta carries the author and caption. A carousel with two photos and a clip gives two image entries and one video entry; the shape does not change per post.

Python
data = resolve("https://www.instagram.com/reel/ABC123/")

for media in data["medias"]:
    # "video" yoki "image"; karuselda post tartibida keladi
    print(media["type"], media["url"])

print(data["meta"]["author"], data["meta"]["title"])

When the Graph API is still the right tool

If you are publishing to your own account, reading its analytics or replying to its comments, stay with the Graph API — that is what it is for and nothing here replaces it. Use a downloader API for the one thing it cannot do: resolving a public post you do not own.

Questions before you build

Is using a downloader API allowed?
The endpoint resolves public posts to the URLs Instagram already serves to any visitor; what you may do with the file is decided by the creator's rights and the platform's terms, not by the API. Build for saving, archiving and reposting with permission.
Do I get the same quality as the Graph API's media_url?
You get the rendition Instagram publishes for the post — the same file a browser plays. The response does not carry a formats[] list for Instagram, so there is no quality selection to make.
Can I fetch a whole profile?
No — the API takes a post, reel or story link, not a username. Stories are the exception: instagram.com/stories/<username>/ returns everything that account has active right now.

Platform references used here

Other guides

Run this guide with your own key

Key in under a minute. 1,000 free credits, no card, no expiry.

Get a key and try itFull API reference