Realtime TTS-2 is live. Built for realtime conversation that feels human. Read the Realtime TTS-2 announcement

Best practices

STT errors and troubleshooting

How the STT API reports errors on the synchronous and WebSocket endpoints, the common gRPC status codes, and what to check when transcription fails.

Error format

Errors follow the standard gRPC status format.

Authentication error

json
{
  "code": 16,
  "message": "Unauthenticated: invalid or missing API key.",
  "details": []
}

Invalid request

json
{
  "code": 3,
  "message": "Unsupported audio encoding.",
  "details": []
}

Common gRPC status codes

CodeNameDescription
3INVALID_ARGUMENTInvalid or missing request field (encoding, model ID, audio data)
8RESOURCE_EXHAUSTEDToo many concurrent requests (rate limit)
16UNAUTHENTICATEDInvalid or missing API key

Streaming (WebSocket) errors

On the streaming endpoint, errors arrive as a frame with a top-level error key using the same status format:

json
{
  "error": {
    "code": 3,
    "message": "invalid transcribe config: unsupported audio encoding"
  }
}

A malformed first message (for example, a config not wrapped in transcribeConfig) currently closes the socket with WebSocket close code 1005 and no error frame. If your connection closes silently with no transcripts, check the shape of your first message.

Troubleshooting

IssueWhat to check
No transcriptAPI key, audio encoding matches request, valid audio file
UNAUTHENTICATEDINWORLD_API_KEY set correctly and not expired in Portal
INVALID_ARGUMENTaudioEncoding matches the actual format (LINEAR16 for raw PCM, MP3 for MP3, etc.)
Poor qualityUse 16 kHz sample rate (8 kHz telephony audio has fewer data points and will produce lower-quality results); ensure clear speech
Large file failuresSplit or compress (e.g. MP3/OGG_OPUS); respect upload size limits
No Voice ProfileEnsure voiceProfileConfig.enableVoiceProfile is set to true in your request

For more help, see the Inworld Discord community.