Providers API
List the upstream backends AnyRouter can dispatch requests to.
Return the catalog of upstream backends AnyRouter routes through — Cloudflare AI Gateway, partner-hosted Workers AI models, BYOK provider routes, DeepInfra, and other direct providers. Each entry carries a logo and short description suitable for rendering in a UI.
/api/v1/providersThis endpoint is public — no authentication is required.
The list is provider-organization-grained — separate from the model catalog at /api/v1/models, which lists individual model ids.
Request
GET /api/v1/providers takes no parameters and requires no auth headers. The full list is always returned; to find which providers serve a specific model, fetch /api/v1/models/:id and read its upstreams[] array.
Response
{
"object": "list",
"data": [
{
"id": "anthropic",
"name": "Anthropic",
"description": "Anthropic's Claude model family.",
"logo": "/providers/anthropic.svg"
},
{
"id": "openai",
"name": "OpenAI",
"description": "OpenAI-hosted GPT and embedding models.",
"logo": "/providers/openai.svg"
},
{
"id": "cloudflare",
"name": "Cloudflare AI Gateway",
"description": "Cloudflare's Workers AI catalog (first-party + partner-hosted).",
"logo": "/providers/cloudflare.svg"
}
]
}
| Field | Type | Description |
|---|---|---|
id | string | Stable backend identifier. Matches the provider field on /api/v1/models entries. |
name | string | Display name. |
description | string | Short summary (≤ 200 chars), safe to render in tooltips. |
logo | string | Absolute or root-relative path to an SVG asset. |
Provider availability is not returned here — that lives on /api/v1/health so the static catalog can be cached aggressively. Combine the two for a "providers + status" view.
Examples
curl https://anyrouter.dev/api/v1/providers
import httpx
providers = httpx.get("https://anyrouter.dev/api/v1/providers").json()["data"]
for p in providers:
print(p["id"], "-", p["name"])
const { data } = await (
await fetch("https://anyrouter.dev/api/v1/providers")
).json()
data.forEach((p) => console.log(p.id, "-", p.name))
Errors
| Status | Code | Meaning |
|---|---|---|
| 429 | too_many_requests | Rate limited. |
| 500 | internal_server_error | Unexpected AnyRouter failure. |
| 502 | bad_gateway | Catalog generation failed (rare; falls back to cached copy). |
| 503 | service_unavailable | Service is down. |