Resolves any public Instagram URL into direct media links. One endpoint covers reels, photos, carousels and stories — you never pick a mode.
GET
https://api.gapi.dev/instagramRequires the X-API-Key header · responds in JSON
Parameters
urlrequiredstringPublic Instagram URL. Share links copied straight from the app work as-is — tracking parameters such as ?igsh= are handled for you.
e.g. https://www.instagram.com/reel/DbLWsRuyurp/Try it
GET
https://api.gapi.dev/instagramTry
No key yet? Create one free
curl -G 'https://api.gapi.dev/instagram' \
--data-urlencode 'url=https://www.instagram.com/reel/DbLWsRuyurp/' \
-H 'X-API-Key: YOUR_KEY'Responses
{
"platform": "instagram",
"type": "album",
"title": "Three days in the mountains",
"author": null,
"thumbnail": "https://scontent.cdninstagram.com/…",
"duration": null,
"media": [
{ "type": "image", "url": "https://…", "quality": null, "ext": null },
{ "type": "image", "url": "https://…", "quality": null, "ext": null },
{ "type": "video", "url": "https://…", "quality": null, "ext": null }
]
}What each link gives you
| You send | type | media contains |
|---|---|---|
/reel/… | video | one MP4 |
/p/… single photo | image | one image |
/p/… carousel | album | every slide, in order |
/stories/<user>/… | album | all stories currently active on that account |
Field-by-field detail is on the response shape page.
Speed

Measured on cold requests for links the resolver had not seen before. Reels are usually fastest; carousels take longest because more files are resolved.
One call, one request
A carousel with ten slides costs the same as a single photo — one request against your quota. You are billed for calls, not files.