# Provider research — index **Last documentation audit: 2026-09-08** (all nine providers) PolyLLM never relies on remembered API shapes. Before each adapter was written, the CURRENT official documentation was fetched and every claim that matters for the adapter was **probed against the real API** with the owner's keys. The per-provider reports below contain the base URLs, auth, SDKs and versions, streaming protocols and event names, tool/structured-output formats, reasoning controls, modalities, limits, parameter support matrices with exact rejection strings, error schemas, rate limits, pricing, lifecycle, and the probe scripts that produced the evidence. | Provider | Report | Model data | SDK used | Primary API | Probe scripts | | --- | --- | --- | --- | --- | --- | | OpenAI | [openai.md](provider-research/openai.md) | [openai.models.json](provider-research/openai.models.json) (84) | `openai` 7.10 | Responses API (`store:false`, encrypted reasoning replay) | `research/openai/` | | Anthropic | [anthropic.md](provider-research/anthropic.md) | Models API (live capabilities) + `providers/anthropic/catalog.ts` (pricing) | `@anthropic-ai/sdk` 0.124 | Messages API (adaptive thinking, `output_config`) | `scripts/provider-matrix.ts` | | Google Gemini | [gemini.md](provider-research/gemini.md) | [gemini.models.json](provider-research/gemini.models.json) (19) | `@google/genai` 2.21 | `generateContentStream` (thinkingLevel/budget per family, thought signatures) | `research/gemini/` | | xAI | [xai.md](provider-research/xai.md) | [xai.models.json](provider-research/xai.models.json) (7) | `openai` 7.10 @ `api.x.ai/v1` | Chat Completions (+ `/v1/responses` for server-side web search) | `research/xai/` | | Mistral AI | [mistral.md](provider-research/mistral.md) | [mistral.models.json](provider-research/mistral.models.json) (10) + live `/v1/models` capabilities | `openai` 7.10 @ `api.mistral.ai/v1` (bodies translated: `random_seed`, `max_tokens`, `reasoning_effort` none/high, `document_url`) | Chat Completions | `research/mistral/` | | DeepSeek | [deepseek.md](provider-research/deepseek.md) | [deepseek.models.json](provider-research/deepseek.models.json) (3) | `openai` 7.10 @ `api.deepseek.com/v1` | Chat Completions (`thinking` + `reasoning_effort` low/high/max, `json_object` only) | `research/deepseek/` | | Kimi (Moonshot AI) | [kimi.md](provider-research/kimi.md) | [kimi.models.json](provider-research/kimi.models.json) (4) + live `/v1/models/{id}` | `openai` 7.10 @ `api.moonshot.ai/v1` | Chat Completions (`thinking`, `reasoning_effort` low/high/max, temperature fixed at 1) | `research/kimi/` | | OpenRouter | [openrouter.md](provider-research/openrouter.md) | [openrouter.models.json](provider-research/openrouter.models.json) (29 representative) — registry built live from `/api/v1/models/user` (~400) | `openai` 7.10 @ `openrouter.ai/api/v1` | Chat Completions (`reasoning{effort|max_tokens}`, `usage.cost`, `plugins:[web]`) | `research/openrouter/` | | Cerebras | [cerebras.md](provider-research/cerebras.md) | [cerebras.models.json](provider-research/cerebras.models.json) (3) | `openai` 7.10 @ `api.cerebras.ai/v1` | Chat Completions (strict validation, `reasoning_effort`, `delta.reasoning`) | `research/cerebras/` | The verified behaviour is encoded in code, not prose: - `src/lib/ai/providers//catalog*.ts` — capability sheets, parameter support, pricing, lifecycle. - `src/lib/ai/providers//index.ts` — request translation that only sends what the model accepts; the OpenAI-compatible providers share `providers/shared/openai-compat/{factory,chat-completions}.ts`. - `docs/provider-test-matrix.md` — generated by `pnpm providers:matrix` from live requests (13 capabilities × 9 providers). ## Re-audit procedure (before every release) 1. `pnpm models:sync` — refresh the registry from the live listing endpoints; check `model_sync_runs` for removed/added ids. 2. Re-fetch the docs pages linked at the bottom of each report; update the catalog data when parameters, limits or prices moved. 3. `pnpm providers:matrix` — must be all ✅; investigate any ❌ before shipping. 4. Bump `Last documentation audit` in this file and in each report.