Live provider health
https://api.voxrouter.ai/v1/statusReport the current state of each provider: `available` (key configured) or `unavailable` (`reason: missing_api_key`). Cheap to serve — no upstream calls, just env-key presence per deployment. Safe to poll. Circuit-breaker state used to flow through this endpoint (`degraded`, `circuit_open`, `circuit_half_open`); it has been removed from the public surface because breaker state is a per-machine load-balancer implementation detail. Customers should retry transparently on 5xx and read the `X-VoxRouter-Breaker-State` response header if they need that signal. Internal observability flows through Honeycomb span attribute `vr.breaker.state`.
curl https://api.voxrouter.ai/v1/status \
-H "Authorization: Bearer $VOXROUTER_API_KEY"Headers
AuthorizationstringRequiredAuthorization: Bearer pk_....Response
Per-provider health snapshot.
{
"providers": [
{
"id": "string",
"state": "available",
"reason": "missing_api_key"
}
]
}providersobject[]RequiredErrors
Non-2xx responses return a JSON body with a machine-readable error code and an optional details string.
| Status | Meaning |
|---|---|
| 401 | Missing or invalid API key. |
| 429 | Per-key rate limit or per-key concurrency limit exceeded. The `code` field on the body distinguishes the two (`rate_limit_exceeded` vs `concurrency_limit_exceeded`). `Retry-After` is seconds-from-now: a hard value until the rate-limit window resets, or a soft `1` hint for concurrency (slots free on request completion). |
| 500 | Unexpected server error. |