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.
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.
Costs 0.5 credits per call.
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.
imagesholds the rest of a carousel.
- Name
video_url- Type
- string
- Description
Direct link to the MP4 for videos and reels.
nullfor images. Pass it tomedia/transcriptor download it.
- Name
views- Type
- integer
- Description
Plays for videos.
nullfor images and carousels.
Request
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"
}
}
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.
Costs 1.5 credits for an Instagram URL (the post is fetched first) and 1 credit for a direct media URL. Videos up to 25 MB, which covers reels and most shorts.
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
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"
}
}
