GET

/v1/schemas/elevenlabs/audio/v1/speech-to-text

kind inputactivity audiohash 29c88747…extracted Nov 11, 2026version currentsource upstream spec ↗
fieldrecorded source
schemaSource linked above.

upstream-spec

Source trace
4fa3fc2e746d36f6c01d5db3e204140071b3f1b20a159ea56c21f7959c5a610f
{
  "fetchedAt": 1794374428,
  "extractorVersion": "2",
  "verifiedAt": null
}

Request body

29 properties · 1 required · 8 $defs
propertytypedescriptionconstraints
model_id*stringThe ID of the model to use for transcription.
filestringThe file to transcribe (100ms minimum audio length). All major audio and video formats are supported. Exactly one of the file or cloud_storage_url parameters must be provided. The file size must be less than 5.0GB.format: binary · nullable
language_codestringAn ISO-639-1 or ISO-639-3 language_code corresponding to the language of the audio file. Can sometimes improve transcription performance if known beforehand. Defaults to null, in this case the language is predicted automatically.nullable
secondary_language_codesstring[]Additional ISO-639-1 or ISO-639-3 language codes that may be present in the audio, alongside language_code. Improves transcription accuracy for multilingual audio. Supported by scribe_v3.nullable
numbers_formatenumHow numbers are formatted in the transcript: 'digits' (e.g. '42') or 'words' (e.g. 'forty-two'). Supported by scribe_v3.digits | words · nullable
transcript_editstringNatural-language instruction applied to the final transcript (max 2000 characters). The edited text is returned in 'edited_transcript' alongside the original transcript. Cannot be combined with entity_detection, entity_redaction or use_multi_channel. Usage of this parameter will incur an additional 30% surcharge on the base transcription cost, billed for at least 10 seconds of audio.nullable
tag_audio_eventsbooleanWhether to tag audio events like (laughter), (footsteps), etc. in the transcription.default: true
num_speakersintegerThe maximum amount of speakers talking in the uploaded file. Can help with predicting who speaks when. The maximum amount of speakers that can be predicted is 32. Defaults to null, in this case the amount of speakers is set to the maximum value the model supports.1 ≤ n ≤ 32 · nullable
timestamps_granularityenumThe granularity of the timestamps in the transcription. 'word' provides word-level timestamps and 'character' provides character-level timestamps per word.none | word | character · default: "word"
diarizebooleanWhether to annotate which speaker is currently talking in the uploaded file.default: false
diarization_thresholdnumberDiarization threshold to apply during speaker diarization. A higher value means there will be a lower chance of one speaker being diarized as two different speakers but also a higher chance of two different speakers being diarized as one speaker (less total speakers predicted). A low value means there will be a higher chance of one speaker being diarized as two different speakers but also a lower chance of two different speakers being diarized as one speaker (more total speakers predicted). Can only be set when diarize=True and num_speakers=None. Defaults to None, in which case we will choose a threshold based on the model_id (0.22 usually).0.1 ≤ n ≤ 0.4 · nullable
additional_formatsExportOptions[]A list of additional formats to export the transcript to.items ≤ 10
file_formatenumThe format of input audio. Options are 'pcm_s16le_16' or 'other' For `pcm_s16le_16`, the input audio must be 16-bit PCM at a 16kHz sample rate, single channel (mono), and little-endian byte order. Latency will be lower than with passing an encoded waveform.pcm_s16le_16 | other · default: "other"
cloud_storage_urlstring[Deprecated] This parameter is deprecated and will be removed in the future. Use 'source_url' instead.The HTTPS URL of the file to transcribe. Exactly one of the file or cloud_storage_url parameters must be provided. The file must be accessible via HTTPS and the file size must be less than 2GB. Any valid HTTPS URL is accepted, including URLs from cloud storage providers (AWS S3, Google Cloud Storage, Cloudflare R2, etc.), CDNs, or any other HTTPS source. URLs can be pre-signed or include authentication tokens in query parameters.nullable · deprecated
source_urlstringThe URL of an audio or video file to transcribe. Supports hosted video or audio files, YouTube video URLs, TikTok video URLs, and other video hosting services.nullable
webhookbooleanWhether to send the transcription result to configured speech-to-text webhooks. If set the request will return early without the transcription, which will be delivered later via webhook.default: false
webhook_idstringOptional specific webhook ID to send the transcription result to. Only valid when webhook is set to true. If not provided, transcription will be sent to all configured speech-to-text webhooks.nullable
temperaturenumberControls the randomness of the transcription output. Accepts values between 0.0 and 2.0, where higher values result in more diverse and less deterministic results. If omitted, we will use a temperature based on the model you selected which is usually 0.0 ≤ n ≤ 2 · nullable
seedintegerIf specified, our system will make a best effort to sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed. Must be an integer between 0 and 2147483647.0 ≤ n ≤ 2147483647 · nullable
use_multi_channelbooleanWhether the audio file contains multiple channels where each channel contains a single speaker. When enabled, each channel is transcribed independently. By default a separate transcript is returned per channel; set multichannel_output_style='combined' to inste…default: false
multichannel_output_styleenumControls the response shape when use_multi_channel is enabled. 'separate' (default) returns one transcript per channel under 'transcripts'. 'combined' merges all channels into a single transcript whose words are sorted by start time, each carrying a 'channel_i…separate | combined · default: "separate"
webhook_metadatastring | objectOptional metadata to be included in the webhook response. This should be a JSON string representing an object with a maximum depth of 2 levels and maximum size of 16KB. Useful for tracking internal IDs, job references, or other contextual information.nullable
entity_detectionstring | string[]Detect entities in the transcript. Can be 'all' to detect all entities, a single entity type or category string, or a list of entity types/categories. Categories include 'pii', 'phi', 'pci', 'other', 'offensive_language'. When enabled, detected entities will b…nullable
no_verbatimbooleanIf true, the transcription will not have any filler words, false starts and non-speech sounds. Supported by scribe_v2, scribe_v2_medical and scribe_v3.default: false
use_speaker_librarybooleanWhether to use the speaker library for identifying known speakers during diarization. When enabled and diarize is true, detected speakers will be matched against registered speakers in the workspace's speaker library.default: false
detect_speaker_rolesbooleanWhether to detect speaker roles (agent vs customer). Requires diarize=true. Cannot be used with use_multi_channel=true. When enabled, speaker_id values will be 'agent' and 'customer' instead of 'speaker_0', 'speaker_1', etc. Usage incurs an additional 10% surc…default: false
entity_redactionstring | string[]Redact entities from the transcript text. Accepts the same format as entity_detection: 'all', a category ('pii', 'phi'), or specific entity types. Must be a subset of entity_detection. When redaction is enabled, the entities field will not be returned.nullable
entity_redaction_modestringHow to format redacted entities. 'redacted' replaces with {REDACTED}, 'entity_type' replaces with {ENTITY_TYPE}, 'enumerated_entity_type' replaces with {ENTITY_TYPE_N} where N enumerates each occurrence. Only used when entity_redaction is set.default: "enumerated_entity_type"
keytermsstring[]A list of keyterms to bias the transcription towards. The keyterms are words or phrases you want the model to recognise more accurately. The number of keyterms cannot exceed 1000. The length of each keyterm must be at most 50 characters. Keyterms can contain a…default: []

