Подключение к API TeamoRouter

TeamoRouter поддерживает несколько совместимых форматов API, включая OpenAI, Google Gemini и Anthropic. Направьте base URL официального SDK на TeamoRouter, и код приложения менять не придётся. Через один шлюз можно вызывать Claude / Gemini / GPT и другие семейства моделей.

  • Base URL: https://api.teamorouter.com
  • Аутентификация: API Key (sk-teamo-...)
  • Протоколы: нативный формат Anthropic (/v1/messages), OpenAI-совместимый формат (/v1/chat/completions), OpenAI Responses API (/v1/responses, только модели GPT), нативный формат Gemini (/v1beta/models/{model}:generateContent) и генерация изображений (/v1/images)

Замените sk-teamo-xxxxxx на свой ключ. Держите ключ в секрете и никогда не коммитьте его в репозиторий.


1. Аутентификация

Выберите совместимый формат в зависимости от модели:

Разные форматы используют разные заголовки аутентификации. Выберите заголовок по протоколу:

Протокол Заголовок
Anthropic x-api-key: sk-teamo-xxxxxx + anthropic-version: 2023-06-01
OpenAI Authorization: Bearer sk-teamo-xxxxxx
Gemini Authorization: Bearer sk-teamo-xxxxxx

2. Доступные модели

Полный актуальный список моделей можно получить через GET /v1/models:

bash
curl https://api.teamorouter.com/v1/models \
  -H "Authorization: Bearer sk-teamo-xxxxxx"

Доступные сейчас модели (примеры):

Провайдер ID модели
Anthropic claude-fable-5-1, claude-opus-5, claude-fable-5, claude-sonnet-5, claude-opus-4-8, claude-opus-4-7, claude-opus-4-6, claude-sonnet-4-6, claude-haiku-4-5
OpenAI gpt-6-astra,gpt-5.6-sol,gpt-5.6-terra,gpt-5.6-luna,gpt-5.5,gpt-5.4,gpt-5.4-mini,gpt-image-2
Google gemini-3.8-flash, gemini-3.7-flash, gemini-3.6-flash, gemini-3.5-flash-lite,gemini-3.1-pro-preview, gemini-3.5-flash, gemini-3.1-flash-lite-preview
DeepSeek deepseek-flash (DeepSeek V4.1 Flash), deepseek-flash-free (бесплатная), deepseek-v4-flash-vision-exp, deepseek-v4-pro, deepseek-v4-flash, deepseek-v4-flash-free (бесплатная)
GLM glm-5.3-flash, glm-5.3-flash-free (бесплатная), glm-5.3, glm-5.2
Grok grok-4.6

3. Нативный формат Anthropic

Эндпоинт: POST /v1/messages

3.1 Базовый запрос

bash
curl https://api.teamorouter.com/v1/messages \
  -H "x-api-key: sk-teamo-xxxxxx" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-fable-5-1",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "Introduce yourself in one sentence"}
    ]
  }'

Пример ответа:

json
{
  "id": "msg_01KxDE...",
  "type": "message",
  "role": "assistant",
  "model": "claude-fable-5-1",
  "content": [{"type": "text", "text": "I am Claude..."}],
  "stop_reason": "end_turn",
  "usage": {"input_tokens": 159, "output_tokens": 34}
}

3.2 Потоковый ответ (streaming) через SSE

Добавьте "stream": true. Ответ придёт как text/event-stream:

bash
curl https://api.teamorouter.com/v1/messages \
  -H "x-api-key: sk-teamo-xxxxxx" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-fable-5-1",
    "max_tokens": 1024,
    "stream": true,
    "messages": [{"role": "user", "content": "Write a short poem"}]
  }'

Последовательность событий: message_start -> content_block_start -> несколько content_block_delta -> content_block_stop -> message_delta -> message_stop.

3.3 Python SDK anthropic

python
from anthropic import Anthropic

client = Anthropic(
    api_key="sk-teamo-xxxxxx",
    base_url="https://api.teamorouter.com",
)

resp = client.messages.create(
    model="claude-fable-5-1",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello"}],
)
print(resp.content[0].text)

4. OpenAI-совместимый формат

Эндпоинты: POST /v1/chat/completions (Chat Completions) и POST /v1/responses (Responses API, только модели GPT)

4.1 Базовый запрос Chat Completions

bash
curl https://api.teamorouter.com/v1/chat/completions \
  -H "Authorization: Bearer sk-teamo-xxxxxx" \
  -H "content-type: application/json" \
  -d '{
    "model": "gpt-5.6-sol",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "Hello"}]
  }'

