Skip to main content
Auriko’s gateway and extensions parameters use identical structure in Chat Completions and the Response API. Pass them at the top level of the request body.

Prerequisites

  • An Auriko API key
  • Python 3.10+ with the OpenAI SDK (pip install openai) or the Auriko SDK (pip install auriko)
    • OR Node.js 18+ with the OpenAI SDK (npm install openai) or @auriko/sdk (npm install @auriko/sdk)

Route across models

Route a request across multiple models:
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["AURIKO_API_KEY"],
    base_url="https://api.auriko.ai/v1"
)

response = client.responses.create(
    input="What is the capital of France?",
    extra_body={
        "gateway": {
            "models": ["gpt-4o", "claude-sonnet-4-20250514"],
            "routing": {"optimize": "cost"}
        }
    }
)

print(response.output_text)

Set routing options

Control routing strategy with gateway.routing:
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["AURIKO_API_KEY"],
    base_url="https://api.auriko.ai/v1"
)

response = client.responses.create(
    input="Summarize the benefits of solar energy",
    extra_body={
        "gateway": {
            "models": ["gpt-4o", "claude-sonnet-4-20250514", "gemini-2.5-flash"],
            "routing": {
                "optimize": "cost",
                "max_cost_per_1m": 5.0,
                "max_ttft_ms": 2000
            }
        }
    }
)

print(response.output_text)
See Routing Options for all strategies and Advanced Routing for constraint combinations.

Pass provider extensions

Pass provider-specific parameters with extensions:
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["AURIKO_API_KEY"],
    base_url="https://api.auriko.ai/v1"
)

response = client.responses.create(
    model="claude-sonnet-4-20250514",
    input="Write a haiku about programming",
    extra_body={
        "extensions": {
            "anthropic": {
                "metadata": {"user_id": "user-123"}
            }
        }
    }
)

print(response.output_text)
See Extensions and Thinking for all provider extension fields.

Access routing metadata

Every Auriko response includes routing metadata with provider, cost, and latency details. With the Auriko SDK (Python, TypeScript):
import os
from auriko import Client

client = Client(
    api_key=os.environ["AURIKO_API_KEY"],
    base_url="https://api.auriko.ai/v1"
)

response = client.responses.create(
    model="gpt-4o",
    input="Hello!"
)

meta = response.routing_metadata
print(f"Provider: {meta.provider}")
print(f"Model: {meta.provider_model_id}")
print(f"Strategy: {meta.routing_strategy}")
print(f"TTFT: {meta.ttft_ms}ms")
print(f"Throughput: {meta.throughput_tps} tps")
if meta.cost:
    print(f"Cost: ${meta.cost.usd}")
For routing metadata with the OpenAI SDK, see OpenAI Compatibility. For streaming, access routing metadata from the completed response:
import os
from auriko import Client

client = Client(
    api_key=os.environ["AURIKO_API_KEY"],
    base_url="https://api.auriko.ai/v1"
)

stream = client.responses.create(
    model="gpt-4o",
    input="Hello!",
    stream=True
)

for event in stream:
    if event.type == "response.output_text.delta":
        print(event.delta, end="", flush=True)

meta = stream.completed_response.routing_metadata
print(f"\nProvider: {meta.provider}, Cost: ${meta.cost.usd}")
For routing metadata with the OpenAI SDK, see OpenAI Compatibility. Fields: provider, provider_model_id, model_canonical, routing_strategy, ttft_ms, throughput_tps, cost.usd. See Routing Options, Advanced Routing, Response Metadata, and Response Headers for details.