Install
pip install openai
Configure
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.routeur.ai/v1",
api_key=os.environ["ROUTEUR_KEY"],
)
Example
res = client.chat.completions.create(
model="auto",
messages=[{"role": "user", "content": "Say hello in one short sentence."}],
)
print(res.choices[0].message.content)
# Inspect routing metadata (non-standard field, available via .model_dump()):
print(res.model_dump().get("routeur"))
Streaming
stream = client.chat.completions.create(
model="auto",
stream=True,
messages=[{"role": "user", "content": "Stream a haiku."}],
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
Async client
from openai import AsyncOpenAI
client = AsyncOpenAI(
base_url="https://api.routeur.ai/v1",
api_key=os.environ["ROUTEUR_KEY"],
)
res = await client.chat.completions.create(
model="auto",
messages=[{"role": "user", "content": "Hi"}],
)
Choosing a model
Every request picks an upstream model in one of three ways — in this order of precedence:
- Routeur-* request headers. If
Routeur-ProviderorRouteur-Modelare set, they win, regardless of what is in the body. Useful from middleware or transports that can't change the JSON. - An explicit upstream id in
model. Pass something like"gpt-4o-mini"or"claude-3-5-sonnet"to bypass routing rules and pin the request to that model. model="auto"(or any alias). Lets routeur.ai pick the upstream model from your routing rules. This is the recommended default.
Force a specific provider+model on a single call via headers (the body's model is ignored when headers are set):
res = client.chat.completions.create(
model="auto",
messages=messages,
extra_headers={
"Routeur-Provider": "openai",
"Routeur-Model": "gpt-4o",
},
)