Ответ соответствует стандартной структуре OpenAI chat.completion:

json
{
  "object": "chat.completion",
  "model": "gpt-5.6-sol",
  "choices": [
    {"index": 0, "message": {"role": "assistant", "content": "Hello!"}, "finish_reason": "stop"}
  ],
  "usage": {"prompt_tokens": 214, "completion_tokens": 3, "total_tokens": 217}
}

4.2 Python SDK openai

python
from openai import OpenAI

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

resp = client.chat.completions.create(
    model="gpt-5.6-sol",
    messages=[{"role": "user", "content": "Hello"}],
)
print(resp.choices[0].message.content)

4.3 Потоковый ответ

Добавьте "stream": true. TeamoRouter возвращает стандартные SSE-чанки OpenAI в формате data: {...} и завершает поток data: [DONE].

4.4 Базовый запрос Responses API

Если приложение уже использует OpenAI Responses API, обращайтесь напрямую к /v1/responses:

bash
curl https://api.teamorouter.com/v1/responses \
  -H "Authorization: Bearer sk-teamo-xxxxxx" \
  -H "content-type: application/json" \
  -d '{
    "model": "gpt-5.6-sol",
    "input": "Introduce TeamoRouter in one sentence"
  }'

/v1/responses поддерживает только модели GPT. Запросы к Claude / Gemini возвращают 400. Для Claude используйте /v1/messages, для Gemini — нативный формат Gemini.

4.5 Python SDK openai Responses

python
from openai import OpenAI

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

resp = client.responses.create(
    model="gpt-5.6-sol",
    input="Introduce TeamoRouter in one sentence",
)
print(resp.output_text)

4.6 Потоковый ответ Responses API

Добавьте "stream": true, чтобы получать стандартные потоковые события OpenAI Responses API.

4.7 Fast Mode

OpenAI-совместимые эндпоинты TeamoRouter поддерживают Fast Mode (ранее — Priority processing). Добавьте в запрос Chat Completions или Responses API:

json
"service_tier": "fast"

Пример на Python:

python
from openai import OpenAI

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

resp = client.responses.create(
    model="gpt-5.6-sol",
    input="Analyze this requirement for me",
    service_tier="fast",
)
print(resp.output_text)

Пример на JavaScript:

javascript
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "sk-teamo-xxxxxx",
  baseURL: "https://api.teamorouter.com/v1",
});

const resp = await client.responses.create({
  model: "gpt-5.6-sol",
  input: "Analyze this requirement for me",
  service_tier: "fast",
});
console.log(resp.output_text);

Старое значение по-прежнему работает:

json
"service_tier": "priority"

fast — актуальное рекомендуемое значение; старое значение priority продолжает работать и ведёт себя так же. Оба применяются ко всем моделям серии GPT с поддержкой Fast Mode. С включённым Fast Mode gpt-5.6-sol работает до 2,5× быстрее стандартного режима. Fast Mode тарифицируется в 2× от стандартной ставки. Для GPT-5.6 и более ранних моделей поле service_tier в объекте ответа может по-прежнему возвращать "priority" — это ожидаемо.


5. Нативный формат Gemini

Эндпоинт: POST /v1beta/models/{model}:generateContent

5.1 Базовый запрос

bash
curl https://api.teamorouter.com/v1beta/models/gemini-3.5-flash:generateContent \
  -H "Authorization: Bearer sk-teamo-xxxxxx" \
  -H "content-type: application/json" \
  -d '{
    "contents": [
      {"role": "user", "parts": [{"text": "Introduce yourself in one sentence"}]}
    ]
  }'

Пример ответа:

json
{
  "candidates": [
    {
      "content": {"role": "model", "parts": [{"text": "I am Gemini..."}]},
      "finishReason": "STOP"
    }
  ],
  "usageMetadata": {"promptTokenCount": 12, "candidatesTokenCount": 22, "totalTokenCount": 34}
}

5.2 Потоковый ответ через SSE

Используйте streamGenerateContent и добавьте alt=sse:

bash
curl "https://api.teamorouter.com/v1beta/models/gemini-3.5-flash:streamGenerateContent?alt=sse" \
  -H "Authorization: Bearer sk-teamo-xxxxxx" \
  -H "content-type: application/json" \
  -d '{
    "contents": [
      {"role": "user", "parts": [{"text": "Write a short poem"}]}
    ]
  }'

5.3 Переменные окружения

Если ваш инструмент или SDK поддерживает пользовательский Base URL Gemini, настройте так:

bash
export GOOGLE_GEMINI_BASE_URL="https://api.teamorouter.com"
export GEMINI_API_KEY="sk-teamo-xxxxxx"
export GEMINI_API_KEY_AUTH_MECHANISM="bearer"

