Audio transcription
Use multipart/form-data model and file, or JSON model and input_audio:{data,format} (raw base64). Formats: wav, mp3, mp4, m4a, ogg, flac, webm, aac. Decoded audio: maximum 25 MiB; request body: 50 MiB for base64. audio.transcription_max_seconds_by_model sets the per-model limit, falling back to audio.transcription_max_seconds and then 60 seconds. Longer audio returns 413 audio_too_long before processing and is not charged. response_format: json or verbose_json only; timestamp_granularities word or segment requires verbose_json. stream is unsupported (400 unsupported_parameter); oversized audio: 413 audio_too_large. provider is ignored. Billing uses database model prices per usage.seconds or input/output token; per-minute price = 60 × per-second price. usage.cost is the customer charge in USD.
/v1/audio/transcriptionsAuthorizations
AuthorizationrequiredAPI key as bearer token in the Authorization header.
Body
modelrequiredTranscription model id, e.g. elevenlabs/scribe-v2.
fileAudio file (multipart). Supported: wav, mp3, mp4, m4a, ogg, flac, webm, aac. Up to 25 MiB. JSON clients can send input_audio: {data: base64, format} instead.
input_audioJSON alternative to file: data contains raw base64 audio and format names the type, such as wav or mp3. Request body maximum: 50 MiB; decoded audio maximum: 25 MiB.
response_formatjson (default) returns {text}; verbose_json adds language, duration and segments/words.
jsonverbose_jsontimestamp_granularitiesword and/or segment. Only applied with response_format=verbose_json; ignored otherwise. Word-level timestamps are not returned yet; segments are.
wordsegmentlanguageOptional language hint such as en or zh. Leave empty to auto-detect.
promptOptional context text to help with names and terms. Not every model applies it.
temperatureOptional sampling temperature; not every model applies it.
streamStreaming is not supported; stream=true returns 400 unsupported_parameter.
providerOptional routing field; ignored.