---
title: "Get Speech-to-Text transcription synchronously"
method: POST
path: "/stt/v1/transcribe"
tags: ["SpeechToText"]
---

# Get Speech-to-Text transcription synchronously

`POST /stt/v1/transcribe`

Send the whole audio in a single request, and receive a single transcription.

## Request body

- V1TranscribeSpeechRequest
  - `transcribeConfig` union, required
    - object — Configuration for transcribing audio. Contains model selection, audio format settings, and optional feature configurations. Provider-specific configuration is mutually exclusive — set at most one of groqConfig or inworldSttV1Config.
      - `groqConfig` V1GroqConfig, required — Configuration for Groq STT models.
        - `temperature` number, float — Temperature for the model. Controls randomness in predictions. Higher values produce more varied output. Range: [0.0, 1.0].
      - `modelId` string, required — The identifier of the model to use for transcription. Format: "{provider}/{model-name}". Available models: - `inworld/inworld-stt-1` — Inworld first-party (Sync + WebSocket) - `groq/whisper-large-v3` — Groq Whisper (Sync only) - `assemblyai/universal-streaming-multilingual` — AssemblyAI multilingual (WebSocket only) - `assemblyai/universal-streaming-english` — AssemblyAI English (WebSocket only) - `assemblyai/u3-rt-pro` — AssemblyAI high-accuracy (WebSocket only) - `assemblyai/whisper-rt` — AssemblyAI Whisper real-time (WebSocket only) - `soniox/stt-rt-v4` — Soniox real-time (WebSocket only) - `soniox/stt-rt-v5` — Soniox real-time, latest generation (WebSocket only) - `deepgram/flux-general-en` — Deepgram Flux English conversational (WebSocket only) - `deepgram/flux-general-multi` — Deepgram Flux multilingual conversational (WebSocket only) See [STT Introduction](/stt/overview) for the full model catalogue.
      - `audioEncoding` 'AUDIO_ENCODING_UNSPECIFIED' | 'AUTO_DETECT' | 'LINEAR16' | 'MP3' | 'OGG_OPUS' | 'FLAC', required — Supported audio encoding formats. - AUDIO_ENCODING_UNSPECIFIED: Not specified. Will return [google.rpc.Code.INVALID_ARGUMENT]. - AUTO_DETECT: Automatically detect audio encoding from the audio header. - LINEAR16: Uncompressed 16-bit signed little-endian samples (Linear PCM). - MP3: MP3 audio. Compressed audio format. Not supported for streaming transcription. - OGG_OPUS: Opus encoded audio wrapped in an OGG container. Playable natively on Android and in browsers (Chrome, Firefox). Higher quality than MP3 at similar bitrate. Not supported for streaming transcription. - FLAC: FLAC encoded audio. Lossless audio format. Not supported for streaming transcription.
      - `language` string — Language hint in ISO 639 format (e.g., "en", "ja"). Biases the model toward the specified language during automatic language detection. BCP-47 codes (e.g., "en-US") are also accepted and converted to the base language code. For the Inworld first-party model (`inworld/inworld-stt-1`), the hint additionally constrains the output script for English, Chinese, Cantonese, Japanese, Korean, Russian, and Hindi (e.g. selecting `en` keeps output in Latin script). See [Language Support](/stt/languages) for the full list of supported languages.
      - `sampleRateHertz` integer — Sample rate of the audio data in Hertz. Required when the sample rate cannot be inferred from the audio header (e.g., raw PCM streams). If not set - default sample rate 16000 will be used.
      - `numberOfChannels` integer — Number of channels in the audio data. Required when the number of channels cannot be inferred from the audio header (e.g., raw PCM streams). If not set - default number of channels 1 will be used.
      - `inactivityTimeoutSeconds` integer — Inactivity timeout in seconds. If the client is silent for this duration, the transcription will be stopped.
      - `endOfTurnConfidenceThreshold` number, float — Confidence threshold for end-of-turn prediction. Higher values reduce false-positives. Range: [0.0, 1.0]. Default: 0.5. Applies to streaming; see the [Turn Detection guide](/stt/turn-detection).
      - `prompts` string[] — Custom vocabulary / key terms. An array of context strings (names, jargon, acronyms) that bias the model toward recognizing these terms. This is a soft bias that helps with ambiguous or uncommon words; it is not a hard keyword lock and does not force exact output. Supported across models — the unified field maps to each provider's mechanism (Groq `prompt`, AssemblyAI `keyterms_prompt`, Soniox `context`). Use letters, digits, spaces, and basic punctuation; other characters (such as #, /, @, or |) are rejected by the gateway with INVALID_ARGUMENT (code 3).
      - `includeWordTimestamps` boolean — If true, includes per-word timing information in the response.
      - `enableSpeakerDiarization` boolean — Labels transcribed words with a per-stream speaker identifier. Applies to the WebSocket streaming endpoint. Supported for AssemblyAI, Soniox, and Deepgram models; not yet supported for `inworld/inworld-stt-1`. Use together with `includeWordTimestamps` — speaker labels are returned on `wordTimestamps[].speaker`. Some words may arrive without a label; treat those as unattributed. See the [Speaker Diarization guide](/stt/speaker-diarization).
      - `voiceProfileConfig` V1VoiceProfileConfig — Configuration for voice profile detection.
        - `enableVoiceProfile` boolean, required — Enables voice profile feature for this request or stream.
        - `topN` integer — Number of top labels from each class to return. Default: 10.
    - object — Configuration for transcribing audio. Contains model selection, audio format settings, and optional feature configurations. Provider-specific configuration is mutually exclusive — set at most one of groqConfig or inworldSttV1Config.
      - `inworldSttV1Config` V1InworldSttV1Config, required — Configuration for Inworld STT 1 models. For streaming turn-control options (automatic vs. manual), see the [Turn Detection guide](/stt/turn-detection).
        - `minEndOfTurnSilenceWhenConfident` integer — Minimum silence duration when confidence is high (milliseconds).
        - `vadThreshold` number, float — Voice activity detection threshold. Range: [0.0, 1.0]. Default: 0.5.
      - `modelId` string, required — The identifier of the model to use for transcription. Format: "{provider}/{model-name}". Available models: - `inworld/inworld-stt-1` — Inworld first-party (Sync + WebSocket) - `groq/whisper-large-v3` — Groq Whisper (Sync only) - `assemblyai/universal-streaming-multilingual` — AssemblyAI multilingual (WebSocket only) - `assemblyai/universal-streaming-english` — AssemblyAI English (WebSocket only) - `assemblyai/u3-rt-pro` — AssemblyAI high-accuracy (WebSocket only) - `assemblyai/whisper-rt` — AssemblyAI Whisper real-time (WebSocket only) - `soniox/stt-rt-v4` — Soniox real-time (WebSocket only) - `soniox/stt-rt-v5` — Soniox real-time, latest generation (WebSocket only) - `deepgram/flux-general-en` — Deepgram Flux English conversational (WebSocket only) - `deepgram/flux-general-multi` — Deepgram Flux multilingual conversational (WebSocket only) See [STT Introduction](/stt/overview) for the full model catalogue.
      - `audioEncoding` 'AUDIO_ENCODING_UNSPECIFIED' | 'AUTO_DETECT' | 'LINEAR16' | 'MP3' | 'OGG_OPUS' | 'FLAC', required — Supported audio encoding formats. - AUDIO_ENCODING_UNSPECIFIED: Not specified. Will return [google.rpc.Code.INVALID_ARGUMENT]. - AUTO_DETECT: Automatically detect audio encoding from the audio header. - LINEAR16: Uncompressed 16-bit signed little-endian samples (Linear PCM). - MP3: MP3 audio. Compressed audio format. Not supported for streaming transcription. - OGG_OPUS: Opus encoded audio wrapped in an OGG container. Playable natively on Android and in browsers (Chrome, Firefox). Higher quality than MP3 at similar bitrate. Not supported for streaming transcription. - FLAC: FLAC encoded audio. Lossless audio format. Not supported for streaming transcription.
      - `language` string — Language hint in ISO 639 format (e.g., "en", "ja"). Biases the model toward the specified language during automatic language detection. BCP-47 codes (e.g., "en-US") are also accepted and converted to the base language code. For the Inworld first-party model (`inworld/inworld-stt-1`), the hint additionally constrains the output script for English, Chinese, Cantonese, Japanese, Korean, Russian, and Hindi (e.g. selecting `en` keeps output in Latin script). See [Language Support](/stt/languages) for the full list of supported languages.
      - `sampleRateHertz` integer — Sample rate of the audio data in Hertz. Required when the sample rate cannot be inferred from the audio header (e.g., raw PCM streams). If not set - default sample rate 16000 will be used.
      - `numberOfChannels` integer — Number of channels in the audio data. Required when the number of channels cannot be inferred from the audio header (e.g., raw PCM streams). If not set - default number of channels 1 will be used.
      - `inactivityTimeoutSeconds` integer — Inactivity timeout in seconds. If the client is silent for this duration, the transcription will be stopped.
      - `endOfTurnConfidenceThreshold` number, float — Confidence threshold for end-of-turn prediction. Higher values reduce false-positives. Range: [0.0, 1.0]. Default: 0.5. Applies to streaming; see the [Turn Detection guide](/stt/turn-detection).
      - `prompts` string[] — Custom vocabulary / key terms. An array of context strings (names, jargon, acronyms) that bias the model toward recognizing these terms. This is a soft bias that helps with ambiguous or uncommon words; it is not a hard keyword lock and does not force exact output. Supported across models — the unified field maps to each provider's mechanism (Groq `prompt`, AssemblyAI `keyterms_prompt`, Soniox `context`). Use letters, digits, spaces, and basic punctuation; other characters (such as #, /, @, or |) are rejected by the gateway with INVALID_ARGUMENT (code 3).
      - `includeWordTimestamps` boolean — If true, includes per-word timing information in the response.
      - `enableSpeakerDiarization` boolean — Labels transcribed words with a per-stream speaker identifier. Applies to the WebSocket streaming endpoint. Supported for AssemblyAI, Soniox, and Deepgram models; not yet supported for `inworld/inworld-stt-1`. Use together with `includeWordTimestamps` — speaker labels are returned on `wordTimestamps[].speaker`. Some words may arrive without a label; treat those as unattributed. See the [Speaker Diarization guide](/stt/speaker-diarization).
      - `voiceProfileConfig` V1VoiceProfileConfig — Configuration for voice profile detection.
        - `enableVoiceProfile` boolean, required — Enables voice profile feature for this request or stream.
        - `topN` integer — Number of top labels from each class to return. Default: 10.
    - object — Configuration for transcribing audio. Contains model selection, audio format settings, and optional feature configurations. Provider-specific configuration is mutually exclusive — set at most one of groqConfig or inworldSttV1Config.
      - `modelId` string, required — The identifier of the model to use for transcription. Format: "{provider}/{model-name}". Available models: - `inworld/inworld-stt-1` — Inworld first-party (Sync + WebSocket) - `groq/whisper-large-v3` — Groq Whisper (Sync only) - `assemblyai/universal-streaming-multilingual` — AssemblyAI multilingual (WebSocket only) - `assemblyai/universal-streaming-english` — AssemblyAI English (WebSocket only) - `assemblyai/u3-rt-pro` — AssemblyAI high-accuracy (WebSocket only) - `assemblyai/whisper-rt` — AssemblyAI Whisper real-time (WebSocket only) - `soniox/stt-rt-v4` — Soniox real-time (WebSocket only) - `soniox/stt-rt-v5` — Soniox real-time, latest generation (WebSocket only) - `deepgram/flux-general-en` — Deepgram Flux English conversational (WebSocket only) - `deepgram/flux-general-multi` — Deepgram Flux multilingual conversational (WebSocket only) See [STT Introduction](/stt/overview) for the full model catalogue.
      - `audioEncoding` 'AUDIO_ENCODING_UNSPECIFIED' | 'AUTO_DETECT' | 'LINEAR16' | 'MP3' | 'OGG_OPUS' | 'FLAC', required — Supported audio encoding formats. - AUDIO_ENCODING_UNSPECIFIED: Not specified. Will return [google.rpc.Code.INVALID_ARGUMENT]. - AUTO_DETECT: Automatically detect audio encoding from the audio header. - LINEAR16: Uncompressed 16-bit signed little-endian samples (Linear PCM). - MP3: MP3 audio. Compressed audio format. Not supported for streaming transcription. - OGG_OPUS: Opus encoded audio wrapped in an OGG container. Playable natively on Android and in browsers (Chrome, Firefox). Higher quality than MP3 at similar bitrate. Not supported for streaming transcription. - FLAC: FLAC encoded audio. Lossless audio format. Not supported for streaming transcription.
      - `language` string — Language hint in ISO 639 format (e.g., "en", "ja"). Biases the model toward the specified language during automatic language detection. BCP-47 codes (e.g., "en-US") are also accepted and converted to the base language code. For the Inworld first-party model (`inworld/inworld-stt-1`), the hint additionally constrains the output script for English, Chinese, Cantonese, Japanese, Korean, Russian, and Hindi (e.g. selecting `en` keeps output in Latin script). See [Language Support](/stt/languages) for the full list of supported languages.
      - `sampleRateHertz` integer — Sample rate of the audio data in Hertz. Required when the sample rate cannot be inferred from the audio header (e.g., raw PCM streams). If not set - default sample rate 16000 will be used.
      - `numberOfChannels` integer — Number of channels in the audio data. Required when the number of channels cannot be inferred from the audio header (e.g., raw PCM streams). If not set - default number of channels 1 will be used.
      - `inactivityTimeoutSeconds` integer — Inactivity timeout in seconds. If the client is silent for this duration, the transcription will be stopped.
      - `endOfTurnConfidenceThreshold` number, float — Confidence threshold for end-of-turn prediction. Higher values reduce false-positives. Range: [0.0, 1.0]. Default: 0.5. Applies to streaming; see the [Turn Detection guide](/stt/turn-detection).
      - `prompts` string[] — Custom vocabulary / key terms. An array of context strings (names, jargon, acronyms) that bias the model toward recognizing these terms. This is a soft bias that helps with ambiguous or uncommon words; it is not a hard keyword lock and does not force exact output. Supported across models — the unified field maps to each provider's mechanism (Groq `prompt`, AssemblyAI `keyterms_prompt`, Soniox `context`). Use letters, digits, spaces, and basic punctuation; other characters (such as #, /, @, or |) are rejected by the gateway with INVALID_ARGUMENT (code 3).
      - `includeWordTimestamps` boolean — If true, includes per-word timing information in the response.
      - `enableSpeakerDiarization` boolean — Labels transcribed words with a per-stream speaker identifier. Applies to the WebSocket streaming endpoint. Supported for AssemblyAI, Soniox, and Deepgram models; not yet supported for `inworld/inworld-stt-1`. Use together with `includeWordTimestamps` — speaker labels are returned on `wordTimestamps[].speaker`. Some words may arrive without a label; treat those as unattributed. See the [Speaker Diarization guide](/stt/speaker-diarization).
      - `voiceProfileConfig` V1VoiceProfileConfig — Configuration for voice profile detection.
        - `enableVoiceProfile` boolean, required — Enables voice profile feature for this request or stream.
        - `topN` integer — Number of top labels from each class to return. Default: 10.
  - `audioData` Sttv1AudioContent, required — Container for raw audio data bytes.
    - `content` string, byte, required — The raw audio bytes in the encoding specified by TranscribeConfig.audio_encoding.

