Skip to content

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.

GET/api/v1/providers

This 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"
    }
  ]
}
FieldTypeDescription
idstringStable backend identifier. Matches the provider field on /api/v1/models entries.
namestringDisplay name.
descriptionstringShort summary (≤ 200 chars), safe to render in tooltips.
logostringAbsolute 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

StatusCodeMeaning
429too_many_requestsRate limited.
500internal_server_errorUnexpected AnyRouter failure.
502bad_gatewayCatalog generation failed (rare; falls back to cached copy).
503service_unavailableService is down.

Related