Документация BasicRouter
Быстрый старт
BasicRouter предоставляет продакшен-командам единый стабильный API для доступа к моделям, маршрутизации, резерва, отслеживания использования и биллинга на основе кредитов. Поставка LLM-токенов осуществляется через доверенные корпоративные облачные аккаунты оригинальных провайдеров, с защитой конфиденциальности, высокой стабильностью и отслеживаемостью запросов, встроенными в шлюз.
https://api.basicrouter.ai/apihttps://api.basicrouter.ai/api/v1https://api.basicrouter.ai/api/v1Authorization: Bearer <key>Создание ключа API
Создайте ключ API BasicRouter в консоли. Храните ключ на сервере и никогда не раскрывайте его в коде браузера или мобильного клиента.
Рекомендуемая стратегия ключей:
| Тип ключа | Рекомендуемое использование |
|---|---|
| Ключ для разработки | Локальная разработка, staging, тестирование и прототипы. |
| Продакшен-ключ | Только для бэкенд-нагрузок в продакшене. |
| Ключ интеграции | Отдельный ключ для таких инструментов, как Cursor, Claude Code, Codex, Hermes или OpenClaw. |
| Клиентский / тенантный ключ | Опциональная изоляция ключей для корпоративных клиентов, трафика тенантов или бизнес-подразделений. |
Ротируйте ключи при изменении доступа команды. Отзывайте ключи, которые больше не используются.
Настройте SDK на BasicRouter
Большинству OpenAI-совместимых клиентов нужен только новый базовый URL и ключ API.
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.BASICROUTER_API_KEY,
baseURL: "https://api.basicrouter.ai/api/v1"
});Отправка chat completion
curl --request POST \
--url https://api.basicrouter.ai/api/v1/chat/completions \
--header "Authorization: Bearer $BASICROUTER_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "claude-sonnet-5",
"messages": [
{ "role": "user", "content": "Explain BasicRouter in one sentence." }
]
}'Проверка использования и баланса
curl --request GET \
--url https://api.basicrouter.ai/api/v1/billing/balance \
--header "Authorization: Bearer $BASICROUTER_API_KEY"Обзор моделей
Используйте страницу «Модели» или API моделей для просмотра доступных текстовых моделей. Метаданные модели включают производителя, обслуживающего провайдера, модальность, длину контекста, поддерживаемые семейства API, поддерживаемые возможности, доступность, ограничения на уровне аккаунта и цены в кредитах.
Конечная точка: GET /v1/models Назначение: Список моделей, доступных текущему аккаунту.
curl --request GET \
--url https://api.basicrouter.ai/api/v1/models \
--header "Authorization: Bearer $BASICROUTER_API_KEY"Матрица возможностей
| Возможность | Описание | Кто обычно использует |
|---|---|---|
streaming | Поддерживает потоковую передачу через server-sent events. | Чат-приложения, кодинг-агенты, интерактивный UX. |
tool_calling | Поддерживает вызов инструментов или функций. | Агенты, автоматизация рабочих процессов, помощники в кодинге. |
structured_outputs | Поддерживает вывод, ограниченный схемой, или JSON. | Извлечение данных, автоматизация рабочих процессов, корпоративные приложения. |
json_mode | Может возвращать вывод в формате JSON. | Лёгкие структурированные ответы. |
vision | Принимает изображения на вход. | Мультимодальный чат, анализ UI, скриншоты документов. |
prompt_caching | Поддерживает кэширование входных данных или повторное использование контекста. | Агенты с длинным контекстом, повторяющиеся системные промпты. |
reasoning | Поддерживает явное управление рассуждением там, где доступно. | Сложное планирование, кодинг, аналитические рабочие процессы. |
logprobs | Поддерживает вывод вероятностей токенов. | Оценка, ранжирование, продвинутые NLP-рабочие процессы. |
Матрица совместимости семейств API
| Семейство API | Текст | Ввод изображений | Вызов инструментов | Структурированный вывод | Потоковая передача | Примечания |
|---|---|---|---|---|---|---|
| OpenAI Chat Completions | Да | Зависит от модели | Зависит от модели | Зависит от модели | Да | Лучший вариант по умолчанию для OpenAI-совместимых агентов и SDK. |
| OpenAI Responses | Да | Зависит от модели | Зависит от модели | Зависит от модели | Да | Рекомендуется для более новых агентских рабочих процессов в стиле OpenAI. |
| Anthropic Messages | Да | Зависит от модели | Зависит от модели | Зависит от модели | Да | Лучший вариант для Claude-совместимых клиентов и Claude Code. |
| Генерация изображений BasicRouter | Нет | Зависит от модели | Нет | Нет | Нет | Использует асинхронный опрос задач или webhook. |
| Генерация видео BasicRouter | Нет | Зависит от модели | Нет | Нет | Нет | Использует асинхронный опрос задач или webhook. |
Аутентификация
Каждый API-запрос использует bearer-токен. Храните ключи в серверных переменных окружения, ротируйте их при изменении доступа команды и записывайте идентификаторы запросов для отладки.
| Заголовок | Значение | Примечания |
|---|---|---|
Authorization | Bearer YOUR_API_KEY | Обязателен для каждого запроса. |
Content-Type | application/json | Обязателен для JSON-тел запросов. |
Рекомендации по безопасности ключей
- Храните API-ключи на сервере. Не раскрывайте ключи в браузерном или мобильном клиентском коде.
- Используйте отдельные ключи для разработки, staging-окружения, продакшена и сторонних интеграций.
- Ограничивайте область действия ключей по окружению, сервису, клиенту или тенанту при наличии.
- Ротируйте ключи после ухода сотрудников, изменения доступа подрядчиков или при подозрении на утечку.
- Храните ключи в менеджерах секретов или переменных окружения, а не в исходном коде.
Использование консоли
Консоль BasicRouter — это операционная плоскость управления для доступа к API, доступности моделей, политик маршрутизации, мониторинга использования и администрирования биллинга. Она предоставляет администраторам аккаунта централизованное представление ключей, моделей, запросов, кредитов и средств управления на уровне аккаунта для продакшен-трафика моделей.
Управление ключами API
Создавайте, ротируйте, отзывайте и помечайте API-ключи из консоли. Используйте отдельные ключи для разработки, staging-окружения, продакшена и отдельных сервисов, чтобы использование можно было аудировать и изолировать по окружению или приложению.
| Практика | Описание |
|---|---|
| Раздельные окружения | Используйте разные API-ключи для разработки, staging-окружения и продакшен-трафика. |
| Используйте описательные метки | Помечайте ключи по приложению, сервису, окружению или интеграции. |
| Регулярная ротация | Ротируйте ключи при изменении доступа или возможном раскрытии учетных данных. |
| Избегайте раскрытия на стороне клиента | Храните API-ключи только на серверных системах. Не раскрывайте ключи в браузерном или мобильном клиентском коде. |
| Мониторинг использования ключей | Просматривайте объём запросов, потребление кредитов и шаблоны ошибок по ключам. |
Список моделей
Используйте страницу «Модели» для просмотра моделей, доступных аккаунту. Каждая запись о модели может включать вендора, обслуживающего провайдера, модальность, поддерживаемые семейства API, длину контекста, флаги возможностей, статус доступности и информацию о ценах.
| Фильтр | Назначение |
|---|---|
| Вендор | Фильтр по вендору модели, такому как OpenAI, Anthropic, Google, Qwen, DeepSeek, или другим провайдерам. |
| Провайдер | Фильтр по обслуживающему или облачному провайдеру. |
| Модальность | Фильтр по поддержке текста, изображений, видео, эмбеддингов, аудио или мультимодальности. |
| Возможность | Фильтр по потоковой передаче, вызову инструментов, структурированным выводам, зрению, кэшированию промптов или поддержке рассуждений. |
| Доступность | Определяйте модели, которые в настоящее время доступны аккаунту. |
Для продакшен-приложений проверяйте возможности моделей перед включением трафика. Некоторые параметры и функции зависят от модели и могут не поддерживаться во всех семействах API.
Использование и журналы
Представление «Использование и журналы» обеспечивает оперативную видимость API-трафика. Команды могут проверять объём запросов, выбранные модели, разрешённые цели маршрутизации, потребление кредитов, задержку, коды ошибок и идентификаторы запросов.
- Устранение неполадок неудачных запросов.
- Выявление дорогостоящих рабочих нагрузок.
- Сравнение использования моделей между приложениями и окружениями.
- Проверка поведения маршрутизации и резерва.
- Исследование проблем задержки или доступности провайдера.
- Предоставление идентификаторов запросов при обращении в поддержку.
Каждый ответ API включает или раскрывает идентификатор запроса BasicRouter. Сохраняйте этот идентификатор в журналах вашего приложения для повышения эффективности отладки в продакшене и эскалации поддержки.
Резерв
Резерв (fallback) — это механизм отказоустойчивости BasicRouter. Когда основная модель или политика маршрутизации даёт сбой, система автоматически переключается на резервную модель, чтобы продолжить обработку запроса. Это сохраняет отзывчивость приложения и минимизирует риск нарушения работы сервиса.
Резерв действует как страховка, поддерживая бесперебойную работу приложения даже при сбое модели, достижении лимита квоты или колебаниях сети.
Почему важен резерв
В продакшене сервисы моделей могут столкнуться с рядом непредсказуемых проблем:
- Сбой сервиса модели: вышестоящий API временно недоступен или превышает время ожидания.
- Колебания производительности: высокая нагрузка на модель приводит к медленным или неудачным ответам.
- Сбой маршрутизации: все модели-кандидаты, выбранные умной маршрутизацией, становятся недоступными.
Резерв поддерживает доступность вашего приложения, предоставляя надёжный резервный путь.
Ключевые преимущества
| Преимущество | Описание |
|---|---|
| Высокая доступность | Автоматическое переключение при сбое поддерживает работу сервиса и снижает влияние простоев. |
| Прозрачное переключение | Система переключает модели автоматически — изменения кода приложения не требуются. |
| Гибкая конфигурация | Поддерживается конфигурация как на уровне запроса, так и на уровне аккаунта для разных сценариев. |
| Оптимизация затрат | Выберите более экономичную модель в качестве резерва для контроля затрат в экстренных случаях. |
| Централизованное управление | Настройте один раз на уровне аккаунта, и это автоматически применяется к каждому запросу. |
Глобальная конфигурация резервной модели
BasicRouter поддерживает настройку глобальной резервной модели из бэкенда консоли. Все запросы автоматически используют эту модель в качестве резерва при сбое.
Как настроить:
- Перейдите на страницу настроек стратегии BasicRouter.
- Найдите настройку Модель резерва по умолчанию.
- Выберите вашу глобальную резервную модель из выпадающего списка.
- Сохраните настройку, чтобы применить её немедленно.
Преимущества глобальной конфигурации:
- Изменения кода не требуются: настройте один раз, и это применяется глобально, без необходимости повторять настройку в каждом запросе.
- Централизованное управление: управляйте политикой резерва в одном месте для более удобной корректировки и мониторинга.
- Упрощённое обслуживание: снижает сложность кода и вероятность ошибок конфигурации.
- Гибкое переопределение: конфигурация резерва на уровне запроса имеет приоритет и может переопределять глобальную настройку для конкретных сценариев.
Конфигурация резерва на уровне запроса
Для конкретных бизнес-сценариев можно указать резервную модель в отдельном запросе, чтобы переопределить глобальную конфигурацию.
Укажите резервную модель с помощью параметра router.fallBackModels:
{
"model": "claude-sonnet-4",
"messages": [
{
"role": "user",
"content": "Explain what quantum computing is"
}
],
"router": {
"fallBackModels": ["glm-5.2"]
}
}Правила приоритета
При наличии нескольких конфигураций резерва приоритет распределяется от высшего к низшему:
router.fallBackModelsна уровне запроса: резервная модель, указанная в отдельном запросе.- Глобальная модель резерва по умолчанию: глобальная резервная модель, настроенная в консоли.
- Без резерва: если ни одна из них не настроена, запрос возвращает ошибку при сбое.
- Если все резервные модели дают сбой, система возвращает причину сбоя последней испробованной модели.
- При срабатывании резерва ответ указывает фактически использованную модель, что облегчает мониторинг и анализ.
Администрирование аккаунта
В зависимости от типа аккаунта консоль может включать включение моделей на уровне аккаунта, элементы управления реселлером или дистрибьютором, конфигурацию биллинга и настройки доступа. Администраторы могут использовать эти элементы управления для согласования доступа к моделям, видимости использования и ответственности за биллинг с приложениями, клиентскими аккаунтами или бизнес-подразделениями.
Контрольный список производственных операций
| Пункт | Рекомендация |
|---|---|
| API-ключи | Используйте выделенные продакшен-ключи с понятными метками. |
| Модели | Подтвердите доступность модели, цены, длину контекста и требуемые возможности. |
| Маршрутизация | Настройте псевдонимы маршрутизации или политики резерва для критически важных рабочих нагрузок. |
| Журналы | Убедитесь, что идентификаторы запросов фиксируются в журналах приложения. |
| Биллинг | Подтвердите баланс кошелька, статус тарифа и правила списания кредитов. |
| Ограничения скорости | Просмотрите RPM, TPM, параллелизм и лимиты медиазадач на уровне аккаунта. |
| Оповещения | Отслеживайте рост использования, баланс кредитов, ошибки и доступность провайдера. |
Биллинг и кредиты
BasicRouter использует модель биллинга на основе кредитов для текстовых, графических, видеоматериалов и других поддерживаемых рабочих нагрузок моделей. Кредиты предоставляют единую единицу измерения для использования нескольких моделей и провайдеров, что позволяет командам согласованно управлять потреблением между модальностями и семействами API.
Подробная информация о ценах на модели доступна на странице «Модели» или через API метаданных моделей. Цены могут различаться в зависимости от модели, провайдера, модальности, разрешения, типа токенов, длины вывода, длительности задачи, типа аккаунта и коммерческого соглашения.
Пополнение и кошелёк
Аккаунты могут добавлять кредиты на кошелёк с оплатой по факту использования для гибкого использования. Кредиты кошелька используются после того, как кредиты месячного тарифа и пакеты ресурсов будут израсходованы, если к аккаунту не применяется пользовательское правило биллинга.
Кредиты кошелька не истекают, если иное не указано в применимых коммерческих условиях. При пополнении кошелька с оплатой по факту использования взимается сервисный сбор.
Месячные тарифы и пакеты ресурсов
Каждый пользователь или аккаунт может выбрать один активный месячный тариф. Месячные тарифы предоставляют определённый объём пропускной способности использования, коммерческие условия и конфигурацию доступа на уровне аккаунта для расчётного периода.
Пользователи также могут покупать несколько пакетов ресурсов для дополнительной пропускной способности. Пакеты ресурсов позволяют отделить обязательное использование от баланса кошелька с оплатой по факту и полезны для интенсивного использования текста, изображений, видео или выделенных рабочих нагрузок.
Порядок списания
Если не настроены пользовательские правила биллинга, кредиты списываются в следующем порядке:
| Приоритет | Источник кредитов | Описание |
|---|---|---|
| 1 | Месячный тариф | Включённая месячная пропускная способность использования расходуется первой. |
| 2 | Пакеты ресурсов | Дополнительно приобретённые пакеты расходуются после кредитов месячного тарифа. |
| 3 | Кошелёк с оплатой по факту | Баланс кошелька расходуется после кредитов тарифа и пакетов ресурсов. |
Для аккаунтов с пользовательскими коммерческими условиями порядок списания, правила истечения срока действия, включённое использование и цены могут отличаться. Специфичные для аккаунта правила отображаются в консоли или предоставляются через коммерческое соглашение.
Индивидуальное ценообразование
Ценообразование может быть настроено для каждого пользователя или аккаунта. Корпоративные клиенты, аккаунты реселлеров, аккаунты дистрибьюторов и клиенты с большим объёмом использования могут иметь право на индивидуальное ценообразование. Свяжитесь с отделом продаж для получения предложения.
Индивидуальное ценообразование может быть настроено по аккаунту, модели, провайдеру, модальности, региону, объёму использования или коммерческому соглашению. Когда включено индивидуальное ценообразование, консоль и API биллинга отражают специфичные для аккаунта цены и правила списания там, где это доступно.
Единицы ценообразования
Разные модальности моделей используют разные единицы измерения. BasicRouter конвертирует эти единицы в кредиты в соответствии с правилами ценообразования модели.
| Модальность | Обычная основа ценообразования |
|---|---|
| Текст | Входные токены, выходные токены, кэшированные токены чтения, кэшированные токены записи, токены рассуждений или специфичные для модели категории токенов. |
| Изображение | Модель, разрешение, количество сгенерированных изображений, использование входных изображений, режим редактирования или настройка качества. |
| Видео | Модель, разрешение вывода, сгенерированные секунды, соотношение сторон, использование входных изображений или видео и тип задачи. |
| Эмбеддинги | Входные токены или количество записей эмбеддингов. |
| Аудио | Длительность ввода, длительность вывода, длина транскрипции или специфичные для модели единицы аудио. |
Единицы ценообразования могут различаться в зависимости от модели. Всегда обращайтесь к странице сведений о модели или метаданным цен перед включением модели в продакшене.
Атрибуция использования
Использованием BasicRouter можно просматривать по аккаунту, API-ключу, модели, модальности или диапазону времени. Это позволяет командам относить затраты к приложениям, окружениям, клиентам или внутренним бизнес-подразделениям.
| Измерение | Описание |
|---|---|
| API-ключ | Группировка использования по приложению, сервису или окружению. |
| Модель | Сравнение затрат и объёма по выбранной модели. |
| Разрешённая модель | Просмотр фактически использованной модели после маршрутизации или резерва. |
| Модальность | Разделение использования текста, изображений, видео, эмбеддингов и аудио. |
| Диапазон времени | Просмотр дневных, месячных или пользовательских отчётных периодов. |
| Метаданные | Группировка использования по пользовательским метаданным запроса, таким как ID клиента, ID тенанта, ID пользователя или окружение. |
Баланс кредитов
Проверьте, сколько кредитов доступно на вашем аккаунте. Баланс разделён на три кошелька, которые списываются по порядку: месячный лимит тарифа, приобретённые пакеты ресурсов и кошелёк с оплатой по факту. Также доступен общий ресурсный итог (месячный тариф + пакеты ресурсов, без учёта оплаты по факту) для отслеживания включённого использования отдельно от расходов на пополнение.
Чтобы получить эти данные программно, см. GET /v1/billing/balance в Справочнике API.
Сведения об использовании
Просматривайте постраничный хронологический список отдельных записей об использовании для отчётности, мониторинга и внутреннего распределения затрат. Каждая запись показывает модель, тип модели (текст, изображение или видео), списанные кредиты и разбивку того, из какого кошелька было произведено каждое списание. Результаты можно фильтровать по конкретному диапазону времени.
Чтобы получить эти данные программно, см. GET /v1/usage в Справочнике API.
История транзакций
Используйте историю транзакций для просмотра движений кредитов, включая пополнения, распределения по тарифам, предоставления пакетов ресурсов, списания за использование, корректировки и административные исправления.
Чтобы получить эти данные программно, см. GET /v1/billing/transactions в Справочнике API.
Неудачные запросы и возвраты
Ошибки валидации, ошибки аутентификации и ошибки разрешений, как правило, не оплачиваются, поскольку выполнения модели не происходит. Запросы, достигающие вышестоящей модели или генерирующие частичный вывод, могут потреблять кредиты в зависимости от модели, провайдера и состояния ответа.
Для асинхронных задач генерации изображений и видео поведение биллинга зависит от того, была ли задача принята, начата, завершена, выполнена с ошибкой или отменена. Ответ с деталями задачи включает информацию об использовании, когда кредиты были потреблены.
Пополнения, месячные тарифы, пакеты ресурсов и потреблённые кредиты возврату не подлежат, если иное не предусмотрено применимым коммерческим соглашением или не требуется по закону.
Эксплуатация
Ошибки
BasicRouter возвращает стабильные коды ошибок, чтобы приложения могли единообразно обрабатывать повторы, резервирование, проблемы с биллингом и отладку.
Совместимые с провайдерами конечные точки по возможности сохраняют форму ошибок исходного семейства API. Собственные конечные точки BasicRouter используют объект ошибок BasicRouter.
Соответствие HTTP-статусов и кодов ошибок
| HTTP-статус | Тип ошибки | Примеры кодов | Повтор |
|---|---|---|---|
| 400 | invalid_request_error | invalid_request, unsupported_parameter, invalid_messages, invalid_image_url | Нет |
| 401 | authentication_error | missing_api_key, invalid_api_key | Нет |
| 402 | billing_error | insufficient_credits, payment_required, quota_exceeded | Нет |
| 403 | permission_error | model_access_denied, endpoint_access_denied, key_scope_denied | Нет |
| 404 | not_found_error | model_not_found, response_not_found, task_not_found | Нет |
| 408 | timeout_error | gateway_timeout, provider_timeout | Да |
| 409 | conflict_error | idempotency_conflict, task_already_cancelled | Зависит |
| 422 | validation_error | schema_validation_failed, unsupported_modality | Нет |
| 429 | rate_limit_error | account_rpm_exceeded, account_tpm_exceeded, provider_rate_limited | Да |
| 500 | internal_error | internal_error | Да |
| 502 | provider_error | provider_bad_gateway, provider_invalid_response | Да |
| 503 | service_unavailable | model_unavailable, provider_unavailable, insufficient_capacity | Да |
| 504 | timeout_error | provider_timeout, gateway_timeout | Да |
Частые коды ошибок
| Код | Значение | Рекомендуемое действие |
|---|---|---|
missing_api_key | API-ключ не предоставлен. | Добавьте заголовок Authorization. |
invalid_api_key | API-ключ недействителен или отозван. | Создайте или смените API-ключ. |
model_not_found | Идентификатор модели не существует или не включён для аккаунта. | Проверьте страницу «Модели» или вызовите GET /v1/models. |
model_access_denied | API-ключ или аккаунт не имеет доступа к модели. | Включите модель или обратитесь к администратору. |
unsupported_parameter | Запрос содержит параметр, не поддерживаемый выбранной конечной точкой или моделью. | Удалите параметр или выберите совместимую модель. |
unsupported_modality | Модальность ввода или вывода не поддерживается выбранной моделью. | Выберите модель, поддерживающую эту модальность. |
account_rpm_exceeded | Превышен лимит запросов аккаунта в минуту. | Повторите с backoff или запросите большие лимиты. |
account_tpm_exceeded | Превышен лимит токенов аккаунта в минуту. | Повторите с backoff, уменьшите количество токенов или запросите большие лимиты. |
provider_rate_limited | Вышестоящий провайдер ограничил частоту запросов. | Повторите или включите резервирование. |
insufficient_credits | На аккаунте недостаточно кредитов. | Пополните кошелёк, купите пакет или повысьте тариф. |
provider_timeout | Вышестоящий провайдер не ответил вовремя. | Повторите или включите резервирование. |
model_unavailable | Модель временно недоступна. | Повторите или используйте алиас маршрутизации. |
content_policy_error | Запрос или вывод заблокированы политикой безопасности. | Измените ввод или выберите подходящий рабочий процесс. |
