# AtmoRouter — Compatibility

Source: https://atmorouter.dev/docs/compatibility

AtmoRouter is a metered gateway with two inference protocols. Match your client to an implemented protocol before changing its base URL. Examples use illustrative model IDs; check the live catalog before deploying.

## Protocol support

| Capability | Contract |
| --- | --- |
| OpenAI Chat Completions | POST /v1/chat/completions: JSON, SSE, and model-dependent tools/structured output. |
| Anthropic Messages | POST /v1/messages: JSON and native SSE. max_tokens is required. |
| Model discovery | GET /v1/models: public retail catalog; a valid owner API key also includes that account’s callable combo/ IDs. The public response alone does not validate a key. |
| OpenAI Responses API | No public /v1/responses endpoint. The helper offers an explicit localhost Codex bridge for a limited stateless text and function-tool subset. |
| Embeddings, image/video/audio generation | No dedicated generation or embeddings endpoints. Catalog metadata is not a promise of callable modality support. |
| MCP and publisher management | No public AtmoRouter MCP server or publisher API. |
| Combos | Private combo/<slug> IDs work in Chat Completions and Anthropic Messages with an owner API key. Choose round-robin, failover, or cheapest; member eligibility and normal billing still apply. |
| Provider-specific extensions | Unknown inference fields may be forwarded; support and behavior depend on the upstream model. |

## Client compatibility is more than a base URL

Select a Chat Completions-compatible provider in your agent. For OpenCode use `@ai-sdk/openai-compatible`. The helper configures Claude Code, OpenCode, Oh My Pi, and Continue, guides supported IDE settings, and can explicitly launch a local Codex bridge. Token-counting endpoints, built-in Responses tools, stateful sessions, and other provider extensions can remain incompatible. Agent features depend on the client and model.

## Migration checklist

1. Create an AtmoRouter key; provider keys are not portable.
2. Choose an enabled model with the features your application needs.
3. Set the protocol-specific base URL and send a short bounded request.
4. Check text/tool behavior, streaming completion, recorded usage, and cost.
5. Move traffic gradually; keep the previous configuration available for rollback.