## Response `200`

A successful response.

- V1TranscribeSpeechResponse
  - `transcription` V1Transcription — Represents the result of a speech-to-text transcription. May be an interim (partial) result or a final result depending on the is_final field.
    - `transcript` string — Full transcribed text for this segment.
    - `isFinal` boolean — Indicates whether this is a finalized result or an interim (partial) result that may be updated as more audio is processed.
    - `wordTimestamps` TranscriptionWordTimestamp[] — Per-word timing and confidence data. Only populated when `includeWordTimestamps` is enabled in the request config. Available for Groq, AssemblyAI, and Soniox models. Not yet supported for `inworld/inworld-stt-1`.
      - `word` string — The transcribed word.
      - `confidence` number, float — Recognition confidence score for this word, ranging from 0.0 to 1.0.
      - `startTimeMs` integer — Offset from the beginning of the audio to the start of this word, in milliseconds.
      - `endTimeMs` integer — Offset from the beginning of the audio to the end of this word, in milliseconds.
      - `speaker` integer — Speaker identifier for this word when diarization is enabled. Integers are assigned per stream in order of first appearance; numbering varies by provider (AssemblyAI starts at 0, Soniox at 1). May be absent on some words even when diarization is enabled — treat unlabeled words as unattributed. See the [Speaker Diarization guide](/stt/speaker-diarization).
  - `usage` Inworldsttv1Usage — Usage metrics for billing and monitoring purposes.
    - `transcribedAudioMs` integer — The duration of the transcribed audio in milliseconds.
    - `modelId` string — The identifier of the model used for transcription.

## Other responses

- `4XX` — An error response.

---

[API](https://skmtc.net/inworld/apis/inworld-text-to-speech-api.md) · [All operations](https://skmtc.net/inworld/apis/inworld-text-to-speech-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/inworld/inworld-text-to-speech-api/revisions/e79009799a0d/schema)