Types

8 $defs

AdditionalFormatsExportOptions[]

items ≤ 10

DocxExportOptionsobject

include_speakersbooleandefault: true
include_timestampsbooleandefault: true
format*const"docx"
segment_on_silence_longer_than_snumbernullable
max_segment_duration_snumbernullable
max_segment_charsintegernullable

ExportOptionsSegmentedJsonExportOptions | DocxExportOptions | PdfExportOptions | …

HtmlExportOptionsobject

include_speakersbooleandefault: true
include_timestampsbooleandefault: true
format*const"html"
segment_on_silence_longer_than_snumbernullable
max_segment_duration_snumbernullable
max_segment_charsintegernullable

PdfExportOptionsobject

include_speakersbooleandefault: true
include_timestampsbooleandefault: true
format*const"pdf"
segment_on_silence_longer_than_snumbernullable
max_segment_duration_snumbernullable
max_segment_charsintegernullable

SegmentedJsonExportOptionsobject

include_speakersbooleandefault: true
include_timestampsbooleandefault: true
format*const"segmented_json"
segment_on_silence_longer_than_snumbernullable
max_segment_duration_snumbernullable
max_segment_charsintegernullable

SrtExportOptionsobject

max_characters_per_lineintegernullable
include_speakersbooleandefault: false
include_timestampsbooleandefault: true
format*const"srt"
segment_on_silence_longer_than_snumbernullable
max_segment_duration_snumbernullable
max_segment_charsintegernullable

TxtExportOptionsobject

max_characters_per_lineintegernullable
include_speakersbooleandefault: true
include_timestampsbooleandefault: true
format*const"txt"
segment_on_silence_longer_than_snumbernullable
max_segment_duration_snumbernullable
max_segment_charsintegernullable

Validate a payload

before you spend tokens
shell
$ curl -X POST https://modelschemas.com/v1/validate \
    -d '{"provider":"elevenlabs","endpointId":"v1/speech-to-text","payload":{…}}'
→ {"valid": false, "errors": [{"path": "#", "keyword": "required", …}]}