/reel/…), video posts (/p/…), and IGTV (/tv/…) URLs are all supported. Stories are not (they expire and don’t have stable URLs).
Request
Response
transcripts array (note the plural). Each entry has id, shortcode, and text. The text field holds the full transcript as a single string — there is no per-line timing on this endpoint, no transcript (singular) field, and no title. Reels typically return a single entry; the array shape is preserved for potential future multi-segment responses.
Supported URL formats
| Format | Example |
|---|---|
| Reel | https://www.instagram.com/reel/<shortcode>/ |
| Video post | https://www.instagram.com/p/<shortcode>/ |
| IGTV | https://www.instagram.com/tv/<shortcode>/ |
FAQ
Do private Instagram accounts work?
Do private Instagram accounts work?
No. Private accounts and stories behind a follow-gate aren’t supported. Only publicly viewable Reels and posts can be transcribed.
What about Instagram Stories?
What about Instagram Stories?
Stories aren’t supported because they expire and don’t have stable, crawlable URLs. Reels and video posts are the supported formats.
Does this work on carousels with multiple videos?
Does this work on carousels with multiple videos?
POST the URL of the specific video item in the carousel (Instagram exposes per-item URLs). The API transcribes the single video at that URL.
Why no timestamps?
Why no timestamps?
Instagram’s upstream caption source emits plain text lines without timing metadata. If you need per-second timing, use the YouTube endpoint instead — it’s the only platform on this API that returns
startMs/endMs per segment.