Skip to main content
POST https://api.transcriptmagic.com/api/instagram/transcript
Reels (/reel/…), video posts (/p/…), and IGTV (/tv/…) URLs are all supported. Stories are not (they expire and don’t have stable URLs).

Request

curl -X POST https://api.transcriptmagic.com/api/instagram/transcript \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://www.instagram.com/reel/ABC123/"}'

Response

{
  "success": true,
  "transcripts": [
    {
      "id": "3870781634534573841",
      "shortcode": "DW3x2NpigcR",
      "text": "Five things I wish I knew before I started this challenge..."
    }
  ],
  "credits": 995
}
Instagram returns its transcript as a 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

FormatExample
Reelhttps://www.instagram.com/reel/<shortcode>/
Video posthttps://www.instagram.com/p/<shortcode>/
IGTVhttps://www.instagram.com/tv/<shortcode>/
Stories are not supported because they expire and don’t have stable, crawlable URLs.

FAQ

No. Private accounts and stories behind a follow-gate aren’t supported. Only publicly viewable Reels and posts can be transcribed.
Stories aren’t supported because they expire and don’t have stable, crawlable URLs. Reels and video posts are the supported formats.
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.
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.