Transcribe Audio
/v1/audio/transcriptionsOverview
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.
Parameters
asyncquery · stringQueue 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 · stringAlternative async queueing flag.
Request Body
filestringRequiredmodelstringExact provider/model slug, auto, or a managed stt/* alias.
Default: "auto"
languagestringpromptstringresponse_formatstringValues: "json""text""verbose_json""srt""vtt""diarized_json"
Default: "json"
temperaturenumberMinimum 0 · Maximum 1
timestampsstringValues: "none""segment""word""both"
Default: "none"
diarizebooleanredactbooleantranslatebooleankeytermsstring[]Show nested fields
string
retentionstringValues: "none""transcript""debug""archive"
Default: "transcript"
providerstringJSON-encoded provider preference object for multipart requests.
metadatastringJSON-encoded metadata object for multipart requests.
thinkingstringReasoning 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"
modelstringExact provider/model slug, auto, or a managed stt/* alias.
Default: "auto"
input_audioobjectRequiredShow nested fields
datastringRequiredformatstringRequiredlanguagestringOptional 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.
promptstringresponse_formatstringValues: "json""text""verbose_json""srt""vtt""diarized_json"
Default: "json"
temperaturenumberMinimum 0 · Maximum 1
timestampsstringValues: "none""segment""word""both"
Default: "none"
diarizebooleanredactbooleantranslatebooleankeytermsstring[]Show nested fields
string
metadataobjectretentionstringValues: "none""transcript""debug""archive"
Default: "transcript"
providerobjectShow 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
sortstringValues: "price""latency""speed""quality""balanced"
cost_qualityintegerBalanced-sort weighting from quality (0) to cost (10).
Minimum 0 · Maximum 10
allow_fallbacksbooleanDefault: true
require_featuresbooleanDefault: false
max_priceobjectShow nested fields
per_minnumberMinimum 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
optionsobjectNative 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
alibabaobjectBatch Qwen/Fun-ASR/Omni and realtime Qwen/Fun-ASR controls; availability is model-specific.
assemblyaiobjectAssemblyAI 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.
azureobjectSpeech Realtime, speech-fast, and MAI Transcribe controls. Realtime uses the Speech SDK and ConversationTranscriber; MAI remains file-only.
cartesiaobjectCartesia realtime controls; Ink 2 and Ink Whisper expose different turn-detection fields.
deepgramobjectDeepgram 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.
deepinfraobjectelevenlabsobjectScribe 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.
falobjectNative fields for the five cataloged fal apps. Unknown fal marketplace apps receive only audio_url.
geminiobjectgladiaobjectGladia pre-recorded and Solaria realtime controls; region, event, callback, and processing fields are realtime-only.
googleobjectGoogle 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.
mistralobjectopenaiobjectOpenAI batch and GPT-Realtime-Whisper controls; logprob include values differ by transport.
reson8objectReson8 prerecorded, continuous realtime, and turn-boundary controls; diarization and confidence are unavailable on the Turns endpoint.
sarvamobjectSarvam batch and realtime controls. Diarization is available only on Saaras v3 Batch.
smallestobjectsonioxobjectspeechmaticsobjecttogetherobjectxaiobjectthinkingstringReasoning 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.
idstringRequiredobjectstringRequiredcreatedintegerRequiredUnix timestamp in seconds.
modelstringRequiredresolved_modelstringRequiredproviderstringRequiredtextstringRequiredlanguagestring | nulldurationnumber | nullsegmentsobject[]Show nested fields
idintegerRequiredstartnumberRequiredendnumberRequiredtextstringRequiredspeakerstring | nullconfidencenumber | nullMinimum 0 · Maximum 1
wordsobject[]Show nested fields
wordstringRequiredstartnumberRequiredendnumberRequiredspeakerstring | nullconfidencenumber | nullMinimum 0 · Maximum 1
speakersobject[]Show nested fields
idstringRequiredlabelstring | nullentitiesobject[]Show nested fields
textstringRequiredtypestringRequiredstartnumber | nullendnumber | nullusageobjectRequiredShow nested fields
secondsnumberRequiredbillable_secondsintegerRequiredinput_charsintegerMinimum 0
costnumberRequiredcurrencystringRequiredDefault: "USD"
routeobjectRequiredShow nested fields
modestringRequiredreasonstringRequiredcandidatesintegerfilteredobject[]Show nested fields
endpointstringRequiredreasonstringRequiredattemptsobject[]RequiredShow nested fields
providerstringRequiredmodelstringRequiredendpointstringstatusstringRequiredValues: "success""failed""skipped"
latency_msinteger | nullerror_codestring | nullstatus_codeinteger | nullUpstream HTTP or WebSocket status code for this attempt, when known.
lidobjectShow nested fields
statusstringRequiredValues: "detected""abstained""failed"
sourcestringRequiredDiagnostic tag derived from the configured ONNX model filename.
languagestring | nullRequiredconfidencenumber | nullRequiredmarginnumber | nullRequiredlatency_msintegerRequiredspeech_msinteger | nullRequiredcachedbooleanRequiredreasonstring | nullRequiredwarningsstring[]RequiredShow nested fields
string
string
string
string
202Transcription queued.
idstringRequiredstatusstringRequired400Request validation failed.
errorobjectRequiredShow nested fields
codestringRequiredmessagestringRequiredparamstring | nullrequest_idstring | nullmetadataobjectTyped 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.
errorobjectRequiredShow nested fields
codestringRequiredmessagestringRequiredparamstring | nullrequest_idstring | nullmetadataobjectTyped 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.
errorobjectRequiredShow nested fields
codestringRequiredmessagestringRequiredparamstring | nullrequest_idstring | nullmetadataobjectTyped 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.
errorobjectRequiredShow nested fields
codestringRequiredmessagestringRequiredparamstring | nullrequest_idstring | nullmetadataobjectTyped 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.
errorobjectRequiredShow nested fields
codestringRequiredmessagestringRequiredparamstring | nullrequest_idstring | nullmetadataobjectTyped 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.
errorobjectRequiredShow nested fields
codestringRequiredmessagestringRequiredparamstring | nullrequest_idstring | nullmetadataobjectTyped 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.
errorobjectRequiredShow nested fields
codestringRequiredmessagestringRequiredparamstring | nullrequest_idstring | nullmetadataobjectTyped 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.
errorobjectRequiredShow nested fields
codestringRequiredmessagestringRequiredparamstring | nullrequest_idstring | nullmetadataobjectTyped 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.
errorobjectRequiredShow nested fields
codestringRequiredmessagestringRequiredparamstring | nullrequest_idstring | nullmetadataobjectTyped 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.
errorobjectRequiredShow nested fields
codestringRequiredmessagestringRequiredparamstring | nullrequest_idstring | nullmetadataobjectTyped 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.
errorobjectRequiredShow nested fields
codestringRequiredmessagestringRequiredparamstring | nullrequest_idstring | nullmetadataobjectTyped 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.
errorobjectRequiredShow nested fields
codestringRequiredmessagestringRequiredparamstring | nullrequest_idstring | nullmetadataobjectTyped 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.
errorobjectRequiredShow nested fields
codestringRequiredmessagestringRequiredparamstring | nullrequest_idstring | nullmetadataobjectTyped 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.