Instagram Highlight API
Every story in one highlight reel, oldest first, with its media URLs. Takes the id from /v1/instagram/user-highlights, a bare numeric id, or a /stories/highlights/ URL. Calls cost 1 credit each. A cache hit is free, and a failed or empty response is never charged.
Try it
Prefilled with the request that produced the example below. No key yet? Get a free key.
Request
GET
/v1/instagram/highlight| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Highlight id ("highlight:17…" or the bare number), or a /stories/highlights/ URL |
Also accepts cache_max_age (a hit costs 0 credits) and include_raw (returns the untouched upstream payload under raw).
curl
curl "$API/v1/instagram/highlight?id=highlight%3A18023864549864045&cache_max_age=7d" \
-H "x-api-key: $KEY"JavaScript
const query = new URLSearchParams({
id: 'highlight:18023864549864045',
cache_max_age: '7d',
});
const response = await fetch(`${API}/v1/instagram/highlight?${query}`, {
headers: { 'x-api-key': KEY },
});
const body = await response.json();
if (!body.success) throw new Error(body.error.code);
// 1 credit, 0 on a cache hit
console.log(body.data, body.meta.creditsCharged);Python
import os, httpx
r = httpx.get(
f"{os.environ['API']}/v1/instagram/highlight",
params={
"id": "highlight:18023864549864045",
"cache_max_age": "7d",
},
headers={"x-api-key": os.environ["KEY"]},
timeout=30,
)
body = r.json()
if not body["success"]:
raise RuntimeError(body["error"]["code"])
print(body["data"], body["meta"]["creditsCharged"])Example response
Captured on , with raw removed and lists cut to two items. A live call returns current data.
response
{
"success": true,
"data": {
"items": [
{
"platform": "instagram",
"id": "Det6mYPEZaA",
"type": "story",
"url": "https://www.instagram.com/stories/highlights/18023864549864045/",
"title": null,
"text": null,
"authorId": "787132",
"authorHandle": "natgeo",
"authorName": "National Geographic",
"thumbnailUrl": "https://instagram.fsin17-1.fna.fbcdn.net/v/t51.71878-15/858981307_2584622395349397_7318871625928867813_n.jpg?stp=dst-jpg_e15_tt6&_nc_cat=1&ig_cache_key=NDAxMjEyMDU2NzExNzM1NDYyNA%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IlNUT1JZLnhwaWRzLjY0MC5zZHIudmlkZW9fZGVmYXVsdF9jb3Zlcl9mcmFtZS5DMyJ9&_nc_ohc=cJIZxl94H9kQ7kNvwEP3_Hg&_nc_oc=Adq_UKlai55vBQsvPEtwEFnG_oR1EDKPWA8OwbvwS41WlAzNwFo62eRD1371jp4DO8s&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_ht=instagram.fsin17-1.fna&_nc_gid=d97ds6SDuRCp5vARZoZY_Q&_nc_ss=7a20f&oh=00_AQOP8Hx0KpC1JQHaiu_mOTn787YGyNF9v8Hry426INcuqA&oe=6ADE006D",
"mediaUrls": [
"https://instagram.fsin17-1.fna.fbcdn.net/o1/v/t2/f2/m78/AQPyy1nSmXOn73Q1QB0NVznCvo1RmXxggQMktLVDCIUMzEKO_6-0Qil9pON54uB0l9mHyflRzzzRAJIhXoDdyiKX2f5h01zsvcDNEWk.mp4?_nc_cat=100&_nc_oc=Adpg4aZc6a3vy4ChekYZuCSJGSDhT0pq8rFpx_x8R25elVFShoUZNLIEptKkMPOGmPg&_nc_sid=5e9851&_nc_ht=instagram.fsin17-1.fna.fbcdn.net&_nc_ohc=Qj1RqCJntJAQ7kNvwEUqYnA&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5JTlNUQUdSQU0uU1RPUlkuQzMuNzIwLmRhc2hfYmFzZWxpbmVfMV92MSIsInhwdl9hc3NldF9pZCI6MTg3MTAxNDY5MjcwMTkxMzMsImFzc2V0X2FnZV9kYXlzIjowLCJ2aV91c2VjYXNlX2lkIjoxMDEwMCwiZHVyYXRpb25fcyI6OSwidXJsZ2VuX3NvdXJjZSI6Ind3dyJ9&ccb=17-1&vs=cc6fe4c308190f63&_nc_vs=HBksFQIYUWlnX3hwdl9wbGFjZW1lbnRfcGVybWFuZW50X3YyLzg1N0IxRTY3Rjk2QzREODM5RDdGRTdCODFFMkY1OEVBX3ZpZGVvX2Rhc2hpbml0Lm1wNBUAAsgBEgAVAhhRaWdfeHB2X3BsYWNlbWVudF9wZXJtYW5lbnRfdjIvQzAwN0MzRUQ3RTgxNDc1OEJGNEE2RTlFNERENDM1QUFfYXVkaW9fZGFzaGluaXQubXA0FQICyAESACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJvqRvtTxsbxCFQIoAkMzLBdAI92yLQ5WBBgSZGFzaF9iYXNlbGluZV8xX3YxEQB16Adl6J0BAA&_nc_gid=d97ds6SDuRCp5vARZoZY_Q&_nc_ss=7a20f&_nc_map=urlgen_bucketless&_nc_zt=28&oh=00_AQPanWg12iyvqOMcsknux7z8SFf8utXTtGDNePNxEFJnJg&oe=6ADA0FA1"
],
"durationSeconds": 9.91,
"viewCount": null,
"likeCount": null,
"commentCount": null,
"shareCount": null,
"hashtags": [],
"mentions": [],
"isSponsored": false,
"publishedAt": "2026-10-20T13:14:30.000Z",
"fetchedAt": "2026-10-21T01:59:03.088Z"
}
]
},
"meta": {
"platform": "instagram",
"endpoint": "instagram.highlight",
"creditsCharged": 1,
"cached": false,
"cacheAgeSeconds": null,
"durationMs": 1163,
"requestId": "req_kwgr0c0j46avtx3xm3ac"
}
}Returns
Returns a list of Post in data.items.
Cost and behaviour
| Credits | 1 per live request, 0 on a cache hit |
| Cacheable | yes: cache_max_age accepts a cached copy |
| Batchable | yes: usable as a target in POST /v1/jobs/batch |
| Subscribable | yes: as often as every 3600 seconds, firing a webhook only on a change |
Other Instagram endpoints
- /v1/instagram/audio-reels Reels using a sound
- /v1/instagram/comment-replies Replies under one comment
- /v1/instagram/hashtag-posts Posts under a hashtag
- /v1/instagram/popular-search Top posts for a keyword
- /v1/instagram/post Post or reel details
- /v1/instagram/post-comments Comments on a post or reel
- /v1/instagram/profile Profile details
- /v1/instagram/profile-post-count Post count for a profile