Переход с OpenRouter на TeamoRouter

Переход с OpenRouter — это три изменения: base URL, API-ключ и ID модели (уберите префикс vendor/). Остальная настройка OpenAI SDK не меняется.

У нового аккаунта баланс $0 — пополните его до первого запроса. Пополнить можно от $5. Если запрос возвращает 402 (400 для формата OpenAI) с текстом «wallet balance is insufficient», значит, баланс пуст, а base URL и ключ настроены правильно. Пополните баланс и повторите запрос.

1. Что поменять

OpenRouter TeamoRouter
Base URL (формат OpenAI) https://openrouter.ai/api/v1 https://api.teamorouter.cn/v1
API-ключ sk-or-v1-... sk-teamo-..., создаётся в консоли
Заголовок авторизации Authorization: Bearer <key> Формат OpenAI: Authorization: Bearer <key>
ID модели vendor/model, например deepseek/deepseek-v4-pro Без префикса, например deepseek-v4-pro

2. Соответствие ID моделей

Уберите префикс vendor/. ID с префиксом возвращает 400 model_not_available.

ID модели в OpenRouter ID модели в TeamoRouter
deepseek/deepseek-v4.1-flash-1017 deepseek-flash-1017
deepseek/deepseek-v4.1-flash deepseek-flash
deepseek/deepseek-v4-flash-vision-exp deepseek-v4-flash-vision-exp
deepseek/deepseek-v4-pro deepseek-v4-pro
deepseek/deepseek-v4-flash deepseek-v4-flash
moonshotai/kimi-k3.1-pro kimi-k3.1-pro
moonshotai/kimi-k3 kimi-k3
qwen/qwen3.8-flash qwen3.8-flash
qwen/qwen3.7-max qwen3.7-max
qwen/qwen3.7-flash qwen3.7-flash
z-ai/glm-5.3-flash glm-5.3-flash
z-ai/glm-5.3 glm-5.3
z-ai/glm-5.2 glm-5.2

В таблице — основные модели, которые есть у обоих сервисов; она собрана из публичных списков моделей обоих сервисов 2026-11-04. Остальные модели и актуальные цены — в каталоге моделей или через GET /v1/models.

  • У openrouter/auto и псевдонимов вида ~vendor/...-latest аналога нет. Выберите конкретный ID из таблицы.
  • Суффиксы :nitro, :floor, :online и :batch не поддерживаются. Уберите суффикс. Бесплатные модели — это отдельные ID с окончанием -free; они отмечены в каталоге моделей.

3. Заголовки, которые можно удалить

HTTP-Referer, X-OpenRouter-Title (раньше X-Title), X-OpenRouter-Categories и X-OpenRouter-App-Visibility нужны OpenRouter только для того, чтобы показать ваше приложение в публичных рейтингах. TeamoRouter их не использует. Удалите их при переходе.

4. Изменения в коде

Python (OpenAI SDK)

До:

python
from openai import OpenAI

client = OpenAI(
    base_url="https://openrouter.ai/api/v1",
    api_key="sk-or-v1-xxxxxx",
)

resp = client.chat.completions.create(
    model="deepseek/deepseek-v4-pro",
    messages=[{"role": "user", "content": "Привет"}],
    extra_headers={"HTTP-Referer": "https://example.com", "X-OpenRouter-Title": "My App"},
    extra_body={"provider": {"order": ["deepseek"]}},
)
print(resp.choices[0].message.content)

После:

python
from openai import OpenAI

client = OpenAI(
    base_url="https://api.teamorouter.cn/v1",
    api_key="sk-teamo-xxxxxx",
)

resp = client.chat.completions.create(
    model="deepseek-v4-pro",
    messages=[{"role": "user", "content": "Привет"}],
)
print(resp.choices[0].message.content)

JavaScript / TypeScript (OpenAI SDK)

До:

javascript
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://openrouter.ai/api/v1",
  apiKey: process.env.OPENROUTER_API_KEY,
  defaultHeaders: { "HTTP-Referer": "https://example.com", "X-OpenRouter-Title": "My App" },
});

const resp = await client.chat.completions.create({
  model: "deepseek/deepseek-v4-pro",
  messages: [{ role: "user", content: "Привет" }],
});

После:

javascript
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.teamorouter.cn/v1",
  apiKey: process.env.TEAMOROUTER_API_KEY,
});

const resp = await client.chat.completions.create({
  model: "deepseek-v4-pro",
  messages: [{ role: "user", content: "Привет" }],
});

5. Чего нет в TeamoRouter

Функция OpenRouter В TeamoRouter
Auto Router (openrouter/auto) и псевдонимы ~...-latest Нет. Укажите конкретный ID модели.
Список запасных моделей models Нет. Перехватывайте ошибку в коде и повторяйте запрос с другой моделью. Для одной модели TeamoRouter сам переключается между своими линиями к провайдерам; выбрать линию нельзя.
Параметры provider (order, only, ignore, sort, allow_fallbacks, data_collection, zdr, max_price, quantizations) Нет. Удалите поле provider.
Суффиксы моделей (:nitro, :floor, :online, :batch) Нет. Уберите суффикс.
plugins (веб-поиск, разбор файлов) и transforms Нет. Удалите эти поля.
Стоимость в ответе (usage.cost) В usage приходит только число токенов. Списания по каждому запросу — в консоли.
/api/v1/credits, /api/v1/key, /api/v1/generation Публичных аналогов нет. Баланс и расход смотрите в консоли.
Собственные ключи провайдеров (BYOK) Нет.

6. Проверьте переход

bash
curl https://api.teamorouter.cn/v1/chat/completions \
  -H "Authorization: Bearer sk-teamo-xxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"model":"deepseek-v4-pro","messages":[{"role":"user","content":"Привет"}]}'
  • 401: неверный ключ. Он должен начинаться с sk-teamo-, а не с sk-or-.
  • 402 (400 для формата OpenAI) с текстом «wallet balance is insufficient»: баланс $0. Пополните баланс и повторите запрос.
  • 400 model_not_available: в ID модели остался префикс vendor/ или такой модели нет в нашем каталоге. Сверьтесь с таблицей выше.

Другие коды ошибок и лимиты: руководство по API и лимиты запросов.

Готовы? Три шага, чтобы начатьВойдите в консоль · пополните баланс · создайте API Key
TelegramВопросы по подключению, оплате или маршрутизации? Мы в Telegram.