Transcripts
Each result can include a signed link to its transcript. Links are for the requester and expire.
Examples use VIDEO_ID and clp_live_... as placeholders.
The link
A result with ok: true has a transcript_url, on a 200 and on a succeeded job. It's a path, /v1/transcript/:id with a token query parameter, so add the API's origin in front of it. The id is the result's artifact.cache_digest.
- The token expires 15 minutes after the response that gave it to you.
- The token only works for the account that requested it, and the request also needs an API key from that same account. A link on its own fetches nothing.
Fetch a transcript
Call GET /v1/transcript/:id with your key. In the example, replace the id and token placeholders, or use the transcript_url as it came:
curl -X GET "https://clypso-eta.vercel.app/v1/transcript/{id}?token={token}" \
-H "Authorization: Bearer clp_live_..."The response is the transcript as plain text in transcript:
{
"id": "ID",
"transcript": "TEXT"
}Fetching a transcript counts toward your rate limit, and doesn't use your monthly limit.
When a link has expired
Get a new link in either of these ways:
- Poll the job again, if the result came from a job. Each poll of a
succeededjob signs a new link. - Send the same
POST /v1/extractagain with noIdempotency-Key, or a new one. While the result is cached, this returns right away and doesn't count against your monthly limit.
Don't reuse the old Idempotency-Key for this. A replay returns the stored response, including the old link.
Errors
| Status | Code | Meaning |
|---|---|---|
401 | invalid_api_key | The API key is missing or invalid. |
401 | invalid_signed_url | The token is expired, altered or for another transcript, or your key is from another account. These all look the same on purpose. |
404 | transcript_not_found | The token is valid, but no transcript text is stored for this ID. |
429 | rate_limited | See Rate limits. |