Instagram Transcript API
One POST turns an Instagram Reel or video post URL into a transcript in the same JSON shape every platform returns. Instagram exposes no caption track a logged-out client can read, so on Instagram the audio path is the normal one: the Reel's audio is transcribed on the request and returned inline. The response also names the post where Instagram provides it.
Instagram exposes no caption track a logged-out client can read, so every Reel is transcribed from its audio and charged only on delivery; a caption transcript would be 1 credit. Failed requests are free.
On this platform
- Accepts instagram.com/reel/<code>/ and /p/<code>/ URLs, legacy /tv/ URLs and instagr.am short links; only public posts are reachable.
- Every Instagram transcript is transcribed from audio, so source is always audio and the cost follows the audio rate, charged only on delivery.
- Reels are short-form, so the request is held open and the transcript almost always comes back inline rather than as a 202 job.
/api/v2/transcripts/videoidempotentFetch a transcript (YouTube, TikTok, Instagram, or file URL)
Returns a transcript - text plus timestamped segments. Accepts YouTube, TikTok, and Instagram URLs (or a bare TikTok video id), direct media file URLs. ..) identifying who is talking. Speaker ids are hints from voice separation, not named identification. When no captions exist the audio is transcribed automatically: when we can determine the media length, media under 20 minutes simply waits (the request is held open for up to 45 seconds) and returns the finished transcript, so no polling is needed; when the length cannot be determined, only short-form platforms (TikTok and Instagram) are held inline. Longer media, or a transcription still running when the 45-second hold expires, returns 202 with a job to poll instead - the work continues either way, so the same request is safe to retry and will hit the cache once it finishes. Supply callback_url to have the finished transcript POSTed to you instead of polling. Every failure carries an ai_fallback block saying whether captions were definitively unavailable and whether retrying would work.
Body parameters
videostringrequiredmode"captions" | "audio" | "auto"optionaltimestampsbooleanoptionalcallback_urlstring (https URL)optionalai_fallbackbooleanoptionalRequest example
Responses
{
"ok": true,
"request_id": "req_…",
"data": {
"kind": "transcript",
"video_id": "Dd1gQBsCWE8",
"url": "https://www.instagram.com/reel/Dd1gQBsCWE8/",
"platform": "instagram",
"title": "What happens when we detect an asteroid that could pose a threat to Earth?\n\nIn early 2025, NASA joined scientists around the world in tracking asteroid 2024 YR4, which had a small chance of impacting ",
"channel": null,
"duration": 38.6,
"language": "english",
"thumbnail_url": null,
"source": "audio",
"segments": [
{
"start": 0,
"duration": 3.44,
"text": "This asteroid 2024 YR4 might get interesting."
},
{
"start": 3.44,
"duration": 2.56,
"text": "There was a chance that it could impact Earth."
},
{
"start": 6,
"duration": 4.1,
"text": "The Atlas Survey, operated by the University of Hawaii,"
}
]
},
"usage": {
"credits_spent": 1,
"balance": 657,
"bytes": 2210
}
}Every Instagram endpoint
Frequently asked questions
- Why does every Instagram response say source audio?
- Instagram publishes no caption track that a logged-out client can read, so there is nothing to read first. The Reel's audio is transcribed on the request instead, which is why the response's source is always audio and the language is the detected spoken language.
- What does an Instagram transcript cost?
- The audio rate: 1 credit per started 5 minutes of audio, minimum 1, charged only when the transcript is delivered. Most Reels are well under a minute, so one Reel is one credit. A failed request costs nothing.
- Which Instagram URLs are accepted?
- Reel URLs (instagram.com/reel/<code>/), video post URLs (instagram.com/p/<code>/), legacy IGTV /tv/ URLs and instagr.am short links. Stories, private accounts and login-walled posts are not reachable and fail with a clear error.
- Do I have to poll a job for an Instagram Reel?
- Almost never. Reels are short-form, so the request is held open and the finished transcript is returned inline. A transcription that outlasts the hold answers 202 with a job_id and poll_url, and callback_url delivers it to you instead.