RuRouter.ai API
RuRouter.ai предоставляет единый OpenAI-compatible API для доступа к современным ИИ-моделям с рублёвым биллингом, API-ключами, каталогом моделей и статистикой использования.
Quickstart
Подключение занимает несколько минут. Если ваш проект уже использует OpenAI SDK, достаточно заменить base_url и model.
from openai import OpenAI client = OpenAI(api_key="rurouter_api_key", base_url="https://api.rurouter.ai/v1") response = client.chat.completions.create( model="anthropic/claude-opus-4.8-fast", messages=[{"role": "user", "content": "Привет!"}] ) print(response.choices[0].message.content)
Получите API-ключ в личном кабинете и пополните рублёвый баланс через ЮКасса.
Authentication
Все запросы аутентифицируются через HTTP-заголовок Authorization с Bearer-токеном — вашим API-ключом.
Authorization: Bearer rurouter_api_key
Ключи создаются и ротируются в разделе API-ключи кабинета. Никогда не публикуйте ключи в клиентском коде.
Base URL
Единый endpoint для всех моделей каталога:
https://api.rurouter.ai/v1
Chat Completions
Основной метод — POST /v1/chat/completions. Полностью совместим с форматом OpenAI Chat Completions.
Параметры запроса
| Параметр | Тип | Описание |
|---|---|---|
| model | string | Model ID из каталога, например anthropic/claude-opus-4.8-fast |
| messages | array | Массив сообщений с полями role и content |
| temperature | number | 0–2, степень случайности (по умолчанию 1.0) |
| max_tokens | integer | Максимум токенов в ответе |
| stream | boolean | Потоковая передача ответа (SSE) |
| tools | array | Описание доступных инструментов (function calling) |
Streaming
Установите stream=True для получения ответа по частям через Server-Sent Events. Идеально для чатов и интерактивных интерфейсов.
stream = client.chat.completions.create( model="anthropic/claude-opus-4.8-fast", messages=[{"role": "user", "content": "Напиши анализ рынка."}], stream=True ) for chunk in stream: print(chunk.choices[0].delta.content or "", end="")
Models
Получите список доступных моделей через GET /v1/models или смотрите каталог моделей. Каждая модель имеет уникальный model id формата provider/model-name.
| Model ID | Контекст | Input ₽/1M | Output ₽/1M |
|---|
Errors
API использует стандартные HTTP-коды. Тело ошибки возвращается в JSON-формате с полями error.type и error.message.
| Код | Тип | Описание |
|---|---|---|
| 401 | invalid_api_key | Неверный или отозванный API-ключ |
| 402 | insufficient_balance | Недостаточно средств на рублёвом балансе |
| 429 | rate_limit_exceeded | Превышен rate limit |
| 500 | internal_error | Внутренняя ошибка — повторите запрос позже |
Rate limits
Лимиты зависят от тарифа и настраиваются для каждого ключа. Текущие лимиты возвращаются в заголовках ответа: X-RateLimit-Limit, X-RateLimit-Remaining.
- Free tier — 60 req/min
- Для команд — 600 req/min
- Enterprise — индивидуальные лимиты
Billing
Оплата по факту использования: списывается стоимость входных и выходных токенов. Баланс пополняется в рублях через ЮКасса. Списания и пополнения доступны в разделе Billing кабинета, экспорт — в CSV.
Настройте уведомления о низком балансе, чтобы запросы не прерывались в продакшене.
Webhooks
Подпишитесь на события платформы (пополнение баланса, низкий баланс, превышение лимита) через webhook-endpoint в настройках кабинета. RuRouter.ai отправит POST с JSON-телом события.
{ "type": "balance.low", "balance_rub": 480, "threshold_rub": 500, "timestamp": "2026-06-05T14:22:08Z" }