Skip to main content

Routing

client.routing controls how the gateway selects a provider for each request. See Routing concepts for a full explanation of strategies.

Get the current config

config = client.routing.get_config()
print(config["strategy"])

Update routing config

client.routing.update_config({
"strategy": "balanced", # "balanced" | "cheapest" | "fastest" | "highest_quality" | "manual"
"policy": {"fallback_behavior": "allow_commercial"},
})

See Fallback for what fallback_behavior actually controls. It decides what happens when no provider passes your policy constraints, not whether the gateway retries on a provider error.

Model aliases

# Create or update an alias
client.routing.set_alias("smart", "gpt-4o")
client.routing.set_alias("fast", "gpt-4o-mini")
client.routing.set_alias("coding", "claude-sonnet-4-6")

# List all aliases
aliases = client.routing.list_aliases()

# Delete an alias
client.routing.delete_alias("coding")

Using the alias in a chat call:

client.chat.complete(
model="smart", # resolves to gpt-4o at gateway level
messages=[{"role": "user", "content": "Review this code."}],
)

Routing history

result = client.routing.list_history(limit=20, provider="openai", strategy="balanced")
decision = client.routing.get_decision(result["decisions"][0]["id"])
print(decision["selectedProvider"], decision["candidates"])