---
title: "Speech To Text"
method: POST
path: "/v1/speech-to-text"
tags: ["speech-to-text"]
---

# Speech To Text

`POST /v1/speech-to-text`

Transcribe an audio or video file. If webhook is set to true, the request will be processed asynchronously and results sent to configured webhooks. When use_multi_channel is true and the provided audio has multiple channels, a 'transcripts' object with separate transcripts for each channel is returned; set multichannel_output_style='combined' to instead receive a single transcript with all channels merged and sorted by time. Otherwise, returns a single transcript. The optional webhook_metadata parameter allows you to attach custom data that will be included in webhook responses for request correlation and tracking.

## Query parameters

- `token` string, nullable — A single-use authentication token created via POST /v1/single-use-token/batch_scribe. This token can only be used once and expires after 15 minutes. Alternative to API key or bearer token authentication for frontend clients.
- `enable_logging` boolean — When enable_logging is set to false zero retention mode will be used for the request. This will mean log and transcript storage features are unavailable for this request. Zero retention mode may only be used by enterprise customers.

## Headers

- `xi-api-key` string, nullable — Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.

## Response `200`

Synchronous transcription result

- union
  - union — Chunk-level detail of the transcription with timing information.
    - object — Chunk-level detail of the transcription with timing information.
      - `language_code` string, required — The detected language code (e.g. 'eng' for English).
      - `language_probability` number, required — The confidence score of the language detection (0 to 1).
      - `text` string, required — The raw text of the transcription.
      - `words` SpeechToTextWordResponseModel[], required — List of words with their timing information.
        - `text` string, required — The word or sound that was transcribed.
        - `start` number, nullable — The start time of the word or sound in seconds.
        - `end` number, nullable — The end time of the word or sound in seconds.
        - `type` 'word' | 'spacing' | 'audio_event', required — The type of the word or sound. 'audio_event' is used for non-word sounds like laughter or footsteps.
        - `speaker_id` string, nullable — Unique identifier for the speaker of this word.
        - `logprob` number, required — The log of the probability with which this word was predicted. Logprobs are in range [-infinity, 0], higher logprobs indicate a higher confidence the model has in its predictions.
        - `characters` SpeechToTextCharacterResponseModel[], nullable — The characters that make up the word and their timing information.
          - `text` string, required — The character that was transcribed.
          - `start` number, nullable — The start time of the character in seconds.
          - `end` number, nullable — The end time of the character in seconds.
        - `channel_index` integer, nullable — The channel this word was spoken on (for multichannel audio). Null for single-channel transcriptions.
      - `channel_index` integer
      - `additional_formats` AdditionalFormatResponseModel[]
        - `requested_format` string, required — The requested format.
        - `file_extension` string, required — The file extension of the additional format.
        - `content_type` string, required — The content type of the additional format.
        - `is_base64_encoded` boolean, required — Whether the content is base64 encoded.
        - `content` string, required — The content of the additional format.
      - `transcription_id` string
      - `entities` DetectedEntity[]
        - `text` string, required — The text that was identified as an entity.
        - `entity_type` string, required — The type of entity detected (e.g., 'credit_card', 'email_address', 'person_name').
        - `start_char` integer, required — Start character position in the transcript text.
        - `end_char` integer, required — End character position in the transcript text.
      - `audio_duration_secs` number
    - object — Response model for multichannel speech-to-text transcription.
      - `transcripts` SpeechToTextChunkResponseModel[], required — List of transcripts, one for each audio channel. Each transcript contains the text and word-level details for its respective channel.
        - `language_code` string, required — The detected language code (e.g. 'eng' for English).
        - `language_probability` number, required — The confidence score of the language detection (0 to 1).
        - `text` string, required — The raw text of the transcription.
        - `words` SpeechToTextWordResponseModel[], required — List of words with their timing information.
          - `text` string, required — The word or sound that was transcribed.
          - `start` number, nullable — The start time of the word or sound in seconds.
          - `end` number, nullable — The end time of the word or sound in seconds.
          - `type` 'word' | 'spacing' | 'audio_event', required — The type of the word or sound. 'audio_event' is used for non-word sounds like laughter or footsteps.
          - `speaker_id` string, nullable — Unique identifier for the speaker of this word.
          - `logprob` number, required — The log of the probability with which this word was predicted. Logprobs are in range [-infinity, 0], higher logprobs indicate a higher confidence the model has in its predictions.
          - `characters` SpeechToTextCharacterResponseModel[], nullable — The characters that make up the word and their timing information.
            - `text` string, required — The character that was transcribed.
            - `start` number, nullable — The start time of the character in seconds.
            - `end` number, nullable — The end time of the character in seconds.
          - `channel_index` integer, nullable — The channel this word was spoken on (for multichannel audio). Null for single-channel transcriptions.
        - `channel_index` integer, nullable — The channel index this transcript belongs to (for multichannel audio).
        - `additional_formats` AdditionalFormatResponseModel[], nullable — Requested additional formats of the transcript.
          - `requested_format` string, required — The requested format.
          - `file_extension` string, required — The file extension of the additional format.
          - `content_type` string, required — The content type of the additional format.
          - `is_base64_encoded` boolean, required — Whether the content is base64 encoded.
          - `content` string, required — The content of the additional format.
        - `transcription_id` string, nullable — The transcription ID of the response.
        - `entities` DetectedEntity[], nullable — List of detected entities with their text, type, and character positions in the transcript.
          - `text` string, required — The text that was identified as an entity.
          - `entity_type` string, required — The type of entity detected (e.g., 'credit_card', 'email_address', 'person_name').
          - `start_char` integer, required — Start character position in the transcript text.
          - `end_char` integer, required — End character position in the transcript text.
        - `audio_duration_secs` number, nullable — The duration of the audio that was transcribed in seconds.
      - `transcription_id` string
      - `audio_duration_secs` number
      - `language_code` string, required — The detected language code (e.g. 'eng' for English).
      - `language_probability` number, required — The confidence score of the language detection (0 to 1).
      - `text` string, required — The raw text of the transcription.
      - `words` SpeechToTextWordResponseModel[], required — List of words with their timing information.
        - `text` string, required — The word or sound that was transcribed.
        - `start` number, nullable — The start time of the word or sound in seconds.
        - `end` number, nullable — The end time of the word or sound in seconds.
        - `type` 'word' | 'spacing' | 'audio_event', required — The type of the word or sound. 'audio_event' is used for non-word sounds like laughter or footsteps.
        - `speaker_id` string, nullable — Unique identifier for the speaker of this word.
        - `logprob` number, required — The log of the probability with which this word was predicted. Logprobs are in range [-infinity, 0], higher logprobs indicate a higher confidence the model has in its predictions.
        - `characters` SpeechToTextCharacterResponseModel[], nullable — The characters that make up the word and their timing information.
          - `text` string, required — The character that was transcribed.
          - `start` number, nullable — The start time of the character in seconds.
          - `end` number, nullable — The end time of the character in seconds.
        - `channel_index` integer, nullable — The channel this word was spoken on (for multichannel audio). Null for single-channel transcriptions.
      - `channel_index` integer, nullable — The channel index this transcript belongs to (for multichannel audio).
      - `additional_formats` AdditionalFormatResponseModel[], nullable — Requested additional formats of the transcript.
        - `requested_format` string, required — The requested format.
        - `file_extension` string, required — The file extension of the additional format.
        - `content_type` string, required — The content type of the additional format.
        - `is_base64_encoded` boolean, required — Whether the content is base64 encoded.
        - `content` string, required — The content of the additional format.
      - `entities` DetectedEntity[], nullable — List of detected entities with their text, type, and character positions in the transcript.
        - `text` string, required — The text that was identified as an entity.
        - `entity_type` string, required — The type of entity detected (e.g., 'credit_card', 'email_address', 'person_name').
        - `start_char` integer, required — Start character position in the transcript text.
        - `end_char` integer, required — End character position in the transcript text.
    - object
      - `message` string, required — The message of the webhook response.
      - `request_id` string, required — The request ID of the webhook response.
      - `transcription_id` string
      - `language_code` string, required — The detected language code (e.g. 'eng' for English).
      - `language_probability` number, required — The confidence score of the language detection (0 to 1).
      - `text` string, required — The raw text of the transcription.
      - `words` SpeechToTextWordResponseModel[], required — List of words with their timing information.
        - `text` string, required — The word or sound that was transcribed.
        - `start` number, nullable — The start time of the word or sound in seconds.
        - `end` number, nullable — The end time of the word or sound in seconds.
        - `type` 'word' | 'spacing' | 'audio_event', required — The type of the word or sound. 'audio_event' is used for non-word sounds like laughter or footsteps.
        - `speaker_id` string, nullable — Unique identifier for the speaker of this word.
        - `logprob` number, required — The log of the probability with which this word was predicted. Logprobs are in range [-infinity, 0], higher logprobs indicate a higher confidence the model has in its predictions.
        - `characters` SpeechToTextCharacterResponseModel[], nullable — The characters that make up the word and their timing information.
          - `text` string, required — The character that was transcribed.
          - `start` number, nullable — The start time of the character in seconds.
          - `end` number, nullable — The end time of the character in seconds.
        - `channel_index` integer, nullable — The channel this word was spoken on (for multichannel audio). Null for single-channel transcriptions.
      - `channel_index` integer, nullable — The channel index this transcript belongs to (for multichannel audio).
      - `additional_formats` AdditionalFormatResponseModel[], nullable — Requested additional formats of the transcript.
        - `requested_format` string, required — The requested format.
        - `file_extension` string, required — The file extension of the additional format.
        - `content_type` string, required — The content type of the additional format.
        - `is_base64_encoded` boolean, required — Whether the content is base64 encoded.
        - `content` string, required — The content of the additional format.
      - `entities` DetectedEntity[], nullable — List of detected entities with their text, type, and character positions in the transcript.
        - `text` string, required — The text that was identified as an entity.
        - `entity_type` string, required — The type of entity detected (e.g., 'credit_card', 'email_address', 'person_name').
        - `start_char` integer, required — Start character position in the transcript text.
        - `end_char` integer, required — End character position in the transcript text.
      - `audio_duration_secs` number, nullable — The duration of the audio that was transcribed in seconds.
  - union — Response model for multichannel speech-to-text transcription.
    - object — Chunk-level detail of the transcription with timing information.
      - `language_code` string, required — The detected language code (e.g. 'eng' for English).
      - `language_probability` number, required — The confidence score of the language detection (0 to 1).
      - `text` string, required — The raw text of the transcription.
      - `words` SpeechToTextWordResponseModel[], required — List of words with their timing information.
        - `text` string, required — The word or sound that was transcribed.
        - `start` number, nullable — The start time of the word or sound in seconds.
        - `end` number, nullable — The end time of the word or sound in seconds.
        - `type` 'word' | 'spacing' | 'audio_event', required — The type of the word or sound. 'audio_event' is used for non-word sounds like laughter or footsteps.
        - `speaker_id` string, nullable — Unique identifier for the speaker of this word.
        - `logprob` number, required — The log of the probability with which this word was predicted. Logprobs are in range [-infinity, 0], higher logprobs indicate a higher confidence the model has in its predictions.
        - `characters` SpeechToTextCharacterResponseModel[], nullable — The characters that make up the word and their timing information.
          - `text` string, required — The character that was transcribed.
          - `start` number, nullable — The start time of the character in seconds.
          - `end` number, nullable — The end time of the character in seconds.
        - `channel_index` integer, nullable — The channel this word was spoken on (for multichannel audio). Null for single-channel transcriptions.
      - `channel_index` integer, nullable — The channel index this transcript belongs to (for multichannel audio).
      - `additional_formats` AdditionalFormatResponseModel[], nullable — Requested additional formats of the transcript.
        - `requested_format` string, required — The requested format.
        - `file_extension` string, required — The file extension of the additional format.
        - `content_type` string, required — The content type of the additional format.
        - `is_base64_encoded` boolean, required — Whether the content is base64 encoded.
        - `content` string, required — The content of the additional format.
      - `transcription_id` string
      - `entities` DetectedEntity[], nullable — List of detected entities with their text, type, and character positions in the transcript.
        - `text` string, required — The text that was identified as an entity.
        - `entity_type` string, required — The type of entity detected (e.g., 'credit_card', 'email_address', 'person_name').
        - `start_char` integer, required — Start character position in the transcript text.
        - `end_char` integer, required — End character position in the transcript text.
      - `audio_duration_secs` number
      - `transcripts` SpeechToTextChunkResponseModel[], required — List of transcripts, one for each audio channel. Each transcript contains the text and word-level details for its respective channel.
        - `language_code` string, required — The detected language code (e.g. 'eng' for English).
        - `language_probability` number, required — The confidence score of the language detection (0 to 1).
        - `text` string, required — The raw text of the transcription.
        - `words` SpeechToTextWordResponseModel[], required — List of words with their timing information.
          - `text` string, required — The word or sound that was transcribed.
          - `start` number, nullable — The start time of the word or sound in seconds.
          - `end` number, nullable — The end time of the word or sound in seconds.
          - `type` 'word' | 'spacing' | 'audio_event', required — The type of the word or sound. 'audio_event' is used for non-word sounds like laughter or footsteps.
          - `speaker_id` string, nullable — Unique identifier for the speaker of this word.
          - `logprob` number, required — The log of the probability with which this word was predicted. Logprobs are in range [-infinity, 0], higher logprobs indicate a higher confidence the model has in its predictions.
          - `characters` SpeechToTextCharacterResponseModel[], nullable — The characters that make up the word and their timing information.
            - `text` string, required — The character that was transcribed.
            - `start` number, nullable — The start time of the character in seconds.
            - `end` number, nullable — The end time of the character in seconds.
          - `channel_index` integer, nullable — The channel this word was spoken on (for multichannel audio). Null for single-channel transcriptions.
        - `channel_index` integer, nullable — The channel index this transcript belongs to (for multichannel audio).
        - `additional_formats` AdditionalFormatResponseModel[], nullable — Requested additional formats of the transcript.
          - `requested_format` string, required — The requested format.
          - `file_extension` string, required — The file extension of the additional format.
          - `content_type` string, required — The content type of the additional format.
          - `is_base64_encoded` boolean, required — Whether the content is base64 encoded.
          - `content` string, required — The content of the additional format.
        - `transcription_id` string, nullable — The transcription ID of the response.
        - `entities` DetectedEntity[], nullable — List of detected entities with their text, type, and character positions in the transcript.
          - `text` string, required — The text that was identified as an entity.
          - `entity_type` string, required — The type of entity detected (e.g., 'credit_card', 'email_address', 'person_name').
          - `start_char` integer, required — Start character position in the transcript text.
          - `end_char` integer, required — End character position in the transcript text.
        - `audio_duration_secs` number, nullable — The duration of the audio that was transcribed in seconds.
    - object — Response model for multichannel speech-to-text transcription.
      - `transcripts` SpeechToTextChunkResponseModel[], required — List of transcripts, one for each audio channel. Each transcript contains the text and word-level details for its respective channel.
        - `language_code` string, required — The detected language code (e.g. 'eng' for English).
        - `language_probability` number, required — The confidence score of the language detection (0 to 1).
        - `text` string, required — The raw text of the transcription.
        - `words` SpeechToTextWordResponseModel[], required — List of words with their timing information.
          - `text` string, required — The word or sound that was transcribed.
          - `start` number, nullable — The start time of the word or sound in seconds.
          - `end` number, nullable — The end time of the word or sound in seconds.
          - `type` 'word' | 'spacing' | 'audio_event', required — The type of the word or sound. 'audio_event' is used for non-word sounds like laughter or footsteps.
          - `speaker_id` string, nullable — Unique identifier for the speaker of this word.
          - `logprob` number, required — The log of the probability with which this word was predicted. Logprobs are in range [-infinity, 0], higher logprobs indicate a higher confidence the model has in its predictions.
          - `characters` SpeechToTextCharacterResponseModel[], nullable — The characters that make up the word and their timing information.
            - `text` string, required — The character that was transcribed.
            - `start` number, nullable — The start time of the character in seconds.
            - `end` number, nullable — The end time of the character in seconds.
          - `channel_index` integer, nullable — The channel this word was spoken on (for multichannel audio). Null for single-channel transcriptions.
        - `channel_index` integer, nullable — The channel index this transcript belongs to (for multichannel audio).
        - `additional_formats` AdditionalFormatResponseModel[], nullable — Requested additional formats of the transcript.
          - `requested_format` string, required — The requested format.
          - `file_extension` string, required — The file extension of the additional format.
          - `content_type` string, required — The content type of the additional format.
          - `is_base64_encoded` boolean, required — Whether the content is base64 encoded.
          - `content` string, required — The content of the additional format.
        - `transcription_id` string, nullable — The transcription ID of the response.
        - `entities` DetectedEntity[], nullable — List of detected entities with their text, type, and character positions in the transcript.
          - `text` string, required — The text that was identified as an entity.
          - `entity_type` string, required — The type of entity detected (e.g., 'credit_card', 'email_address', 'person_name').
          - `start_char` integer, required — Start character position in the transcript text.
          - `end_char` integer, required — End character position in the transcript text.
        - `audio_duration_secs` number, nullable — The duration of the audio that was transcribed in seconds.
      - `transcription_id` string
      - `audio_duration_secs` number
    - object
      - `message` string, required — The message of the webhook response.
      - `request_id` string, required — The request ID of the webhook response.
      - `transcription_id` string
      - `transcripts` SpeechToTextChunkResponseModel[], required — List of transcripts, one for each audio channel. Each transcript contains the text and word-level details for its respective channel.
        - `language_code` string, required — The detected language code (e.g. 'eng' for English).
        - `language_probability` number, required — The confidence score of the language detection (0 to 1).
        - `text` string, required — The raw text of the transcription.
        - `words` SpeechToTextWordResponseModel[], required — List of words with their timing information.
          - `text` string, required — The word or sound that was transcribed.
          - `start` number, nullable — The start time of the word or sound in seconds.
          - `end` number, nullable — The end time of the word or sound in seconds.
          - `type` 'word' | 'spacing' | 'audio_event', required — The type of the word or sound. 'audio_event' is used for non-word sounds like laughter or footsteps.
          - `speaker_id` string, nullable — Unique identifier for the speaker of this word.
          - `logprob` number, required — The log of the probability with which this word was predicted. Logprobs are in range [-infinity, 0], higher logprobs indicate a higher confidence the model has in its predictions.
          - `characters` SpeechToTextCharacterResponseModel[], nullable — The characters that make up the word and their timing information.
            - `text` string, required — The character that was transcribed.
            - `start` number, nullable — The start time of the character in seconds.
            - `end` number, nullable — The end time of the character in seconds.
          - `channel_index` integer, nullable — The channel this word was spoken on (for multichannel audio). Null for single-channel transcriptions.
        - `channel_index` integer, nullable — The channel index this transcript belongs to (for multichannel audio).
        - `additional_formats` AdditionalFormatResponseModel[], nullable — Requested additional formats of the transcript.
          - `requested_format` string, required — The requested format.
          - `file_extension` string, required — The file extension of the additional format.
          - `content_type` string, required — The content type of the additional format.
          - `is_base64_encoded` boolean, required — Whether the content is base64 encoded.
          - `content` string, required — The content of the additional format.
        - `transcription_id` string, nullable — The transcription ID of the response.
        - `entities` DetectedEntity[], nullable — List of detected entities with their text, type, and character positions in the transcript.
          - `text` string, required — The text that was identified as an entity.
          - `entity_type` string, required — The type of entity detected (e.g., 'credit_card', 'email_address', 'person_name').
          - `start_char` integer, required — Start character position in the transcript text.
          - `end_char` integer, required — End character position in the transcript text.
        - `audio_duration_secs` number, nullable — The duration of the audio that was transcribed in seconds.
      - `audio_duration_secs` number, nullable — The duration of the audio that was transcribed across all channels in seconds.

## Other responses

- `202` — Asynchronous request accepted
- `422` — Validation Error

---

[API](https://skmtc.net/elevenlabs/apis/elevenlabs-api-documentation.md) · [All operations](https://skmtc.net/elevenlabs/apis/elevenlabs-api-documentation/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/elevenlabs/elevenlabs-api-documentation/revisions/d1075d6a6487/schema)
