Capacity, Spillover and Errors

How the provider stays up under load, where excess traffic goes, and what each error code means.

The provider is built to absorb far more concurrent callers than its own budget can serve directly. Instead of dropping the excess, it hands it to a spill pool; instead of queueing forever, it sheds with a clear, retryable error.

How load is handled

TierBehaviour
PrimaryServed on ZYRAXON's own lane budget. Responses carry X-ZYRAXON-Capacity: primary.
SpillWhen primary lanes are full, the turn is handed to the OpenCode Zen free pool. Still a normal, successful answer, marked spill.
QueueA bounded wait for a lane before giving up, so a short burst is smoothed rather than rejected.
ShedIf even the spill tier is saturated, the request returns 503 with Retry-After rather than blocking other callers.
✓
Overload degrades, it does not crash
A spill response is a success. Treat X-ZYRAXON-Capacity: spill as a signal to slow down or add retry jitter, not as an error to surface.

Error codes

StatustypeMeaning and what to do
400invalid_request_errorUnknown model, missing messages, or malformed JSON. Check the model id against /v1/models.
401authentication_errorThe deployment requires a provider key and yours is missing or wrong. Send Authorization: Bearer <key>.
413payload_too_largeBody over the limit. Compress and slice media, then retry.
429rate_limitSlow down and retry with backoff.
502provider_unavailableEvery model in the rotation was unavailable. Retrying usually works.
503overloadedAt capacity; shed rather than queued. Honour Retry-After.
503upstream_gateThe upstream free tier refused this network. Set OPENCODE_ZEN_API_KEY or call from a served network.

Recommended retry policy

  • ▸Retry 429, 502, 503 with exponential backoff plus jitter.
  • ▸Honour the Retry-After header on 503.
  • ▸Do not retry 400, 401, or 413 — fix the request instead.
  • ▸Log the type field, not just the status: overloaded and upstream_gate are both 503 but need different actions.
★
Check status before a big run
GET /api/public/zyraxon/v1/provider reports live model health, the current concurrency ceiling, and the overload policy, so a client can decide before it fires a batch.