Skip to content

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.

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:

JSON
{
  "id": "ID",
  "transcript": "TEXT"
}

Fetching a transcript counts toward your rate limit, and doesn't use your monthly limit.

Get a new link in either of these ways:

  • Poll the job again, if the result came from a job. Each poll of a succeeded job signs a new link.
  • Send the same POST /v1/extract again with no Idempotency-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

StatusCodeMeaning
401invalid_api_keyThe API key is missing or invalid.
401invalid_signed_urlThe token is expired, altered or for another transcript, or your key is from another account. These all look the same on purpose.
404transcript_not_foundThe token is valid, but no transcript text is stored for this ID.
429rate_limitedSee Rate limits.