Help
How to read and use this registry. Every page here is generated from the emitted catalog; nothing is hand-maintained. Start with the verification methodology if you care about where the facts come from.
What this is
A provenance-tracked registry of AI model providers. Three layers:
- Providers — an API you can get a key for (Anthropic, OpenRouter, AWS Bedrock, …): browse.
- Models — lab-owned canonical facts (release dates, modalities, open weights): browse.
- Offerings — the join: one provider serving one model on one endpoint, with its own wire ID, prices, limits, and reasoning spec. Facts attach to offerings, never to "the model in general" — the same model can behave differently on two endpoints of one provider.
Every fact carries a source URL and a verification date; the rules are on the Verify page.
Reading a provider page
- Getting credentials — every auth method the provider accepts, with the exact header scheme (
Authorization: Bearervsx-api-keyvsapi-key), key prefixes, env vars, and required extra headers (anthropic-version, …). OAuth entries record the flow (browser PKCE, device code) and the token transport — note that OAuth tokens do not always rideAuthorization(Anthropic OAuth tokens go inx-api-key). Request-signing auths (Bedrock SigV4) are marked as such — they cannot be expressed as a static header. - Endpoints — every base URL + path with its protocol:
openai-chat,openai-responses,anthropic-messages,google-generate-content, orbedrock-converse. The practical compatibility test is pointing the official SDK at the base URL; divergences land in quirks. - API surfaces — which operation families exist at all (text, streaming, embeddings, files, batch …). Absence is a fact: a provider with no embeddings endpoint says so here.
- Plan — subscription surfaces (coding plans, token plans) have no per-token prices; their quota and price live in the plan block instead.
- Quirks — verified divergences from the protocol: rejected parameters, silent ignores, fixed sampling params, rate-limit behavior. Each links to the doc that proves it.
Reading a model page
The Offerings table lists every provider × endpoint serving the model, with wire IDs (the exact string the API expects — often differing from the canonical name), status, price, and the reasoning badge. On the models list, the Providers count is unique providers; open the popover for each provider's wire IDs (×N marks a provider serving the model on N endpoints).
Reasoning chips
The badge's first word is the control style the surface accepts:
- budget token-budget control — send a number (
thinking.budget_tokens,thinkingBudget,reasoning.max_tokens, …). - effort enumerated effort — send one of none/minimal/low/medium/high/xhigh/max (
reasoning_effort,reasoning.effort). - toggle on/off object control (
thinking: { type: enabled },enable_thinking, …). - adaptive the provider adapts the effort itself; optionally settable.
- always_on reasoning is permanently on — there is no control to send.
- none the surface takes no reasoning parameter at all.
mandatory — thinking cannot be disabled on this surface; requesting "off" is an error, not a no-op. default is the value the surface assumes when you send nothing. returns says how the reasoning comes back:thinking_blocks (Anthropic content blocks),reasoning_content (DeepSeek-style field),reasoning_summary (OpenAI Responses summaries),thought_parts (Gemini parts), or hidden (you pay for tokens you never see).
round-trips marks what you must send back unmodified in later turns, or the API rejects the request:signature (Anthropic thinking signatures),thought_signature (Gemini thought signatures),encrypted_content (OpenAI Responses reasoning items), andreasoning_content (DeepSeek replay).
Status colors
- ga generally available.
- preview preview — behavior may change.
- deprecated sunset announced; move off it.
- retired no longer served.
Using the data
Machine-readable artifacts live at the download page:catalog.json (the full join), providers.json / models.json (normalized layers), and per-entity files under artifacts/providers/ and artifacts/models/.
The SDK turns them into wire-shaped calls:
import {
loadCatalog,
resolveModel,
authHeaders,
buildReasoningParam,
} from "@inference-providers/sdk"
const catalog = loadCatalog()
// Resolve a provider wire id to its canonical model + offering
const { model, offering, provider } = resolveModel(
catalog,
"anthropic",
"claude-sonnet-5",
)
// Auth headers for the provider's first auth method
const headers = authHeaders(provider, {
credential: process.env.ANTHROPIC_API_KEY!,
})
// The exact wire fragment for a high-effort adaptive-thinking request
const reasoning = buildReasoningParam(offering, {
kind: "effort",
effort: "high",
})
// => { output_config: { effort: "high" } }To check a live provider against the catalog, run the sync report (needs credentials for some providers; several public model lists work keyless):
pnpm --filter @inference-providers/sync run reportStaying current
- A daily sync enumerates live model lists and opens a drift issue for every addition or removal — each report is a verification ticket, not an auto-merge.
- Staleness gates: CI fails any fact whose source is older than 180 days and warns after 90.
Agent discovery
- Crawlers and AI agents are explicitly welcome: robots.txt allows all agents with Content Signals
ai-train=yes, search=yes, ai-input=yes, and a sitemap lists every page. - Machine-readable entry points live under
.well-known/(RFC 9727 API catalog, ARD manifest, agent-skills index) plusauth.md— see the Download page for the full list. - Two auditor suggestions are platform-limited here: response
Linkheaders andAccept: text/markdownnegotiation need origin-server control GitHub Pages doesn't offer. The equivalent pointers ship as HTML<link rel=…>tags on every page instead, and the artifacts are already plain JSON. DNS-based agent discovery needs a custom domain; the same files are all that is required once one is attached. WebMCP tool exposure and OAuth server metadata do not apply — this site serves public static data and runs no protected API or MCP server.
Troubleshooting / FAQ
- 401 with a key you know is valid — wrong key type or wrong key region. Coding-plan keys (Z.ai GLM Coding Plan, Kimi for Coding) only work on coding-plan endpoints; Kimi's
/anthropicendpoint wants Open Platform keys, never Kimi Code keys. Moonshot keys are bound to the console that issued them (platform.kimi.ai internationally vs the China console, platform.kimi.com). Baseten readsAuthorizationonly — the Anthropic SDK's defaultx-api-keyis ignored, overridedefault_headers. - Anthropic 400 on extended thinking —
budget_tokensmust be smaller thanmax_tokens(and at least 1024). The registry records the constraint on the offering. - Prices show "—" — either the offering rides a subscription (see the provider's plan block; usage is quota'd, not metered) or the price is unverified. Unknown is not free: a price of 0 only appears with a source proving it.