WebSocket close codes
| Code | Meaning | What to do |
|---|---|---|
| 1000 | Normal close: after session.end, or idle_timeout |
Nothing. |
| 1008 | The start was rejected. The reason says why. | Fix the request; don't retry unchanged. |
| 1013 | Temporarily unable to serve | Retry after a short delay, ideally with backoff. |
1008 reasons
| Reason | Cause |
|---|---|
invalid api key |
Missing or unknown key. |
unknown mode '<mode>' |
mode is not a recognised value. |
bad language code(s) [...] |
A code is malformed. |
language(s) not supported by this ASR: [...] |
A code is valid but not served. |
unknown language mode ... |
language.mode is not auto. |
eot: give a profile or a latency_budget_ms, not both |
Both were given. |
unknown eot profile '<name>'; published: [...] |
The profile name doesn't exist for that tier. |
eot.latency_budget_ms must be a positive number, got ... |
Zero, negative or not a number. |
unsupported language 'xx' |
Rooms: the transcriber can't serve that language. |
1013 reasons
| Reason | Cause |
|---|---|
room capacity reached on this instance; retry |
Rooms are at capacity. |
room ASR unavailable: <reason> |
Room transcription is temporarily unavailable. |
Timeouts
- Idle sessions on every
/v2endpoint close afteridle_timeout_sseconds without speech (default 600; 0 or less disables it). Awarningwithcode: "idle_timeout"andclose_in_scomes first, then a 1000 close with reasonidle_timeout. Speech resets the timer. - Sessions last at most one hour. Open a new session to continue.
HTTP limits
Keep HTTP scoring requests under 600 per minute per key. Above that, requests may be refused with 429 and Retry-After: 60. While the service is starting up: 503 with Retry-After: 30.