https://gw.to11.ai/v1. It exposes chat ingress endpoints, model discovery, embeddings, token counting, image generation, audio (transcription + TTS), and file management. Each chat endpoint accepts one SDK’s wire format and forwards the request to the provider as written; the provider’s response comes back in that same format. The gateway does not translate between formats, so the provider a request resolves to must speak the endpoint’s format — see Wire format must match the provider.
Send
x-to11-authorization and x-to11-project-id on every request (see Authentication). For brevity, most examples on this page show only the upstream provider credential — Authorization: Bearer (or x-api-key for Anthropic-style requests) — and omit the two x-to11-* headers. Drop the provider credential entirely when it is managed in the dashboard.This page is the gateway — the data plane. It serves the model calls your application makes. The control plane is a separate API that manages what the gateway serves: prompts, versions, releases, providers and routing. It is reached through the TypeScript and Python SDKs, and its prompt endpoints — including the ones a skill is created, imported, released and rendered through — are described alongside the feature they belong to.The distinction matters for one case in particular: a skill is delivered to a developer’s machine and is never resolvable for inference, so no endpoint on this page will ever serve one.
Endpoints
The
model field determines which upstream provider handles the request. It names the provider or route with a prefix separated by :::
<provider-slug>::model— send to the connected provider with that routing identifier (e.g.anthropic::claude-sonnet-4-6)route::name— route to a named routefunction::name— route to a named function defined in your to11 project’s routing
gpt-4o) must carry the x-to11-provider-id header naming the provider; without it the request is rejected with 400 Bad Request. The examples on this page assume providers whose routing identifiers are openai and anthropic. See Naming the provider in a request.
Provider-native passthrough routes also exist under /v1/bedrock/*, /v1/vertex/*, and /v1/mistral/* for advanced provider-specific APIs; those forward request bodies to the upstream verbatim and are gated to providers that support them.
Headers
Authentication
Gateway requests use two independent credentials:-
Your to11 platform key authenticates the request to to11 and is sent in the
x-to11-authorizationheader. Thex-to11-project-idheader selects which project’s routing and provider configuration applies. -
The upstream provider credential. Either the project’s provider credentials are configured in the dashboard (project → Gateway), in which case you send nothing extra; or you pass your own provider key (BYOK) in the standard
Authorization: Bearer <provider-key>header (orx-api-keyfor Anthropic-style requests). The gateway forwards that key to the upstream provider.
The standard
Authorization header carries the upstream provider key, not your to11 key. Put the to11 key in x-to11-authorization. When provider credentials are managed in the dashboard, you can omit Authorization entirely.SDK detection
The gateway auto-detects the caller’s SDK format from the endpoint. Override with:Provider selection
Name the provider with a<provider-slug>::model prefix in the model field:
x-genai-provider header (openai | anthropic | xai) names a provider type, not one of your connected providers, and does not select where a request goes. If it is present alongside a prefix that is also a provider type name and the two disagree, the request is rejected.
Chat completions
OpenAI format
Anthropic format
Wire format must match the provider
Each chat endpoint carries one wire format, and the gateway forwards the request to the provider in that format:
Which SDK to call a provider with has the full list, including Google Gemini, Google Vertex AI, and AWS Bedrock. A request in a format the provider does not speak — such as a
/v1/chat/completions request with "model": "anthropic::claude-sonnet-4-6" — is rejected with 400 Bad Request and x-to11-error-code: cross_dialect before anything is sent to the provider. See Wire-format mismatch.
Streaming
Add"stream": true to any request to receive Server-Sent Events:
Structured output
response_format is an OpenAI Chat Completions field and reaches the provider unchanged:
text, json_object, json_schema) is supported is up to the provider and model; an unsupported one returns the provider’s error.
Tool calls
Thetools field reaches the provider unchanged, in the endpoint’s format: OpenAI function definitions with parameters on /v1/chat/completions, Anthropic definitions with input_schema on /v1/messages:
Models
List all configured models or retrieve a single model. The list holds each active provider’s listed models that its access policy serves in the request’s environment — no upstream provider call is made.id is the bare model id and owned_by is the provider’s routing identifier, so <owned_by>::<id> is the value to send in model. A provider that allows by default can serve models that are not listed here.
Embeddings
Passthrough proxy to OpenAI-compatible providers. The request is routed by itsmodel field, like a chat request. Anthropic models return 400 Bad Request.
Token counting
Passthrough proxy to Anthropic’s/messages/count_tokens endpoint. Only Anthropic models are supported — OpenAI models return 400 Bad Request.
{"input_tokens": 14}
Image generation
Passthrough proxy to OpenAI-compatible providers’ DALL-E endpoint. Anthropic models return400 Bad Request.
prompt field is scanned by the security pipeline when enabled. The image model must be one the provider’s access policy allows.
Audio transcription
Passthrough proxy to OpenAI’s Whisper endpoint. The request must bemultipart/form-data containing an audio file. No security scanning is applied (binary audio input).
Audio speech (TTS)
Passthrough proxy to OpenAI’s text-to-speech endpoint. Anthropic models return400 Bad Request.
input field is scanned by the security pipeline when enabled.
Files
Passthrough proxy to OpenAI’s file management endpoints. Supports upload (multipart), list, retrieve, download, and delete. Anthropic models return400 Bad Request. No security scanning is applied.
Response headers
The gateway adds these headers so clients can classify and correlate responses without parsing the body:Error responses
Errors are returned as a JSON object with a top-level
error key, in the caller’s SDK shape:
x-to11-error-code header rather than the body text. See Error handling for the full error-code taxonomy, when an error body is rewritten into your SDK’s envelope, and retry guidance.