Разные SDK Gemini могут называть поле для пользовательского эндпоинта по-разному: base_url, baseURL, apiEndpoint или переменные окружения. Главное правило: направьте Base URL на https://api.teamorouter.com и используйте API Key TeamoRouter.


6. Генерация изображений (GPT Image 2)

Модель изображений gpt-image-2 использует отдельные эндпоинты /v1/images и аутентификацию Authorization: Bearer.

6.1 Генерация изображений

Эндпоинт: POST /v1/images/generations

bash
curl https://api.teamorouter.com/v1/images/generations \
  -H "Authorization: Bearer sk-teamo-xxxxxx" \
  -H "content-type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "An orange cat typing on a keyboard, illustration style"
  }'

Пример ответа. data[0].b64_json — изображение в Base64:

json
{
  "created": 1752345600,
  "data": [
    {"b64_json": "iVBORw0KGgo..."}
  ]
}

Установите таймаут 300 секунд. Модели генерации изображений отвечают дольше, и с коротким таймаутом запрос может не завершиться.

6.2 Редактирование изображений

Эндпоинт: POST /v1/images/edits

Загрузите исходное изображение как multipart/form-data и передайте инструкцию:

bash
curl https://api.teamorouter.com/v1/images/edits \
  -H "Authorization: Bearer sk-teamo-xxxxxx" \
  -F model="gpt-image-2" \
  -F image="@photo.png" \
  -F prompt="Replace the background with a starry sky"

Эндпоинт совместим с OpenAI Images API.


7. Подключение агентных инструментов

Claude Code использует протокол Anthropic, Codex — протокол OpenAI, Gemini CLI — протокол Gemini.

Достаточно направить переменные окружения Base URL и API Key на TeamoRouter. Сами инструменты менять не нужно.

Claude Code (протокол Anthropic):

bash
export ANTHROPIC_BASE_URL="https://api.teamorouter.com"
export ANTHROPIC_API_KEY="sk-teamo-xxxxxx"

Инструменты с протоколом OpenAI (Chat Completions / Responses API):

bash
export OPENAI_BASE_URL="https://api.teamorouter.com/v1"
export OPENAI_API_KEY="sk-teamo-xxxxxx"

Gemini CLI:

bash
export GOOGLE_GEMINI_BASE_URL="https://api.teamorouter.com"
export GEMINI_API_KEY="sk-teamo-xxxxxx"
export GEMINI_API_KEY_AUTH_MECHANISM="bearer"

8. FAQ

Получаете 401 / ошибку аутентификации?

Сначала проверьте соответствие протокола и заголовка: Anthropic использует x-api-key; OpenAI / Gemini — Authorization: Bearer; нативные эндпоинты Gemini также принимают x-goog-api-key. Затем убедитесь, что ключ полный, начинается с sk-teamo-, без лишних пробелов и не удалён в консоли. Проверьте и формат base_url: SDK OpenAI требуют /v1; SDK Anthropic — нет.

Вызов Claude через формат OpenAI даёт ошибки, стоит дороже или работает хуже?

Для моделей Claude по возможности используйте нативный протокол Anthropic (/v1/messages). Claude Code и другие агентные инструменты нужно настраивать на протокол Anthropic. Вызов Claude через OpenAI-совместимый формат может терять кэш промптов, режим рассуждений и другие возможности, что повышает стоимость и снижает качество. Он подходит только для простых чат-сценариев. /v1/responses не поддерживает Claude / Gemini и возвращает 400.

Модель недоступна?

Сначала получите актуальный список через GET /v1/models. Проверьте написание ID модели: строчные буквы, не путайте - и .. Убедитесь, что эндпоинт соответствует модели.

Таймаут или медленный первый токен?

Крупные модели вроде Opus / Fable во время рассуждений могут отдавать первый токен через несколько секунд или десятки секунд. Это не значит, что запрос упал. В продакшене включайте "stream": true для лучшей воспринимаемой задержки и увеличивайте таймаут чтения у клиента. Сервер поддерживает ответы длительностью до 600 секунд.

Безопасность ключа:

Храните ключи в переменных окружения или менеджере секретов. Не записывайте ключи прямо в код, не добавляйте их в Git и не встраивайте во фронтенд / публичный клиент. Если подозреваете утечку, немедленно удалите ключ в консоли и создайте новый.

Готовы? Три шага, чтобы начатьВойдите в консоль · пополните баланс · создайте API Key
DiscordПомощь сообщества
Подключение к API TeamoRouter · Документация