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 | openai.models.json (84) | openai 7.10 |
Responses API (store:false, encrypted reasoning replay) |
research/openai/ |
| Anthropic | 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 | gemini.models.json (19) | @google/genai 2.21 |
generateContentStream (thinkingLevel/budget per family, thought signatures) |
research/gemini/ |
| xAI | xai.md | 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 | 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 | 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 | 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 | 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]`) |
| Cerebras | cerebras.md | 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/<provider>/catalog*.ts— capability sheets, parameter support, pricing, lifecycle.src/lib/ai/providers/<provider>/index.ts— request translation that only sends what the model accepts; the OpenAI-compatible providers shareproviders/shared/openai-compat/{factory,chat-completions}.ts.docs/provider-test-matrix.md— generated bypnpm providers:matrixfrom live requests (13 capabilities × 9 providers).
Re-audit procedure (before every release)
pnpm models:sync— refresh the registry from the live listing endpoints; checkmodel_sync_runsfor removed/added ids.- Re-fetch the docs pages linked at the bottom of each report; update the catalog data when parameters, limits or prices moved.
pnpm providers:matrix— must be all ✅; investigate any ❌ before shipping.- Bump
Last documentation auditin this file and in each report.