Video transcripts

Captions tell you what a brand wrote. The transcript tells you what it said, which is where the hook, the offer and the call to action live. These two endpoints give you a single post with downloadable media, and the spoken words of any short video.


POST/v1/social/instagram/post

Instagram post

One public post or reel by URL, including direct links to the image and the video file. Links are signed by Instagram's CDN and expire after a few hours, so download or transcribe right away rather than storing them.

Required attributes

  • Name
    url
    Type
    string
    Description

    A public post or reel URL, e.g. https://www.instagram.com/reel/XXXX/.

Response fields

  • Name
    image_url
    Type
    string
    Description

    Direct link to the cover image, or the first image of a carousel. images holds the rest of a carousel.

  • Name
    video_url
    Type
    string
    Description

    Direct link to the MP4 for videos and reels. null for images. Pass it to media/transcript or download it.

  • Name
    views
    Type
    integer
    Description

    Plays for videos. null for images and carousels.

Request

POST
/v1/social/instagram/post
curl -X POST https://suvjexogmfpvxjcktvuk.supabase.co/functions/v1/api/v1/social/instagram/post \
  -H "Authorization: Bearer $PENGU_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.instagram.com/reel/DctPchKOVcw/"}'

Response

{
  "data": {
    "url": "https://www.instagram.com/p/DctPchKOVcw/",
    "type": "video",
    "caption": "If you're going to play, play with fire. @carlitosalcarazz is back and coming in hot.",
    "hashtags": [],
    "image_url": "https://scontent.cdninstagram.com/v/t51.2885-15/....jpg?...(signed, expires)",
    "video_url": "https://scontent.cdninstagram.com/o1/v/t2/f2/m86/....mp4?...(signed, expires)",
    "duration_seconds": 37.2,
    "likes": 341926,
    "likes_hidden": false,
    "comments": 1180,
    "views": 8665756,
    "posted_at": "2026-09-01T16:02:11.000Z",
    "owner": "nike",
    "checked_at": "2026-09-09T12:52:40.118Z",
    "media_note": "image_url and video_url expire after a few hours. Download or transcribe them now."
  },
  "meta": {
    "credits_charged": 0.5,
    "credits_remaining": 97,
    "metered": true,
    "request_id": "0a33c225-7719-421f-aa62-dc22ce4d85fa"
  }
}

POST/v1/media/transcript

Video transcript

Speech to text. Give it an Instagram post or reel URL, or a direct video or audio URL such as the video_url from instagram_profile or instagram_post. For YouTube use YouTube transcript instead: it reads captions and is cheaper.

Required attributes

  • Name
    url
    Type
    string
    Description

    Instagram post or reel URL, or a public https media URL.

Response fields

  • Name
    language
    Type
    string
    Description

    Detected spoken language, ISO 639-1 when known.

  • Name
    word_count
    Type
    integer
    Description

    Words in the transcript.

  • Name
    post
    Type
    object
    Description

    Present for Instagram URLs: caption, likes, comments, views, date and owner of the post that was transcribed.

Returns 404 not_found for private posts, posts without video, links that have expired, and videos with no audible speech. All of those are refunded.

Request

POST
/v1/media/transcript
curl -X POST https://suvjexogmfpvxjcktvuk.supabase.co/functions/v1/api/v1/media/transcript \
  -H "Authorization: Bearer $PENGU_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.instagram.com/reel/DctPchKOVcw/"}'

Response

{
  "data": {
    "source": "instagram",
    "url": "https://www.instagram.com/p/DctPchKOVcw/",
    "language": "unknown",
    "word_count": 60,
    "transcript": "Well, well, well, look who came back, man. No warm-up, no warning? Man, what are you thinking? You tempting fate, walking a thin line with no net. Nah, you wild for that, Carlos. You can either crash and burn or burn it all down. But shit, knowing you, the onl...",
    "post": {
      "caption": "If you’re going to play, play with fire. @carlitosalcarazz is back and coming in hot.",
      "likes": 341928,
      "comments": 5708,
      "views": 8665924,
      "posted_at": "2026-08-31T13:56:44.000Z",
      "owner": "nike"
    }
  },
  "meta": {
    "credits_charged": 1.5,
    "credits_remaining": 95.5,
    "metered": true,
    "request_id": "b06af442-7a0e-4962-8328-d223e69bfb71"
  }
}

Was this page helpful?