Cohere through one OpenAI-compatible gateway
Use Cohere’s chat, embeddings, and rerank through the OpenAI-compatible endpoint. Routeplane translates to and from Cohere’s native v2 API, so you keep one client — and add fallback, guardrails, and residency.
Cohere’s API is not OpenAI-shaped — it uses /v2/chat, /v2/embed, and /v2/rerank with their own field names. Routeplane’s adapter does full bidirectional translation, so from your side Cohere is an ordinary OpenAI chat completion (and a first-class rerank surface).
Cohere is the one first-party adapter that implements rerank, which makes it a strong retrieval companion behind the same gateway as your chat models.
Drop in your OpenAI client
Point your existing OpenAI SDK at the gateway and add two headers — your virtual key and the provider. Nothing else about your code changes.
curl https://api.routeplane.ai/v1/chat/completions \
-H "content-type: application/json" \
-H "x-routeplane-api-key: rp_your_gateway_key" \
-H "x-routeplane-provider: cohere" \
-d '{"model":"command-r-plus","messages":[{"role":"user","content":"Hello!"}]}'
import openai
client = openai.OpenAI(
api_key="rp_your_gateway_key",
base_url="https://api.routeplane.ai/v1",
default_headers={
"x-routeplane-api-key": "rp_your_gateway_key",
"x-routeplane-provider": "cohere", # route to Cohere
},
)
resp = client.chat.completions.create(
model="command-r-plus",
messages=[{"role": "user", "content": "Hello!"}],
)
print(resp.choices[0].message.content)
import OpenAI from 'openai';
const client = new OpenAI({
apiKey: 'rp_your_gateway_key',
baseURL: 'https://api.routeplane.ai/v1',
defaultHeaders: {
'x-routeplane-api-key': 'rp_your_gateway_key',
'x-routeplane-provider': 'cohere', // route to Cohere
},
});
const completion = await client.chat.completions.create({
model: 'command-r-plus',
messages: [{ role: 'user', content: 'Hello!' }],
});
console.log(completion.choices[0]?.message.content);
Or use the Routeplane SDK
The Routeplane SDKs subclass the official OpenAI clients, wire up the x-routeplane-* headers for you, and add typed access to routing metadata and the non-OpenAI surfaces.
pip install routeplane
from routeplane import Routeplane
client = Routeplane(
api_key="rp_your_gateway_key",
provider="cohere", # route to Cohere
)
resp = client.chat.completions.create(
model="command-r-plus",
messages=[{"role": "user", "content": "Hello!"}],
)
print(resp.choices[0].message.content)
npm i @routeplane/sdk
import { Routeplane } from '@routeplane/sdk';
const client = new Routeplane({
apiKey: process.env.ROUTEPLANE_API_KEY!, // rp_...
provider: 'cohere', // route to Cohere
});
const completion = await client.chat.completions.create({
model: 'command-r-plus',
messages: [{ role: 'user', content: 'Hello!' }],
});
console.log(completion.choices[0]?.message.content);
Add a fallback chain
Try Cohere first; fall back to OpenAI. Make the provider header a comma-separated list and the gateway walks it in order, skipping any provider whose circuit is open.
curl https://api.routeplane.ai/v1/chat/completions \
-H "content-type: application/json" \
-H "x-routeplane-api-key: rp_your_gateway_key" \
-H "x-routeplane-provider: cohere,openai" \
-d '{"model":"command-r-plus","messages":[{"role":"user","content":"Hello!"}]}'
Cohere on the gateway
The adapter supports chat completions, native streaming, embeddings, and rerank (Cohere is the only first-party rerank provider).
Rerank on the same gateway
Call /v1/rerank and the adapter maps it to Cohere’s /v2/rerank. That lets you keep retrieval reranking on the same authenticated, audited gateway as your completions.
Faithful v2 translation
Chat options map to Cohere’s v2 shape (top_p → p, JSON response formats to json_object, tool choice to REQUIRED/NONE), and usage is read from Cohere’s billed-units so cost accounting stays accurate.
Cohere model pricing
List prices for the Cohere models you can call through the gateway — click any model for its per-token cost page.
Sovereign routing
Sovereign routing works with Cohere the same way it works everywhere: add x-routeplane-residency to a request, and when the gateway classifies regulated personal data in it, only providers resident in the requested region stay eligible — a hard constraint that overrides the provider header. Declare where Cohere runs by setting COHERE_REGION.
Keep reading
- Quickstart — send your first request in a few minutes.
- Providers & routing strategy — how eligibility, fallback, and strategies work.
- Python SDK and TypeScript SDK — the full typed clients.
- All providers — every model provider behind the gateway.
Frequently asked questions
Is Routeplane a drop-in replacement for calling Cohere directly?
Yes. The gateway is OpenAI-compatible, so switching is a base-URL change — point your existing OpenAI SDK at https://api.routeplane.ai/v1 and set the x-routeplane-provider header to cohere. You keep your code and gain automatic fallback, in-data-plane PII guardrails, sovereign routing, and per-team cost attribution. Routeplane translates your OpenAI-shaped request into Cohere's native API and maps the response back, so you never touch that format.
Which Cohere models can I use through Routeplane?
Any Cohere model the provider serves. See the list prices linked above for the ones we publish.
Can I enforce data residency on Cohere requests?
Yes. Add the x-routeplane-residency header (for example IN) and, when a request carries regulated personal data, the gateway restricts routing to providers eligible in that region — overriding the provider header if it has to. The Cohere adapter reads COHERE_REGION to declare where it is resident.
Route your first request this week.
Point your existing OpenAI-compatible client at Routeplane, set one header, and get fallback, guardrails, and sovereign routing across every provider.