KugelAudio TTS endpoints return the same error shape for HTTP responses and
WebSocket error frames.
retry_after is not included in the JSON body. When retry timing is available
for an HTTP response, use the Retry-After response header.
HTTP and WebSocket payloads
WebSocket close codes
WebSocket error frames use the same JSON payload shape as HTTP errors. If the
server closes the socket after sending an error, the WebSocket close code is
separate from the JSON code.
Handling errors
Use error_code and code for application logic. Treat error as display
text only.