DodoRouter
Get Started
Docs / Supported Providers
Browse docs
View as Markdown

Supported providers

Each row is a distinct adapter. Where a provider offers both a pay-as-you-go API and a flat-rate coding subscription, they're listed as separate key types since they use different base URLs and pricing.

Provider Key type(s) Auth Notes
OpenAI openai Bearer GPT-4o/4.1, o1/o3, GPT-5.x
OpenAI Codex (ChatGPT) openai-codex OAuth (device flow, in-app) Uses your ChatGPT plan's included usage rather than per-token billing; cost tracked as $0
Anthropic anthropic x-api-key Claude models
Anthropic (Claude Pro/Max) anthropic_oauth Bearer setup-token Paste a token from claude setup-token (run the Claude Code CLI's own command); flat-rate, no per-token cost
Google Gemini google Query param Gemini 1.5/2.x family
Groq groq Bearer Fast inference on open models
Mistral mistral Bearer Mistral/Codestral family
Cohere cohere Bearer Command family, Cohere's v2 chat API
DeepSeek deepseek Bearer deepseek-chat, deepseek-reasoner
Moonshot / Kimi moonshot Bearer Pay-as-you-go API
Moonshot / Kimi Code moonshot_coding Bearer Flat-rate coding subscription plan, $0 marginal cost
xAI (Grok) xai Bearer Grok family
z.ai (GLM) zai_standard Bearer Pay-as-you-go API
z.ai Coding Plan zai_coding Bearer Flat-rate coding subscription plan, $0 marginal cost

Every adapter normalizes provider-specific quirks so the fallback chain "just works": each provider signals a context-window overflow differently (Anthropic returns a 400 with "prompt is too long" in the message; z.ai returns HTTP 200 with finish_reason: "model_context_window_exceeded"; OpenAI uses an explicit error code) and DodoRouter detects all of these and treats them the same way — as a fallback-eligible error, unless you've turned on "Skip fallback on context overflow". Cache-token reporting (for cost and cache-hit-rate tracking) is likewise normalized across each provider's own field names.