Quickstart

Get started with AIRouter in minutes. Choose your preferred API style:

💡
Base URL: https://airouter.zbstream.com/v1

Install SDK

pip install openai
npm install openai

Make Your First Request

from openai import OpenAI

client = OpenAI(
    base_url="https://airouter.zbstream.com/v1",
    api_key="YOUR_API_KEY"
)

response = client.chat.completions.create(
    model="llama3.2:latest",
    messages=[
        {"role": "user", "content": "Hello!"}
    ]
)

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

const client = new OpenAI({
  baseURL: "https://airouter.zbstream.com/v1",
  apiKey: "YOUR_API_KEY"
});

const response = await client.chat.completions.create({
  model: "llama3.2:latest",
  messages: [{ role: "user", content: "Hello!" }]
});

console.log(response.choices[0].message.content);
curl https://airouter.zbstream.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "llama3.2:latest",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'
🦙
Base URL: https://airouter.zbstream.com (no /v1)

No SDK Required

Ollama native API uses simple HTTP requests. Just use requests (Python) or fetch (JavaScript).

pip install requests

Make Your First Request

import requests

response = requests.post(
    "https://airouter.zbstream.com/api/chat",
    headers={
        "Authorization": "Bearer YOUR_API_KEY",
        "Content-Type": "application/json"
    },
    json={
        "model": "llama3.2:latest",
        "messages": [
            {"role": "user", "content": "Hello!"}
        ]
    }
)

print(response.json()["message"]["content"])
const response = await fetch("https://airouter.zbstream.com/api/chat", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    model: "llama3.2:latest",
    messages: [{ role: "user", content: "Hello!" }]
  })
});

const data = await response.json();
console.log(data.message.content);
curl https://airouter.zbstream.com/api/chat \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "llama3.2:latest",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

Authentication

All API requests require an API key for authentication.

Getting Your API Key

  1. Create an account at Sign Up
  2. Go to your Dashboard
  3. Navigate to "API Keys" section
  4. Click "Create New API Key"

Using Your API Key

Include your API key in the Authorization header:

Authorization: Bearer YOUR_API_KEY

Models

AIRouter provides access to 550+ models across 500+ global endpoints.

Popular Models

ModelDescriptionUse Case
llama3.2:latestMeta's latest Llama modelGeneral purpose
qwen2.5:7bAlibaba's multilingual modelMultilingual tasks
deepseek-r1:7bAdvanced reasoning modelComplex reasoning
codellama:7bCode-specialized LlamaCode generation
llava:7bVision-language modelImage understanding

Browse all models →

Chat Completions

Generate conversational responses using chat models.

🟢 OpenAI Compatible
POST /v1/chat/completions
🦙 Ollama Native
POST /api/chat

Request Parameters

ParameterTypeRequiredDescription
modelstringYesModel ID (e.g., "llama3.2:latest")
messagesarrayYesArray of message objects
streambooleanNoEnable streaming (default: false)
temperaturenumberNoSampling temperature (0-2)
max_tokensintegerNoMaximum tokens to generate

OpenAI Compatible Example

from openai import OpenAI

client = OpenAI(
    base_url="https://airouter.zbstream.com/v1",
    api_key="YOUR_API_KEY"
)

response = client.chat.completions.create(
    model="llama3.2:latest",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "What is the capital of France?"}
    ],
    temperature=0.7
)

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

const client = new OpenAI({
  baseURL: "https://airouter.zbstream.com/v1",
  apiKey: "YOUR_API_KEY"
});

const response = await client.chat.completions.create({
  model: "llama3.2:latest",
  messages: [
    { role: "system", content: "You are a helpful assistant." },
    { role: "user", content: "What is the capital of France?" }
  ],
  temperature: 0.7
});

console.log(response.choices[0].message.content);
curl https://airouter.zbstream.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "llama3.2:latest",
    "messages": [
      {"role": "system", "content": "You are a helpful assistant."},
      {"role": "user", "content": "What is the capital of France?"}
    ],
    "temperature": 0.7
  }'

Ollama Native Example

import requests

response = requests.post(
    "https://airouter.zbstream.com/api/chat",
    headers={
        "Authorization": "Bearer YOUR_API_KEY",
        "Content-Type": "application/json"
    },
    json={
        "model": "llama3.2:latest",
        "messages": [
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "What is the capital of France?"}
        ]
    }
)

print(response.json()["message"]["content"])
const response = await fetch("https://airouter.zbstream.com/api/chat", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    model: "llama3.2:latest",
    messages: [
      { role: "system", content: "You are a helpful assistant." },
      { role: "user", content: "What is the capital of France?" }
    ]
  })
});

