Errors are returned as JSON with a stable code and a human-readable message:
{
  "error": {
    "code": "insufficient_balance",
    "message": "Insufficient balance for this request."
  }
}

Status codes

StatusCodeMeaning
401unauthorizedMissing, invalid, or revoked API key
403client_disabledThe account is not active
402insufficient_balanceNot enough balance (incl. overdraft)
422invalid_requestMalformed request body
422unknown_voice / unknown_model / unknown_formatUnknown parameter value
422text_too_longText exceeds the 10,000 character limit
422unsupported_languageText contains letters outside Russian/English
422content_rejectedText contains content not allowed for synthesis
429concurrency_limitToo many concurrent requests for your account
5xxsynthesis_failedTemporary synthesis problem — retry shortly
Only Russian and English letters are accepted. Digits, punctuation and symbols are fine, but text containing other scripts is rejected with unsupported_language.