Response envelope
JSON endpoints return a consistent envelope with a booleanerror flag. On success, error is
false and the payload is in data:
error is true, data is omitted, and message carries the detail:
Plan-limit & entitlement denials
Billing-related denials do not use the standard envelope - they return a flat JSON body. Per-resource plan limits (for example creating more voices than your plan allows) return403:
402, and a feature your
plan doesn’t include returns 403. Both carry the unit and the current usage:
error string is the denial reason (e.g. quota_exhausted, insufficient_credits,
limit_reached, or feature_disabled).
Status codes
Common messages
Voice is not enrolled yet
Voice is not enrolled yet
The voice you referenced isn’t ready to use - only voices with status
ready can synthesize. See
Working with voices.text too long (max 10000 chars)
text too long (max 10000 chars)
The
text field exceeds the 10,000-character limit. Split long input into multiple requests.Provider errors (422 / 429 / 502)
Provider errors (422 / 429 / 502)
These originate from the upstream synthesis provider.
422 is a validation issue with your input,
429 is rate limiting, and 502 means the provider is warming up or unavailable - retry with
backoff.
