Runnable Catalog

Models that will actually work right now — filtered by health, keys, and budget.

List runnable models

/v1/catalog/runnable

Returns only models guaranteed to succeed if called. Filters the full catalog by:

  • Circuit breaker — excludes models where all endpoints are tripped
  • Sentinel health — excludes providers marked down or auth_error
  • BYOK keys — excludes providers without an API key (env or tenant)
  • Budget — excludes models when budget is exhausted

The filtered_out object tells you exactly why models were removed.

Response

{
  "object": "list",
  "data": [
    {
      "id": "anthropic/claude-sonnet-4",
      "object": "model",
      "owned_by": "anthropic",
      "x_model_router": {
        "pricing": { "input": 3, "output": 15 },
        "capabilities": ["tools", "streaming", "vision"],
        "endpoints": 1
      }
    }
  ],
  "filtered_out": {
    "circuit_open": 2,
    "no_provider_key": 45,
    "sentinel_down": 0,
    "budget_exhausted": 0
  },
  "total_available": 308,
  "total_filtered": 47
}

Difference from /v1/models

Feature/v1/models/v1/catalog/runnable
Circuit-open modelsExcluded by default (opt-in via ?includeUnhealthy=true)Always excluded
Sentinel-down providersIncludedExcluded
Missing BYOK keysIncludedExcluded
Budget-exhaustedIncludedExcluded
Filter breakdownNot providedfiltered_out counts

Use /v1/models to see everything discovered. Use /v1/catalog/runnable to see what will actually work.

Authentication

Requires API key: Authorization: Bearer br_live_...

SDK Usage

const runnable = await client.runnable.list();
console.log(`${runnable.total_available} models ready`);
if (runnable.filtered_out.no_provider_key > 0) {
  console.log("Register provider keys to unlock more models");
}
runnable = client.runnable.list()
print(f"{runnable['total_available']} models ready")
curl https://api.brainstormrouter.com/v1/catalog/runnable \
  -H "Authorization: Bearer br_live_..."