Transcribe Video
transcribe_videoTranscribes spoken audio from public Instagram Reels, TikTok videos, and YouTube Shorts, returning timestamped text and optional visual context shown on screen.
Instructions
Retrieves a public Instagram Reel, TikTok video, or YouTube video/Short and returns an accurate, timestamped transcript of its spoken audio — and, when visual analysis is enabled, meaningful visual information the video shows.
WHAT IT DOES
Downloads the video/audio behind a public URL and transcribes the spoken speech using an automatic speech recognition model.
Returns structured, timestamped segments plus a combined plain-text transcript, along with the detected spoken language and total duration.
When visual analysis is enabled server-side, also returns "visual" — a short list of meaningful visual observations (on-screen text/slides, charts, UI, important scene context) with their own timestamps. This is never a caption for every frame; it only includes what a reader would actually need to understand the video without watching it. Absent or empty "visual" does not mean nothing was shown — it means nothing met that bar (or visual analysis wasn't enabled).
WHAT IT DOES NOT DO
It does NOT work on private, login-gated, deleted, or otherwise inaccessible content, and it never attempts to bypass login, CAPTCHAs, or other access controls — such content returns a typed error instead.
It does NOT currently support any platform other than Instagram Reels, TikTok videos, and YouTube videos/Shorts (no X/Twitter, etc.), and no Instagram content types other than Reels (no photo posts, carousels, Stories, or IGTV).
Visual analysis, when it runs, does not describe trivial visual activity (a person moving, blinking, camera motion) — only information that materially helps understand the content.
SUPPORTED INPUT
Public Instagram Reel, TikTok video, or YouTube video/Short URLs, e.g.: https://www.instagram.com/reel/ABC123xyz/ https://www.tiktok.com/@user/video/123... https://www.youtube.com/shorts/ABC123xyz
Any other URL shape or domain returns an UNSUPPORTED_SOURCE error.
LIMITATIONS
Videos are subject to a configured maximum duration and file size; longer/larger videos are rejected rather than partially processed.
Background music, overlapping speakers, heavy accents, or very noisy audio can reduce accuracy; when the model itself is uncertain, "low_confidence" is set to true instead of guessing at unclear speech.
This is a best-effort automatic transcript, not a human-verified one. Visual observations, when present, are similarly best-effort — on-screen text is preserved exactly as read, never "corrected", and a low "confidence" means treat it as uncertain rather than fact.
Use this tool when you need the words spoken in a public video from one of the supported platforms, and optionally what it visually showed.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | A public video URL — Instagram Reel (e.g. "https://www.instagram.com/reel/ABC123xyz/"), TikTok (e.g. "https://www.tiktok.com/@user/video/123..."), or YouTube/Shorts (e.g. "https://www.youtube.com/shorts/ABC123xyz" or "https://youtu.be/ABC123xyz"). Must point to content that does not require login to view. | |
| includeVideoMap | No | Whether to also resolve "this"/"that"/pointing references to a specific visual entity (the Video Map). Only has an effect when the server has the Video Map enabled AND includeVisualObservation is not false — it enriches the same sampled frames, not a standalone stage. Defaults to true (matches existing behavior) — pass false to skip it. | |
| includeVisualObservation | No | Whether to also analyze visual content (on-screen text, slides, charts, meaningful scene context) alongside the spoken transcript. Only has an effect when the server has visual analysis enabled at all; otherwise silently ignored. Defaults to true (matches existing behavior) — pass false to skip it for this call even when the server supports it. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| map | No | Present only when the Video Map (VIDEO_MAP_ENABLED) resolved at least one "this"/"that"/pointing reference to a specific visual target. Use get_video_map for the full picture including unresolved/uncertain ones. | |
| url | Yes | The canonical URL that was transcribed. | |
| text | Yes | The full transcript as plain text, in order. | |
| source | Yes | The platform the video was retrieved from. | |
| visual | No | Meaningful visual information detected in the video — on-screen text, slides, charts, UI, or scene context necessary to understand what is being discussed. Present only when visual analysis is enabled and found something worth surfacing; absent doesn't mean nothing was shown, only that nothing met the bar. This is never a caption for every frame — expect a short list of high-value observations, not a play-by-play. | |
| language | No | BCP-47-ish language code detected in the spoken audio (e.g. "en"), if it could be determined. | |
| segments | Yes | Timestamped transcript segments, in chronological order. | |
| video_id | No | Stable id for this video — pass this to search_video, find_moment, and get_video_timeline instead of re-submitting the URL. | |
| low_confidence | Yes | True when parts of the audio were unclear, mostly music/silence, or otherwise low-confidence. When true, treat the transcript as best-effort rather than verbatim. | |
| duration_seconds | Yes | Total duration of the video/audio in seconds. |