Документация

RuRouter.ai API

RuRouter.ai предоставляет единый OpenAI-compatible API для доступа к современным ИИ-моделям с рублёвым биллингом, API-ключами, каталогом моделей и статистикой использования.

Quickstart

Подключение занимает несколько минут. Если ваш проект уже использует OpenAI SDK, достаточно заменить base_url и model.

PythonJavaScriptcURL
copy
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-ключом.

headercopy
Authorization: Bearer rurouter_api_key

Ключи создаются и ротируются в разделе API-ключи кабинета. Никогда не публикуйте ключи в клиентском коде.

Base URL

Единый endpoint для всех моделей каталога:

base_urlcopy
https://api.rurouter.ai/v1

Chat Completions

Основной метод — POST /v1/chat/completions. Полностью совместим с форматом OpenAI Chat Completions.

Параметры запроса

ПараметрТипОписание
modelstringModel ID из каталога, например anthropic/claude-opus-4.8-fast
messagesarrayМассив сообщений с полями role и content
temperaturenumber0–2, степень случайности (по умолчанию 1.0)
max_tokensintegerМаксимум токенов в ответе
streambooleanПотоковая передача ответа (SSE)
toolsarrayОписание доступных инструментов (function calling)

Streaming

Установите stream=True для получения ответа по частям через Server-Sent Events. Идеально для чатов и интерактивных интерфейсов.

streaming.pycopy
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 ₽/1MOutput ₽/1M

Errors

API использует стандартные HTTP-коды. Тело ошибки возвращается в JSON-формате с полями error.type и error.message.

КодТипОписание
401invalid_api_keyНеверный или отозванный API-ключ
402insufficient_balanceНедостаточно средств на рублёвом балансе
429rate_limit_exceededПревышен rate limit
500internal_errorВнутренняя ошибка — повторите запрос позже

Rate limits

Лимиты зависят от тарифа и настраиваются для каждого ключа. Текущие лимиты возвращаются в заголовках ответа: X-RateLimit-Limit, X-RateLimit-Remaining.

Billing

Оплата по факту использования: списывается стоимость входных и выходных токенов. Баланс пополняется в рублях через ЮКасса. Списания и пополнения доступны в разделе Billing кабинета, экспорт — в CSV.

Настройте уведомления о низком балансе, чтобы запросы не прерывались в продакшене.

Webhooks

Подпишитесь на события платформы (пополнение баланса, низкий баланс, превышение лимита) через webhook-endpoint в настройках кабинета. RuRouter.ai отправит POST с JSON-телом события.

webhook payloadcopy
{
  "type": "balance.low",
  "balance_rub": 480,
  "threshold_rub": 500,
  "timestamp": "2026-06-05T14:22:08Z"
}