Подключение к 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:
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 |
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 Базовый запрос
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"}
]
}'
Пример ответа:
{
"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:
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
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
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:
{
"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
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:
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
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:
"service_tier": "fast"
Пример на 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:
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);
Старое значение по-прежнему работает:
"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 Базовый запрос
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"}]}
]
}'
Пример ответа:
{
"candidates": [
{
"content": {"role": "model", "parts": [{"text": "I am Gemini..."}]},
"finishReason": "STOP"
}
],
"usageMetadata": {"promptTokenCount": 12, "candidatesTokenCount": 22, "totalTokenCount": 34}
}
5.2 Потоковый ответ через SSE
Используйте streamGenerateContent и добавьте alt=sse:
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, настройте так:
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
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:
{
"created": 1752345600,
"data": [
{"b64_json": "iVBORw0KGgo..."}
]
}
Установите таймаут 300 секунд. Модели генерации изображений отвечают дольше, и с коротким таймаутом запрос может не завершиться.
6.2 Редактирование изображений
Эндпоинт: POST /v1/images/edits
Загрузите исходное изображение как multipart/form-data и передайте инструкцию:
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):
export ANTHROPIC_BASE_URL="https://api.teamorouter.com"
export ANTHROPIC_API_KEY="sk-teamo-xxxxxx"
Инструменты с протоколом OpenAI (Chat Completions / Responses API):
export OPENAI_BASE_URL="https://api.teamorouter.com/v1"
export OPENAI_API_KEY="sk-teamo-xxxxxx"
Gemini CLI:
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 и не встраивайте во фронтенд / публичный клиент. Если подозреваете утечку, немедленно удалите ключ в консоли и создайте новый.