transcrevo docs
Api

Get transcript

Read this until `status` becomes `done` (text in `text`, word timings in `words`, cost in `cost`), `failed` (reason in `error`) or `canceled`. **Prefer `?wait=30` over a polling loop**: the response is held until the transcript finishes, and comes back immediately when it does. While it is still `processing`, the response carries `Retry-After` with the interval worth waiting before asking again. For many transcripts at once, `webhookUrl` on creation is still the cheaper path: one delivery per job instead of one connection per job.

GET
/v1/transcripts/{id}

Read this until status becomes done (text in text, word timings in words, cost in cost), failed (reason in error) or canceled.

Prefer ?wait=30 over a polling loop: the response is held until the transcript finishes, and comes back immediately when it does. While it is still processing, the response carries Retry-After with the interval worth waiting before asking again.

For many transcripts at once, webhookUrl on creation is still the cheaper path: one delivery per job instead of one connection per job.

Authorization

bearerAuth
AuthorizationBearer <token>

API key (tk_...)

In: header

Path Parameters

id*string

Query Parameters

wait?integer

Hold the response for up to this many seconds (max 60) while the transcript is still processing. It returns THE MOMENT the transcript finishes, so one request replaces a polling loop. It is not an error for the wait to expire: you get the transcript still in processing and call again

Range1 <= value <= 60

Response Body

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/transcripts/string"
{  "data": {    "id": "string",    "status": "processing",    "text": "string",    "words": [      {        "start": 0,        "end": 0,        "text": "string",        "speaker": "string"      }    ],    "utterances": [      {        "start": 0,        "end": 0,        "text": "string",        "speaker": "string",        "overlap": true      }    ],    "diarizationSegments": [      {        "start": 0,        "end": 0,        "speakers": [          "string"        ]      }    ],    "error": {      "code": "audio_too_long",      "message": "string"    },    "language": "string",    "durationSeconds": 0,    "speakerCount": 0,    "cost": 0,    "currency": "USD",    "model": "string",    "url": "string",    "retentionDays": 0,    "externalId": "string",    "metadata": {},    "createdAt": "string"  }}