Provider Health

Transparent per-provider health combining sentinel probes, circuit breakers, and key status.

Get provider health

/v1/health/providers

Per-provider breakdown combining three health signals:

  • Sentinel probes — automated health checks every 30s
  • Circuit breaker state — derived from real traffic failures
  • BYOK key status — whether you have a key registered

Response

{
  "providers": [
    {
      "id": "anthropic",
      "sentinel": {
        "status": "healthy",
        "latency_ms": 234,
        "last_probe_at": "2026-03-15T10:30:00.000Z"
      },
      "models": [
        { "id": "anthropic/claude-sonnet-4", "circuit": "closed", "routable": true },
        { "id": "anthropic/claude-haiku-4-5", "circuit": "closed", "routable": true },
        { "id": "anthropic/claude-opus-4", "circuit": "open", "routable": false }
      ],
      "aggregate": {
        "total_models": 26,
        "routable_models": 24,
        "circuit_open_count": 2,
        "health": "degraded"
      },
      "has_key": true
    }
  ],
  "summary": {
    "total_providers": 7,
    "healthy": 5,
    "degraded": 1,
    "down": 1
  }
}

Health states

StateMeaning
healthySentinel OK, no circuit breakers open
degradedSentinel OK but some circuit breakers open, or sentinel reports degraded
downSentinel reports down or auth_error

Authentication

Requires API key: Authorization: Bearer br_live_...

SDK Usage

// Provider health is available via the HTTP client
const res = await fetch("https://api.brainstormrouter.com/v1/health/providers", {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const health = await res.json();
console.log(`${health.summary.healthy} providers healthy`);
curl https://api.brainstormrouter.com/v1/health/providers \
  -H "Authorization: Bearer br_live_..."