Choose the API shape your client already speaks, then check the features it uses. RedRouter translates three generation interfaces into the selected model's capabilities. A compatible request shape does not imply support for every feature of the original service.
Choose an endpoint
| Interface | Endpoint | Best fit | Output limit field |
|---|---|---|---|
| Chat Completions | POST /v1/chat/completions | Message-list applications and function tools | max_tokens or max_completion_tokens |
| Responses | POST /v1/responses | Responses clients, function and freeform tools | max_output_tokens |
| Messages | POST /v1/messages | Messages clients and block-based tool histories | Required max_tokens |
| Token counting | POST /v1/messages/count_tokens | Conservative preflight input estimates | No output generation |
Use https://redrouter.org/v1 as an OpenAI-compatible SDK base URL and https://redrouter.org as a Messages SDK base URL. The latter client adds /v1/messages. Generation requires an API key and non-trial funding. See Authentication and Quickstart.
All generation endpoints are stateless. Send complete relevant history on every turn. Model IDs, prices, defaults, and capabilities come from the catalog. Current output limits are at most 8,192 tokens per request; larger requested limits are capped. Requests have a 12000000-byte body limit, including JSON and base64 media.
Supported behavior
| Capability | Chat Completions | Responses | Messages |
|---|---|---|---|
| Text generation and streaming | Yes | Yes | Yes |
| Client-executed tools | Function tools | Function, custom, and one-level namespaces | tool_use / tool_result |
| Tool-choice controls | Capability-dependent | Capability-dependent | Capability-dependent |
| JSON schema output | Requires response-format support | Requires response-format support | Schema mode when supported; instruction-only fallback otherwise |
| Image input | User and tool image parts | User images and tool-result images | User images and tool-result images |
| Server-managed conversation state | No | No | No |
| Hosted search, browser, shell, or code execution | No | No | No |
Images require an image-capable model and valid base64 PNG, JPEG, or WebP data. Other images become explicit omission notices rather than causing a content rejection. Documents do not become readable by choosing an image model. See Images, Structured output, and Tool calling.
Accepted without the requested feature
These controls keep common clients working but do not activate the original service's behavior:
| Field or feature | RedRouter behavior |
|---|---|
| Reasoning effort, thinking budgets | Accepted in the endpoint's supported shape and ignored. No configurable reasoning budget. |
Cache hints and Responses prompt_cache_key | Ignored. Cache availability and reported hits determine pricing. |
Responses store | Boolean accepted; output always reports store: false. No retrievable response resource. |
Responses truncation | Accepted values are auto and disabled; no server truncation occurs. |
Responses service_tier, metadata, include, text verbosity | Accepted in supported shapes and ignored. |
| Messages metadata, supported context-management no-op | Accepted and ignored; your client must manage history. |
Function strict | Accepted on Chat and Responses as a hint; validate arguments yourself. |
| Responses custom-tool grammar | Accepted as a hint; not enforced. |
These are deliberate, narrow compatibility allowances. A field can still return 400 when its shape or value is invalid. See Reasoning and Prompt caching for details.
Messages drops declared server web tools and tells the model those tools are unavailable. Supplied deferred client-tool definitions load immediately; tool discovery does not run. Responses ignores only the exact declaration {"type":"web_search","external_web_access":false} used by some clients; it performs no search.
Rejected or unavailable
Unknown request parameters return 400. Check the individual endpoint guide before forwarding a full request object from another service.
Responses rejects previous_response_id and conversation, including null values. Files and hosted tool input types are rejected. Response retrieval and deletion routes are unavailable. Messages rejects safeguards because server-side tool safety classification is unavailable; configure manual permissions in the client. Other context-editing operations are rejected.
There are no embeddings, audio, image-generation, fine-tuning, file-upload, batch-processing, or managed-agent APIs in this contract. For bulk work, build a bounded client queue using Dataset generation. For existing applications, follow Migration and Integrations.
A customer-configurable policy gateway, organization/project administration API, administrative MCP server, and SSO are also outside this documented platform surface. Apply your application's own permissions and budgets; API keys do not add those organization-management features.
Verify a client integration
Start with a minimal text request and an explicit output limit. Add tools, then streaming, then any structured or image inputs separately. Inspect the actual outbound body when a client sends an unsupported field. Confirm terminal status and reported usage before measuring success or cost. Avoid logging keys or sensitive prompts while debugging.
SDK syntax is maintained by its publisher; RedRouter's supported behavior is defined by these guides and schemas. The official Python SDK and official Node.js SDK describe custom-client and streaming interfaces. Pin a working SDK version in your application and rerun your own integration checks when upgrading. See Troubleshooting.