OneProvider
API реселлера

API реселлера: авторизация

Bearer-токены, права доступа, белый список IP, лимит запросов, коды ошибок, ключи идемпотентности и пагинация партнёрского API OneProvider. С примерами.

Bearer-токены, права доступа, белый список IP, лимит запросов, коды ошибок, ключи идемпотентности и пагинация партнёрского API.

Все модели, характеристики и цены Индекс документации для AI-агентов: https://oneprovider.dev/docs/llms.txt

Токены

Токен выглядит как rsk_ и 40 символов. Его создают в кабинете (вкладка реселлера, «API и интеграции»), значение показывается один раз: мы храним только хеш и последние 4 символа. Активных токенов может быть до 10, любой токен можно отозвать в любой момент.

http
Authorization: Bearer rsk_...
Только с сервера CORS отключён. Не встраивайте токен в браузерный бандл или мобильное приложение: ходите в API со своего бэкенда. Если реселлер теряет доступ, все его токены отвечают 403 reseller_disabled.

Права (scopes)

У токена есть набор прав. Права независимы: keys не включает read. Метод GET /me доступен любому действующему токену. Без нужного права ответ 403 forbidden_scope.

Права токена
ScopeЧто открывает
readЧтение: баланс и проводки, цены, модели, клиенты, ключи, заказы, тарифы, статистика, журнал действий GET /audit (все GET, кроме кодов и вебхуков).
keysЗапись: клиенты (в том числе блокировка), выпуск, изменение, пауза, пополнение, перевыпуск (rotate) и удаление ключей, POST /orders.
codesПачки кодов и сами коды (чтение, создание, отзыв, погашение). Коды это секреты, поэтому отдельное право.
plansСоздание, изменение и удаление тарифов (чтение тарифов в read).
billingПополнение баланса реселлера: POST /balance/topups и статус платежа.
webhooksУправление вебхуками, тест и журнал доставок.
supportЗарезервировано под будущие методы поддержки.
botЧтение состояния ботов и касс: GET /bot и GET /payment-providers (токенов в ответах нет). Подключение ботов только в кабинете.

Для каждого метода право указано в справочнике .

Белый список IP

Токен можно привязать к списку адресов IPv4/IPv6 или сетей CIDR. Запрос с другого адреса получает 403 ip_not_allowed. Список задаётся при создании токена.

Лимит запросов

20 запросов в секунду на токен. При превышении: 429 rate_limited и заголовок Retry-After. Подождите указанное число секунд и повторите.

Ошибки

Любая ошибка возвращается в одной форме. Тот же идентификатор приходит в заголовке X-Request-Id: назовите его в поддержке.

json
{
"error": {
"code": "insufficient_balance",
"message": "Not enough free reseller balance for this key.",
"request_id": "req_..."
}
}

Ориентируйтесь на error.code, а не на текст сообщения.

Коды ошибок
HTTPcodeЗначение
400invalidПоле отсутствует или вне допустимого диапазона.
400bad_requestЗапрос не удалось разобрать.
400idempotency_key_requiredНет заголовка Idempotency-Key на методе, который тратит деньги.
400invalid_urlАдрес вебхука не прошёл проверку (только https, без IP-адресов и внутренних сетей).
400limit_below_spentНовый лимит ключа меньше уже потраченного.
401unauthorizedТокен не передан, не существует или отозван.
403forbidden_scopeУ токена нет нужного права (scope).
403ip_not_allowedIP-адрес запроса не входит в белый список токена.
403reseller_disabledРеселлеру закрыт доступ: все его токены отвечают так.
403bannedАккаунт заблокирован.
404not_foundОбъект не найден или принадлежит другому реселлеру.
404key_not_foundКлюч не найден.
409insufficient_balanceСумма не помещается в «Свободно» (available_usd), см. правило денег.
409idempotency_key_reusedТот же Idempotency-Key уже использован с другим телом запроса: возьмите новый ключ.
409fund_firstСначала пополните баланс реселлера.
409not_activatedКабинет реселлера ещё не активирован.
409name_takenКлюч с таким именем уже есть.
409key_limitДостигнут максимум ключей.
409plan_limitДостигнут максимум тарифов (20).
409customer_limitДостигнут максимум клиентов (10 000).
409code_usedКод уже погашен.
409code_revokedКод отозван.
409external_order_id_conflictexternal_order_id уже использован с другими параметрами.
409customer_existsКлиент с таким external_id уже есть.
409customer_blockedКлиент заблокирован: ключи, заказы и погашения для него отклоняются.
409token_limitДостигнут максимум активных токенов (10).
409webhook_limitДостигнут максимум вебхуков (5).
429rate_limitedБольше 20 запросов в секунду; подождите Retry-After секунд.
501sandbox_not_implementedПесочница (rsk_test_...) пока не реализована.
503provider_unavailableПлатёжный или модельный провайдер временно недоступен: повторите позже.

Идемпотентность

Методы, которые тратят деньги, требуют заголовок Idempotency-Key (1..128 символов); без него ответ 400 idempotency_key_required. Они отмечены в справочнике. Повтор запроса с тем же ключом (в рамках реселлера) не потратит деньги второй раз и вернёт тот же объект. Для нового платежа или заказа берите новый ключ; у POST /orders личность заказа определяет external_order_id.

bash
curl -s -X POST https://app.oneprovider.dev/partner/v1/keys \
-H "Authorization: Bearer $OP_PARTNER_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"name":"client-1","limit_usd":"10.00"}'

Храните ключ идемпотентности вместе с вашей записью о заказе, чтобы при сетевой ошибке повторить ровно тот же запрос.

Пагинация

Списки принимают ?limit=1..100 (по умолчанию 50) и &cursor=. Ответ: {"items": [...], "next": "<cursor>"}; next равен null на последней странице. Курсор непрозрачный: передавайте его как есть.

bash
curl -s "https://app.oneprovider.dev/partner/v1/keys?limit=100&cursor=<next from the previous page>" \
-H "Authorization: Bearer $OP_PARTNER_TOKEN"

Песочница

Тестовые токены rsk_test_... скоро. Пока такой токен получает 501 sandbox_not_implemented.

Последнее обновление: 2026-10-21 Нашли ошибку? @Oneproviderhelpbot