const data = await response.json();
console.log(data.message.content);
curl https://airouter.zbstream.com/api/chat \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "llama3.2:latest",
    "messages": [
      {"role": "system", "content": "You are a helpful assistant."},
      {"role": "user", "content": "What is the capital of France?"}
    ]
  }'

Streaming

Stream responses in real-time for better user experience.

🟢 OpenAI Compatible

Returns SSE format (Server-Sent Events)

🦙 Ollama Native

Returns NDJSON format (newline-delimited JSON)

OpenAI Compatible Streaming

from openai import OpenAI

client = OpenAI(
    base_url="https://airouter.zbstream.com/v1",
    api_key="YOUR_API_KEY"
)

stream = client.chat.completions.create(
    model="llama3.2:latest",
    messages=[{"role": "user", "content": "Tell me a story"}],
    stream=True
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://airouter.zbstream.com/v1",
  apiKey: "YOUR_API_KEY"
});

const stream = await client.chat.completions.create({
  model: "llama3.2:latest",
  messages: [{ role: "user", content: "Tell me a story" }],
  stream: true
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content || "");
}

Ollama Native Streaming

import requests

response = requests.post(
    "https://airouter.zbstream.com/api/chat",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
        "model": "llama3.2:latest",
        "messages": [{"role": "user", "content": "Tell me a story"}],
        "stream": True
    },
    stream=True
)

for line in response.iter_lines():
    if line:
        data = json.loads(line)
        print(data.get("message", {}).get("content", ""), end="")
const response = await fetch("https://airouter.zbstream.com/api/chat", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    model: "llama3.2:latest",
    messages: [{ role: "user", content: "Tell me a story" }],
    stream: true
  })
});

const reader = response.body.getReader();
const decoder = new TextDecoder();

while (true) {
  const { done, value } = await reader.read();
  if (done) break;
  const lines = decoder.decode(value).split("\\n");
  for (const line of lines) {
    if (line) {
      const data = JSON.parse(line);
      process.stdout.write(data.message?.content || "");
    }
  }
}

List Models

Retrieve the list of available models.

GET /v1/models
🔓
Note: This endpoint is public and does not require authentication.

Example

from openai import OpenAI

client = OpenAI(
    base_url="https://airouter.zbstream.com/v1",
    api_key="YOUR_API_KEY"
)

models = client.models.list()
for model in models.data:
    print(model.id)
curl https://airouter.zbstream.com/v1/models

OpenAI SDK

AIRouter is fully compatible with the official OpenAI SDK.

Configuration

Simply change the base_url to use AIRouter:

from openai import OpenAI

# Just change base_url to use AIRouter
client = OpenAI(
    base_url="https://airouter.zbstream.com/v1",
    api_key="YOUR_AIROUTER_API_KEY"
)

# Use any Ollama model
response = client.chat.completions.create(
    model="llama3.2:latest",
    messages=[{"role": "user", "content": "Hello!"}]
)
import OpenAI from "openai";

// Just change baseURL to use AIRouter
const client = new OpenAI({
  baseURL: "https://airouter.zbstream.com/v1",
  apiKey: "YOUR_AIROUTER_API_KEY"
});

// Use any Ollama model
const response = await client.chat.completions.create({
  model: "llama3.2:latest",
  messages: [{ role: "user", content: "Hello!" }]
});

Ollama Native API

Use Ollama's native API format for direct integration.

POST /api/chat
POST /api/generate

Example

import requests

response = requests.post(
    "https://airouter.zbstream.com/api/chat",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
        "model": "llama3.2:latest",
        "messages": [{"role": "user", "content": "Hello!"}]
    }
)

print(response.json())
curl https://airouter.zbstream.com/api/chat \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "llama3.2:latest",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

Text Completions

Generate text completions from a prompt.

🟢 OpenAI Compatible
POST /v1/completions
🦙 Ollama Native
POST /api/generate

Request Parameters

ParameterTypeRequiredDescription
modelstringYesModel ID
promptstringYesText prompt to complete
max_tokensintegerNoMaximum tokens to generate
streambooleanNoEnable streaming

OpenAI Compatible Example

curl https://airouter.zbstream.com/v1/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "llama3.2:latest",
    "prompt": "Write a poem about AI:"
  }'
from openai import OpenAI

client = OpenAI(
    base_url="https://airouter.zbstream.com/v1",
    api_key="YOUR_API_KEY"
)

response = client.completions.create(
    model="llama3.2:latest",
    prompt="Write a poem about AI:"
)

print(response.choices[0].text)

Ollama Native Example

curl https://airouter.zbstream.com/api/generate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "llama3.2:latest",
    "prompt": "Write a poem about AI:"
  }'
import requests

response = requests.post(
    "https://airouter.zbstream.com/api/generate",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
        "model": "llama3.2:latest",
        "prompt": "Write a poem about AI:"
    }
)

print(response.json()["response"])