Batch API

Batch API

Submit complete long-form recordings, then poll a transcription job to a terminal state.

Choose Batch when the entire recording already exists and the workload is long-form: meetings, podcasts, interviews, calls, or archives. Upload the file once, persist the returned job ID, and retrieve the result asynchronously.

Direct HTTP V2 and SDK 0.18.0

For a new direct HTTP integration, prefer GET /v1/transcribe/{job_id} and its V2 response. The JavaScript and Python SDKs at 0.18.0 currently poll the legacy V1 route, so keep that response shape when you use the released SDK helpers.

Job lifecycle

  1. Submit one complete audio file and record the returned jobId before doing other work.
  2. Before polling, set save_result=true when a lost terminal response must be retrievable again; then use a bounded interval, an overall deadline, and jitter where workers share capacity.
  3. Continue while the status is queued or processing.
  4. Stop on every terminal status: consume done, surface failed, and treat cleared as unavailable output.

Endpoints

Handle every terminal state

StatusMeaningClient action
queuedWaiting for processingKeep polling within your deadline
processingTranscription is runningKeep polling within your deadline
doneOutput is readyValidate and store the result you need
failedProcessing failedStop polling and surface the failure
clearedStored output was clearedStop polling; do not wait for a later result

Production notes

  • A submit can return 429 with remaining audio capacity in seconds. Back off and bound retries instead of immediately resubmitting.
  • A timeout after upload is ambiguous: the service may have accepted the file even when the client did not receive the response. Track attempts and reconcile before retrying.
  • Set both a per-request timeout and an overall polling deadline. Neither the API nor a helper loop should be allowed to wait forever.
  • The default save_result=false can clear stored fields after constructing a done or failed response. Use true for repeatable delivery, but do not infer a retention duration.
  • Use Fast for one bounded conversational utterance that is already complete. Keep long recordings on Batch.

Next steps

On this page