API: Free tier gets a burst allowance on /v1/audio/*

The Free plan’s TTS rate limit no longer caps its burst bucket at the sustained rate. Previously Free was 1 request/second with a bucket capacity of 1, so a second request issued in the same second was rejected with 429. Free now gets a burst capacity of 10, so a normal opening burst of requests (a quickstart script, a first integration test) no longer trips the limiter.

PlanSustained requests/secondBurst
Free110
Starter2060
Pro40120
Scale80240
Enterprise150450

Sustained throughput is unchanged on every tier — burst only smooths the first second of traffic; it does not raise your steady-state rate. This brings /v1/audio/* in line with the burst allowance /v1/agents/* has had since rate and concurrency limits were first published.

See the API limits reference for the full per-plan table.

Audio 404s now say what wasn’t found

POST /v1/audio/speech, POST /v1/audio/stream, and POST /v1/audio/stream/with-timestamps previously answered an unknown voice_id or model with an opaque, passed-through upstream 404 - indistinguishable from any other not-found. All three now classify the cause and return an actionable error instead:

CauseCodeMessage
Unknown voice_idvoice_not_foundVoice not found. List the voices available to your workspace with GET /v1/voices.
Unknown modelnot_foundModel not found. List the available models with GET /v1/audio/models.

voice_not_found is already part of the public ErrorCode enum; this is the first time these three endpoints return it instead of a generic upstream passthrough. No other error responses on these endpoints changed.