Endpoints
5 endpoints return transcripts on Facebook, Instagram, Rumble, TikTok and YouTube.
Schema
Every endpoint above returns this object as data. The standard meta comes with every response.
| Field | Type | Description |
|---|---|---|
platform | string | Platform the media is hosted on. |
id | string | Platform-native ID of the post (equals post.id). |
url | string (uri) | Canonical URL of the post. |
language | string or null | BCP-47 language of the returned transcript; null when unknown. |
source | string | captions = platform caption track; asr = speech-to-text on the audio. New values may be added. One of captions, asr |
is_auto_generated | boolean | True when the track was machine-generated (platform auto-captions or ASR). |
available_languages | string[] | BCP-47 caption languages the platform offers for this post; [] if none or not listed. |
duration_ms | integer or null | Media duration in milliseconds; null when unknown. |
segments | object[] | Timed cues in order; never empty on success. |
segments[].start_ms | integer | Start time in milliseconds from the beginning of the media. |
segments[].end_ms | integer | End time in milliseconds from the beginning of the media. |
segments[].text | string | Cue text, whitespace-normalized. |
text | string | Full transcript: segment texts joined with single spaces. |
platform_specific | object | Fields only this platform has, under its ID (platform_specific.<platform>); each null when unknown. |
platform_specific.rumble | object or null | A Rumble transcript's own fields. |
platform_specific.rumble.track_label | string or null | Rumble's label of the caption track used ("English (auto)"); null for speech-to-text. |
platform_specific.rumble.caption_url | string (uri) or null | The WebVTT file of the caption track used; null for speech-to-text. |
platform_specific.rumble.caption_tracks | object[] | Every caption track Rumble offers for the video (WebVTT); [] when none. |
platform_specific.rumble.caption_tracks[].language | string or null | Language code (en, es, …). |
platform_specific.rumble.caption_tracks[].label | string or null | Rumble's label ("English (auto)"). |
platform_specific.rumble.caption_tracks[].url | string (uri) or null | WebVTT file URL. |
platform_specific.rumble.caption_tracks[].is_auto_generated | boolean or null | Generated by Rumble's speech recognition. |
platformstringPlatform the media is hosted on.
idstringPlatform-native ID of the post (equals post.id).
urlstring uriCanonical URL of the post.
languagestringnullableBCP-47 language of the returned transcript; null when unknown.
sourcestringcaptions = platform caption track; asr = speech-to-text on the audio. New values may be added.
One ofcaptionsasr
is_auto_generatedbooleanTrue when the track was machine-generated (platform auto-captions or ASR).
available_languagesstring[]BCP-47 caption languages the platform offers for this post; [] if none or not listed.
duration_msintegernullableMedia duration in milliseconds; null when unknown.
segmentsobject[]Timed cues in order; never empty on success.
ShowHide 3 child fields
start_msintegerStart time in milliseconds from the beginning of the media.
end_msintegerEnd time in milliseconds from the beginning of the media.
textstringCue text, whitespace-normalized.
textstringFull transcript: segment texts joined with single spaces.
platform_specificobjectFields only this platform has, under its ID (platform_specific.<platform>); each null when unknown.
ShowHide 1 child field
rumbleobjectnullableA Rumble transcript's own fields.
ShowHide 3 child fields
track_labelstringnullableRumble's label of the caption track used ("English (auto)"); null for speech-to-text.
caption_urlstring urinullableThe WebVTT file of the caption track used; null for speech-to-text.
caption_tracksobject[]Every caption track Rumble offers for the video (WebVTT); [] when none.
ShowHide 4 child fields
languagestringnullableLanguage code (en, es, …).
labelstringnullableRumble's label ("English (auto)").
urlstring urinullableWebVTT file URL.
is_auto_generatedbooleannullableGenerated by Rumble's speech recognition.
Item errors
Besides the request-level errors every endpoint can return, transcript endpoints return:
| Code | HTTP | Retry | Meaning | What to do |
|---|---|---|---|---|
not_found | 404 | No | The item does not exist or was deleted. | Check the URL or ID; do not retry. |
private_or_unavailable | 403 | No | The item exists but is private, age- or region-gated, or requires a login to view. It shares 403 with forbidden (which is about the key): branch on the code. | Only public items can be fetched; do not retry. |
no_transcript | 404 | No | The media exists but has no transcript: no caption track and no speech to transcribe. | Do not retry; try another language with lang if the platform offers one. |
not_found, private_or_unavailable, no_transcript (see error codes).