Skip to main content
POST
/
stt
/
v1
/
transcribe
curl --request POST \
  --url https://api.inworld.ai/stt/v1/transcribe \
  --header "Authorization: Basic $INWORLD_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "transcribeConfig": {
      "modelId": "groq/whisper-large-v3",
      "audioEncoding": "LINEAR16",
      "language": "en-US",
      "sampleRateHertz": 16000,
      "numberOfChannels": 1
    },
    "audioData": {
      "content": "<YOUR_AUDIO>"
    }
  }'
import requests
import base64

url = "https://api.inworld.ai/stt/v1/transcribe"
api_key = "$INWORLD_API_KEY"

with open("audio.wav", "rb") as f:
    audio_base64 = base64.b64encode(f.read()).decode("utf-8")

response = requests.post(
    url,
    headers={
        "Authorization": f"Basic {api_key}",
        "Content-Type": "application/json",
    },
    json={
        "transcribeConfig": {
            "modelId": "groq/whisper-large-v3",
            "audioEncoding": "LINEAR16",
            "language": "en-US",
            "sampleRateHertz": 16000,
            "numberOfChannels": 1,
        },
        "audioData": {
            "content": audio_base64,
        },
    },
)

print(response.json())
const fs = require("fs");

const apiKey = "$INWORLD_API_KEY";
const audioBase64 = fs.readFileSync("audio.wav").toString("base64");

const response = await fetch("https://api.inworld.ai/stt/v1/transcribe", {
  method: "POST",
  headers: {
    "Authorization": `Basic ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    transcribeConfig: {
      modelId: "groq/whisper-large-v3",
      audioEncoding: "LINEAR16",
      language: "en-US",
      sampleRateHertz: 16000,
      numberOfChannels: 1,
    },
    audioData: {
      content: audioBase64,
    },
  }),
});

const data = await response.json();
console.log(data);
{
  "transcription": {
    "transcript": "Hey, I just wanted to check in on the delivery status for my order.",
    "isFinal": true,
    "wordTimestamps": []
  },
  "usage": null
}
curl --request POST \
  --url https://api.inworld.ai/stt/v1/transcribe \
  --header "Authorization: Basic $INWORLD_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "transcribeConfig": {
      "modelId": "groq/whisper-large-v3",
      "audioEncoding": "LINEAR16",
      "language": "en-US",
      "sampleRateHertz": 16000,
      "numberOfChannels": 1
    },
    "audioData": {
      "content": "<YOUR_AUDIO>"
    }
  }'
import requests
import base64

url = "https://api.inworld.ai/stt/v1/transcribe"
api_key = "$INWORLD_API_KEY"

with open("audio.wav", "rb") as f:
    audio_base64 = base64.b64encode(f.read()).decode("utf-8")

response = requests.post(
    url,
    headers={
        "Authorization": f"Basic {api_key}",
        "Content-Type": "application/json",
    },
    json={
        "transcribeConfig": {
            "modelId": "groq/whisper-large-v3",
            "audioEncoding": "LINEAR16",
            "language": "en-US",
            "sampleRateHertz": 16000,
            "numberOfChannels": 1,
        },
        "audioData": {
            "content": audio_base64,
        },
    },
)

print(response.json())
const fs = require("fs");

const apiKey = "$INWORLD_API_KEY";
const audioBase64 = fs.readFileSync("audio.wav").toString("base64");

const response = await fetch("https://api.inworld.ai/stt/v1/transcribe", {
  method: "POST",
  headers: {
    "Authorization": `Basic ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    transcribeConfig: {
      modelId: "groq/whisper-large-v3",
      audioEncoding: "LINEAR16",
      language: "en-US",
      sampleRateHertz: 16000,
      numberOfChannels: 1,
    },
    audioData: {
      content: audioBase64,
    },
  }),
});

const data = await response.json();
console.log(data);
{
  "transcription": {
    "transcript": "Hey, I just wanted to check in on the delivery status for my order.",
    "isFinal": true,
    "wordTimestamps": []
  },
  "usage": null
}

Authorizations

Authorization
string
header
required

Your authentication credentials. For Basic authentication, please populate Basic $INWORLD_API_KEY. You can create a key in one command with the Inworld CLI: inworld workspace add-key.

Body

application/json

Request message for the synchronous TranscribeSpeech API.

transcribeConfig
Groq · object
required

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.

audioData
object
required

Container for raw audio data bytes.

Response

A successful response.

transcription
object

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.

usage
object

Usage metrics for billing and monitoring purposes.