stefan_sk_... key or one scoped to include tools, or any stefan_oat_... OAuth token (OAuth tokens are not scoped).
Identify the Meta video
You can identify a video in either form:contentSha256: the 64-character lowercase SHA-256 of the stored video bytes.adAccountIdandproviderMediaId: the Meta ad account and Meta video id.
act_... form or its bare id.
Request or reuse a transcript
Send one video reference toPOST /api/developers/v1/media/transcripts/request:
requesterSurface records which workflow requested the transcript. Use one supported value:
self_learningcreative_strategistlaunch_video_copychat_transcriptcreate_cutscro_funnel_review
Handle the three outcomes
The endpoint returns200 with one of three outcomes.
Ready
ready returns the stored transcript immediately:
Queued
queued means one transcription job is producing the stored result:
Unavailable
unavailable returns the stored reason when the video cannot produce a transcript:
retryAfter is present, wait until that time before asking the service to retry a stored provider failure.
Read without starting transcription
Use the content hash when you only want the stored result:GET never starts transcription and does not consume request limits or a billing budget.
It returns ready or the stored unavailable verdict. It returns 404 transcript_not_found until a transcript row exists.
Handle transcript errors
400 invalid_transcript_request: correct the hash, reference shape, or requester surface.403 api_key_scope_forbidden: use a credential with thetoolsscope.404 video_not_found: no Meta video visible to this account matches the reference.404 transcript_not_found: the video is visible, but no stored transcript exists. Use the request endpoint.429: wait for the returned reset time before making another request.
video_not_found for both missing and inaccessible videos, so the endpoint does not reveal other accounts’ media.
