Skip to content

Transcribe Audio

POST/v1/audio/transcriptions

Overview

Transcribe audio with a direct provider model from /v1/models.

Routing and provider details

Supported controls and input limits are model-specific. Duration-priced contracts use canonical mono PCM16 WAV and either native duration or validated PCM samples. Token-priced models use native usage. Published tariffs minus 15% apply before account credits; provider invoice APIs are not required. Sarvam saaras-v3-batch and saaras-v4-batch support recordings up to two hours with ?async=true. Poll /v1/audio/transcriptions/{id} using the same API key. Async requests require a healthy worker and workspace audio storage. Native job identity is persisted before polling; ambiguous jobs are not resubmitted. Use /v1/audio/transcriptions/stream for dedicated real-time recognition. Uploaded audio is limited to 500,000,000 bytes, as a file or as decoded base64; each model's own max_bytes in /v1/models is usually lower.

Authorization

Authorizationstring · headerRequired

AudioLab API key sent as Bearer <token>. Authentication guide

Parameters

asyncquery · string

Queue the transcription and return a request id instead of waiting for completion. Returns 503 without storing or queueing the request when no healthy background worker is polling the durable queue.

modequery · string

Alternative async queueing flag.

Request Body

multipart/form-data
filestringRequired
modelstring

Exact provider/model slug, auto, or a managed stt/* alias.

Default: "auto"

languagestring
promptstring
response_formatstring

Values: "json""text""verbose_json""srt""vtt""diarized_json"

Default: "json"

temperaturenumber

Minimum 0 · Maximum 1

timestampsstring

Values: "none""segment""word""both"

Default: "none"

diarizeboolean
redactboolean
translateboolean
keytermsstring[]
Show nested fields

string

retentionstring

Values: "none""transcript""debug""archive"

Default: "transcript"

providerstring

JSON-encoded provider preference object for multipart requests.

metadatastring

JSON-encoded metadata object for multipart requests.

thinkingstring

Reasoning depth to request from the model. Only honored by gemini/gemini-3.1-pro today; every other model rejects it with unsupported_feature. Omit it to use the provider's own default.

Values: "minimal""low""medium""high"

application/json
modelstring

Exact provider/model slug, auto, or a managed stt/* alias.

Default: "auto"

input_audioobjectRequired
Show nested fields
datastringRequired
formatstringRequired
languagestring

Optional language hint (e.g. "es", "ja"). With model "auto", providing a language skips automatic language detection — lower latency, and the provider transcribes against the given language (better accuracy, fewer errors) rather than guessing. It is also passed to the selected provider. Omit it to let "auto" detect the language.

promptstring
response_formatstring

Values: "json""text""verbose_json""srt""vtt""diarized_json"

Default: "json"

temperaturenumber

Minimum 0 · Maximum 1

timestampsstring

Values: "none""segment""word""both"

Default: "none"

diarizeboolean
redactboolean
translateboolean
keytermsstring[]
Show nested fields

string

metadataobject
retentionstring

Values: "none""transcript""debug""archive"

Default: "transcript"

providerobject
Show nested fields
orderstring[]
Show nested fields

string

onlystring[]
Show nested fields

string

ignorestring[]
Show nested fields

string

modelsstring[]

Model ID patterns allowed for managed routes. Supports * wildcards.

Show nested fields

string

sortstring

Values: "price""latency""speed""quality""balanced"

cost_qualityinteger

Balanced-sort weighting from quality (0) to cost (10).

Minimum 0 · Maximum 10

allow_fallbacksboolean

Default: true

require_featuresboolean

Default: false

max_priceobject
Show nested fields
per_minnumber

Minimum 0

data_regionstring | string[]

Route only to endpoints documented as processing in this region: us, eu (which includes EU member states), or a country code such as nl, sg, in or cn. A list matches any of its regions. Endpoints whose region is global or unknown never match; global on its own means no requirement. The request's region narrows the workspace's Data Region and a named router's region policy, and never widens them. Fallbacks keep to it. When no endpoint qualifies, the request is refused with 400 data_region_unavailable, param provider.data_region.

Show nested fields
Option 1: string

string

Option 2: string[]

See the OpenAPI schema for this nested object.

regionstring[]

The older name of data_region, with the same meaning.

Show nested fields

string

optionsobject

Native speech-to-text controls, keyed by provider. The selected adapter validates the named bag strictly and rejects fields or model/transport combinations that its official upstream API does not support. See the provider pages for nested shapes and restrictions.

Show nested fields
alibabaobject

Batch Qwen/Fun-ASR/Omni and realtime Qwen/Fun-ASR controls; availability is model-specific.

assemblyaiobject

AssemblyAI async and streaming controls. Agent context, voice focus, prompt, and mode require Universal-3.5 Pro Streaming. language_code is pre-recorded-only and is not accepted here as a realtime native option.

azureobject

Speech Realtime, speech-fast, and MAI Transcribe controls. Realtime uses the Speech SDK and ConversationTranscriber; MAI remains file-only.

cartesiaobject

Cartesia realtime controls; Ink 2 and Ink Whisper expose different turn-detection fields.

deepgramobject

Deepgram Nova batch/live controls plus Flux-only end-of-turn controls. diarize_model alone enables diarization; AudioLab never combines it with the deprecated diarize flag.

deepinfraobject
elevenlabsobject

Scribe v2 batch and Scribe v2 Realtime controls; each transport accepts only its documented subset. Common keyterms are limited to 1000 entries shorter than 50 characters for batch, or 50 entries of at most 20 characters for realtime.

falobject

Native fields for the five cataloged fal apps. Unknown fal marketplace apps receive only audio_url.

geminiobject
gladiaobject

Gladia pre-recorded and Solaria realtime controls; region, event, callback, and processing fields are realtime-only.

googleobject

Google Cloud Speech-to-Text V2 upload and gRPC-streaming controls. Translation requires Chirp 2; custom prompts and endpointing sensitivity require Chirp 3; voice-activity controls are streaming-only.

mistralobject
openaiobject

OpenAI batch and GPT-Realtime-Whisper controls; logprob include values differ by transport.

reson8object

Reson8 prerecorded, continuous realtime, and turn-boundary controls; diarization and confidence are unavailable on the Turns endpoint.

sarvamobject

Sarvam batch and realtime controls. Diarization is available only on Saaras v3 Batch.

smallestobject
sonioxobject
speechmaticsobject
togetherobject
xaiobject
thinkingstring

Reasoning depth to request from the model. Only honored by gemini/gemini-3.1-pro today; every other model rejects it with unsupported_feature. Omit it to use the provider's own default.

Values: "minimal""low""medium""high"

Responses

200Transcription completed.
application/json
idstringRequired
objectstringRequired
createdintegerRequired

Unix timestamp in seconds.

modelstringRequired
resolved_modelstringRequired
providerstringRequired
textstringRequired
languagestring | null
durationnumber | null
segmentsobject[]
Show nested fields
idintegerRequired
startnumberRequired
endnumberRequired
textstringRequired
speakerstring | null
confidencenumber | null

Minimum 0 · Maximum 1

wordsobject[]
Show nested fields
wordstringRequired
startnumberRequired
endnumberRequired
speakerstring | null
confidencenumber | null

Minimum 0 · Maximum 1

speakersobject[]
Show nested fields
idstringRequired
labelstring | null
entitiesobject[]
Show nested fields
textstringRequired
typestringRequired
startnumber | null
endnumber | null
usageobjectRequired
Show nested fields
secondsnumberRequired
billable_secondsintegerRequired
input_charsinteger

Minimum 0

costnumberRequired
currencystringRequired

Default: "USD"

routeobjectRequired
Show nested fields
modestringRequired
reasonstringRequired
candidatesinteger
filteredobject[]
Show nested fields
endpointstringRequired
reasonstringRequired
attemptsobject[]Required
Show nested fields
providerstringRequired
modelstringRequired
endpointstring
statusstringRequired

Values: "success""failed""skipped"

latency_msinteger | null
error_codestring | null
status_codeinteger | null

Upstream HTTP or WebSocket status code for this attempt, when known.

lidobject
Show nested fields
statusstringRequired

Values: "detected""abstained""failed"

sourcestringRequired

Diagnostic tag derived from the configured ONNX model filename.

languagestring | nullRequired
confidencenumber | nullRequired
marginnumber | nullRequired
latency_msintegerRequired
speech_msinteger | nullRequired
cachedbooleanRequired
reasonstring | nullRequired
warningsstring[]Required
Show nested fields

string

text/plain

string

text/vtt

string

application/x-subrip

string

202Transcription queued.
application/json
idstringRequired
statusstringRequired
400Request validation failed.
application/json
errorobjectRequired
Show nested fields
codestringRequired
messagestringRequired
paramstring | null
request_idstring | null
metadataobject

Typed detail for some refusals. budget_exceeded (402): limit (key_budget or workspace_budget) and budget with scope, period, limit, usage and resets_at. key_limit_exceeded (402): limit key_spend_limit. access_denied (403): policy (workspace or key), rule (models, providers or products), product, provider and model.

401Authentication is missing or invalid.
application/json
errorobjectRequired
Show nested fields
codestringRequired
messagestringRequired
paramstring | null
request_idstring | null
metadataobject

Typed detail for some refusals. budget_exceeded (402): limit (key_budget or workspace_budget) and budget with scope, period, limit, usage and resets_at. key_limit_exceeded (402): limit key_spend_limit. access_denied (403): policy (workspace or key), rule (models, providers or products), product, provider and model.

402Credits or billing setup is required.
application/json
errorobjectRequired
Show nested fields
codestringRequired
messagestringRequired
paramstring | null
request_idstring | null
metadataobject

Typed detail for some refusals. budget_exceeded (402): limit (key_budget or workspace_budget) and budget with scope, period, limit, usage and resets_at. key_limit_exceeded (402): limit key_spend_limit. access_denied (403): policy (workspace or key), rule (models, providers or products), product, provider and model.

403Authenticated principal lacks permission.
application/json
errorobjectRequired
Show nested fields
codestringRequired
messagestringRequired
paramstring | null
request_idstring | null
metadataobject

Typed detail for some refusals. budget_exceeded (402): limit (key_budget or workspace_budget) and budget with scope, period, limit, usage and resets_at. key_limit_exceeded (402): limit key_spend_limit. access_denied (403): policy (workspace or key), rule (models, providers or products), product, provider and model.

409Request conflicts with current resource state.
application/json
errorobjectRequired
Show nested fields
codestringRequired
messagestringRequired
paramstring | null
request_idstring | null
metadataobject

Typed detail for some refusals. budget_exceeded (402): limit (key_budget or workspace_budget) and budget with scope, period, limit, usage and resets_at. key_limit_exceeded (402): limit key_spend_limit. access_denied (403): policy (workspace or key), rule (models, providers or products), product, provider and model.

413Uploaded audio exceeds 500,000,000 bytes, or the request body exceeds this endpoint's limit. The error code is payload_too_large; param is file or input_audio.data when the audio itself is too large.
application/json
errorobjectRequired
Show nested fields
codestringRequired
messagestringRequired
paramstring | null
request_idstring | null
metadataobject

Typed detail for some refusals. budget_exceeded (402): limit (key_budget or workspace_budget) and budget with scope, period, limit, usage and resets_at. key_limit_exceeded (402): limit key_spend_limit. access_denied (403): policy (workspace or key), rule (models, providers or products), product, provider and model.

415Audio format is unsupported.
application/json
errorobjectRequired
Show nested fields
codestringRequired
messagestringRequired
paramstring | null
request_idstring | null
metadataobject

Typed detail for some refusals. budget_exceeded (402): limit (key_budget or workspace_budget) and budget with scope, period, limit, usage and resets_at. key_limit_exceeded (402): limit key_spend_limit. access_denied (403): policy (workspace or key), rule (models, providers or products), product, provider and model.

422Audio could not be processed.
application/json
errorobjectRequired
Show nested fields
codestringRequired
messagestringRequired
paramstring | null
request_idstring | null
metadataobject

Typed detail for some refusals. budget_exceeded (402): limit (key_budget or workspace_budget) and budget with scope, period, limit, usage and resets_at. key_limit_exceeded (402): limit key_spend_limit. access_denied (403): policy (workspace or key), rule (models, providers or products), product, provider and model.

429Rate limit exceeded.
application/json
errorobjectRequired
Show nested fields
codestringRequired
messagestringRequired
paramstring | null
request_idstring | null
metadataobject

Typed detail for some refusals. budget_exceeded (402): limit (key_budget or workspace_budget) and budget with scope, period, limit, usage and resets_at. key_limit_exceeded (402): limit key_spend_limit. access_denied (403): policy (workspace or key), rule (models, providers or products), product, provider and model.

500Internal server error.
application/json
errorobjectRequired
Show nested fields
codestringRequired
messagestringRequired
paramstring | null
request_idstring | null
metadataobject

Typed detail for some refusals. budget_exceeded (402): limit (key_budget or workspace_budget) and budget with scope, period, limit, usage and resets_at. key_limit_exceeded (402): limit key_spend_limit. access_denied (403): policy (workspace or key), rule (models, providers or products), product, provider and model.

501Endpoint shape is implemented, but required provider execution is not available yet.
application/json
errorobjectRequired
Show nested fields
codestringRequired
messagestringRequired
paramstring | null
request_idstring | null
metadataobject

Typed detail for some refusals. budget_exceeded (402): limit (key_budget or workspace_budget) and budget with scope, period, limit, usage and resets_at. key_limit_exceeded (402): limit key_spend_limit. access_denied (403): policy (workspace or key), rule (models, providers or products), product, provider and model.

502Upstream provider failed after allowed attempts.
application/json
errorobjectRequired
Show nested fields
codestringRequired
messagestringRequired
paramstring | null
request_idstring | null
metadataobject

Typed detail for some refusals. budget_exceeded (402): limit (key_budget or workspace_budget) and budget with scope, period, limit, usage and resets_at. key_limit_exceeded (402): limit key_spend_limit. access_denied (403): policy (workspace or key), rule (models, providers or products), product, provider and model.

503No eligible provider endpoint is currently available, or async processing has no healthy worker polling the durable queue.
application/json
errorobjectRequired
Show nested fields
codestringRequired
messagestringRequired
paramstring | null
request_idstring | null
metadataobject

Typed detail for some refusals. budget_exceeded (402): limit (key_budget or workspace_budget) and budget with scope, period, limit, usage and resets_at. key_limit_exceeded (402): limit key_spend_limit. access_denied (403): policy (workspace or key), rule (models, providers or products), product, provider and model.