# Router One API Compatibility Facts

Last updated: 2026-08-22

- Product: Router One
- Category: LLM API Gateway / AI Model Router
- Scope: which wire formats and request features the gateway accepts on each endpoint, and what it rejects before calling any model; per-model capability flags live in the catalog, not here
- OpenAI-compatible base URL: https://api.router.one/v1
- Anthropic-compatible / Claude Code base URL: https://api.router.one
- API key format: sk-rk-...; send it as Authorization: Bearer on every endpoint below

## Endpoints

- POST https://api.router.one/v1/chat/completions: OpenAI Chat Completions wire format; serves every chat model in the catalog
- POST https://api.router.one/v1/messages: Anthropic Messages wire format (the path Claude Code uses); serves the Claude family and DeepSeek V4 (deepseek-v4-pro, deepseek-v4-flash)
- POST https://api.router.one/v1/responses: OpenAI Responses wire format (the path Codex CLI uses); served natively for the GPT family and DeepSeek V4 — the authoritative list is the set of models whose detail page lists POST /v1/responses
- POST https://api.router.one/v1/images/generations: image-generation models (flat per-image pricing; see the pricing facts)
- POST https://api.router.one/v1/videos/generations and GET https://api.router.one/v1/videos/generations/{task_id}: video-generation models; submit, then poll the task id
- Endpoint rule: each model's detail page linked from https://router.one/models lists exactly the endpoints that model serves; https://router.one/models.md is the machine-readable source of truth and overrides any family shorthand above
- No cross-protocol promise: a model is reachable only on the endpoints its detail page lists; Router One does not advertise a translation path from one wire format to another

## Responses API (POST /v1/responses)

- Accepted on every model the endpoint serves: text and multi-part input, instructions, streaming, and function tools
- Accepted on natively served Responses models (GPT family, DeepSeek V4) and billed at the model's standard token rate: custom tools; previous_response_id, conversation, and prompt references; hosted tools (file_search, code_interpreter, computer_use, mcp, web_search); file_id and file_url input parts; every service_tier value
- Hosted-tool boundary: hosted tool fields are accepted on the endpoint and metered — Router One does not execute tools itself (see the trust boundary below)
- Rejected with HTTP 400 invalid_request before any model is called: the image_generation tool and image_generation_call input items (use POST /v1/images/generations instead), and background: true

## Streaming, tool calling, vision

- Streaming (stream: true), tool calling, and vision input are per-model capability flags published in the catalog; https://router.one/models.md is the source of truth and this sheet does not hand-enumerate models
- Streaming guide: https://router.one/llm-streaming; tool-calling guide: https://router.one/llm-tool-calling

## Structured outputs (POST /v1/chat/completions)

- response_format.type = json_object and response_format.type = json_schema are both accepted
- Envelope validation happens at the gateway, before any model is called: a json_schema request is rejected with HTTP 400 invalid_request when response_format.json_schema is missing ("response_format.json_schema is required when response_format.type is json_schema"), when json_schema.name is missing ("response_format.json_schema.name is required"), or when json_schema.schema is missing ("response_format.json_schema.schema is required"); strict and description are optional
- A valid response_format object is forwarded to the model unchanged; whether the schema is enforced is decided by the model, when the model supports it — Router One does not validate response bodies against the schema
- Schema-dialect failover: when a model route rejects a schema for using $defs or $ref, the gateway treats that as a route-specific 400 and fails over to the next candidate route for the same model
- Guide: https://router.one/llm-structured-outputs

## Token accounting

- Reasoning / thinking tokens: output produced by thinking or reasoning models (for example the claude-*-thinking variants) is billed at that model's posted output rate and counted in the request's total token count; there is no separate reasoning price line (see the pricing facts)

## Not included

- Gateway-side response caching, request-body retention, or any wire-format conversion beyond the endpoint rows above
- Trust boundary: Router One handles model invocation, routing, billing, and observability; it is not an agent orchestration runtime, workflow engine, tool executor, vector database, or application framework

## Canonical pages

- OpenAI-compatible API: https://router.one/openai-compatible-api
- Codex CLI and the Responses API: https://router.one/codex-responses-api
- Tool calling: https://router.one/llm-tool-calling
- Streaming: https://router.one/llm-streaming
- Structured outputs: https://router.one/llm-structured-outputs
- Documentation: https://router.one/docs (markdown: https://router.one/docs.md)
- Model catalog: https://router.one/models (markdown: https://router.one/models.md)
- Integration facts: https://router.one/facts/integrations.md
- Pricing facts: https://router.one/facts/pricing.md
- Company facts: https://router.one/facts/company.md
