Endpoints
9 endpoints return transcripts on Facebook Ad Library, Facebook, Instagram, Kick, Reddit, Rumble, TikTok, Twitch and YouTube.
- GETFacebook Ad Transcript API
/v1/facebook/ad_transcript - GETFacebook Video Transcript API
/v1/facebook/transcript - GETInstagram Reels Transcript API
/v1/instagram/transcript - GETKick Clip Transcript API
/v1/kick/transcript - GETReddit Video Transcript API
/v1/reddit/transcript - GETRumble Transcript API
/v1/rumble/transcript - GETTikTok Transcript API
/v1/tiktok/transcript - GETTwitch Clip Transcript API
/v1/twitch/transcript - GETYouTube Transcript API
/v1/youtube/transcript
Schema
Every endpoint above returns this object as data. The standard meta comes with every response.
platformstringPlatform the media is hosted on.
idstringPlatform-native ID of the post (equals post.id); of an ad library entry, its library ID (equals ad.id).
urlstring uriCanonical URL of the post (of an ad library entry, its library page).
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 2 child fields
redditobjectnullableA Reddit transcript's own fields.
ShowHide 2 child fields
video_idstringnullableThe video's ID on Reddit's video host (v.redd.it/<video_id>); null when unknown.
caption_urlstring urinullableThe WebVTT file of Reddit's caption track used (public, unsigned); null for speech-to-text.
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. On GET /v1/requests/{id}/response: the response was not kept (details.reason says why). | Check the link or ID. Do not retry. |
private_or_unavailable | 403 | No | The item exists but is not public: it is private, age- or region-restricted, or needs a login to view. It shares 403 with forbidden (which is about the key), so branch on the code. | Only public items can be fetched. Do not retry. |
no_transcript | 404 | No | The video or audio exists but has no transcript: no caption track and no speech to transcribe. | Do not retry. If the platform offers other languages, try one with lang. |