Skip to content

Code Examples

Complete, ready-to-use code examples for common TopRouter API operations.

Chat Completion

Basic Chat

python
from openai import OpenAI

client = OpenAI(
    api_key="sk-your-toprouter-key",
    base_url="https://toprouter.cc"
)

response = client.chat.completions.create(
    model="google/gemini-3.5-flash",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Explain quantum computing in simple terms"}
    ]
)

print(response.choices[0].message.content)
typescript
import OpenAI from 'openai';

const client = new OpenAI({
  apiKey: 'sk-your-toprouter-key',
  baseURL: 'https://toprouter.cc'
});

const response = await client.chat.completions.create({
  model: 'google/gemini-3.5-flash',
  messages: [
    { role: 'system', content: 'You are a helpful assistant.' },
    { role: 'user', content: 'Explain quantum computing in simple terms' }
  ]
});

console.log(response.choices[0].message.content);
bash
curl https://toprouter.cc/chat/completions \
  -H "Authorization: Bearer sk-your-toprouter-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "google/gemini-3.5-flash",
    "messages": [
      {"role": "system", "content": "You are a helpful assistant."},
      {"role": "user", "content": "Explain quantum computing in simple terms"}
    ]
  }'

Streaming Chat

python
from openai import OpenAI

client = OpenAI(
    api_key="sk-your-toprouter-key",
    base_url="https://toprouter.cc"
)

stream = client.chat.completions.create(
    model="anthropic/claude-4.6-sonnet",
    messages=[{"role": "user", "content": "Write a short story about AI"}],
    stream=True
)

for chunk in stream:
    content = chunk.choices[0].delta.content
    if content:
        print(content, end="", flush=True)
print()  # newline at end
typescript
import OpenAI from 'openai';

const client = new OpenAI({
  apiKey: 'sk-your-toprouter-key',
  baseURL: 'https://toprouter.cc'
});

const stream = await client.chat.completions.create({
  model: 'anthropic/claude-4.6-sonnet',
  messages: [{ role: 'user', content: 'Write a short story about AI' }],
  stream: true
});

for await (const chunk of stream) {
  const content = chunk.choices[0]?.delta?.content;
  if (content) process.stdout.write(content);
}
console.log();

Multi-Turn Conversation

python
from openai import OpenAI

client = OpenAI(
    api_key="sk-your-toprouter-key",
    base_url="https://toprouter.cc"
)

conversation = [
    {"role": "system", "content": "You are a Python tutor."}
]

def chat(user_message):
    conversation.append({"role": "user", "content": user_message})
    response = client.chat.completions.create(
        model="anthropic/claude-4.6-sonnet",
        messages=conversation
    )
    assistant_message = response.choices[0].message.content
    conversation.append({"role": "assistant", "content": assistant_message})
    return assistant_message

print(chat("What are Python decorators?"))
print(chat("Can you show me a practical example?"))
print(chat("How about a decorator with arguments?"))

Image Generation

python
from openai import OpenAI

client = OpenAI(
    api_key="sk-your-toprouter-key",
    base_url="https://toprouter.cc"
)

response = client.images.generate(
    model="openai/dall-e-3",
    prompt="A minimalist logo for an AI company, clean design, blue gradient",
    size="1024x1024",
    quality="hd",
    n=1
)

print(f"Image URL: {response.data[0].url}")

List Available Models

python
from openai import OpenAI

client = OpenAI(
    api_key="sk-your-toprouter-key",
    base_url="https://toprouter.cc"
)

models = client.models.list()
for model in models.data:
    print(f"{model.id} — owned by {model.owned_by}")

Error Handling

python
from openai import OpenAI, APIError, RateLimitError, AuthenticationError
import time

client = OpenAI(
    api_key="sk-your-toprouter-key",
    base_url="https://toprouter.cc"
)

def safe_chat(message, retries=3):
    for attempt in range(retries):
        try:
            response = client.chat.completions.create(
                model="google/gemini-3.5-flash",
                messages=[{"role": "user", "content": message}]
            )
            return response.choices[0].message.content
        except AuthenticationError:
            print("❌ Invalid API key")
            raise
        except RateLimitError:
            wait = 2 ** attempt
            print(f"⏳ Rate limited, waiting {wait}s...")
            time.sleep(wait)
        except APIError as e:
            if e.status_code >= 500:
                wait = 2 ** attempt
                print(f"🔄 Server error, retrying in {wait}s...")
                time.sleep(wait)
            else:
                raise
    raise Exception("Max retries exceeded")

result = safe_chat("Hello!")
print(result)

TIP

All examples use the same base_url and API key format. Simply change the model parameter to switch between different AI models.

Unified AI API Gateway — Access 200+ models through one endpoint.