Service unavailable
service_unavailable
VoiceLabs cannot serve the request right now and knows it. This is reported instead of a guess: when the credential store cannot be read, the honest answer is “we cannot tell yet”, not “your key is bad” — which would send you rotating a key that was fine.
Why it happens
A dependency was briefly unreachable — the credential store, the idempotency ledger, or the generation service while it restarts (a deploy or a health restart takes it away for up to about half a minute, and the API has already retried it for you before answering this). When an idempotent write cannot be recorded, the request is refused rather than executed without the guarantee you asked for, so a retry can never double-charge.
How to fix it
Honour Retry-After (a few seconds, or 30 when the generation service is restarting) and send the same request again. Nothing was executed, so there is nothing to reconcile.
Safe to retry?
Yes, and it is safe to send as-is.
What it looks like on the wire
{
"type": "https://voicelabs.now/errors/service_unavailable",
"title": "Service unavailable",
"status": 503,
"detail": "A human-readable explanation of this particular occurrence.",
"instance": "/v1/speech",
"code": "service_unavailable"
}
Branch on code, never on status or on the prose in detail: two different problems can share a status, and detail is written for humans and may be reworded. Problems a settings page can resolve also carry settings_url, and a scope failure carries required_scope.
Every VoiceLabs API error is an RFC 9457 problem document with a stable code.