API

Все возможности панели доступны через два отдельных API. Оба работают с одним и тем же аккаунтом, одним балансом и одним каталогом; различаются они форматом и возможностями.

Все возможности панели доступны через два отдельных API. Оба работают с одним и тем же аккаунтом, одним балансом и одним каталогом; различаются они форматом и возможностями.

Почему два API?

Классический реселлерский API (v2), которым пользуется вся отрасль, принимает форму на единственном эндпоинте и всегда отвечает HTTP 200. Именно такой формат ожидает готовое панельное ПО, поэтому он сохранён без изменений. А те, кто пишет собственную систему, постоянно упирались в его ограничения: ошибки нельзя было различить, каталог приходил одним куском, а статус заказа приходилось бесконечно опрашивать. v3 написан для них.

Legacy API не будет отключён. Даты завершения поддержки нет; менять работающую интеграцию не придётся.

Сравнение

ВозможностьLegacy (v2)Новый (v3)
ФорматОдин эндпоинт, отправка формы, параметр actionREST на уровне ресурсов, тело в JSON
HTTP-кодВсегда 200, даже при ошибкеНастоящие коды (400, 401, 402, 404, 409, 429, 502)
ОшибкиПроизвольный текстtype + стабильный code + локализованное сообщение + param + doc_url
Статус заказаТолько локализованный текстСтабильное машинное значение плюс отдельная подпись для показа
Описание услугиНетОписание на 10 языках, среднее время, платформа, категория
Поля заказаУгадываются по названию типаКаждая услуга публикует собственную схему полей
Единица ценыНе указана (источник ошибки в 1000 раз на пакетах)Явно указана как per_1000 или per_order
КаталогВсе услуги в одном ответеФильтры и постраничный вывод по курсору
Защита от дублейНетIdempotency-Key
Уведомления о статусеПостоянный опросПодписанные вебхуки или поток событий
СхемаНетOpenAPI 3.1
ЯзыкиАнглийский и турецкий (разные адреса)10 языков (заголовком или параметром)

Какой выбрать?

Legacy (v2)

Выбирайте legacy API, если используете готовое панельное ПО, бота или реселлерскую панель. Большинство из них просят изменить только адрес API и ключ, и всё начинает работать за считаные минуты.

Новый API (v3)

Выбирайте v3, если пишете собственное приложение, витрину или автоматизацию. Обработка ошибок, защита от дублей и уведомления идут в комплекте, а форму заказа можно построить прямо из схемы услуги.

С чего начать

  1. 1Создайте ключ API на вкладке «Ключи».
  2. 2Получите список услуг и посмотрите id и схему полей нужной услуги.
  3. 3Сначала проверьте заказ через preview, затем создайте его.
  4. 4Подключите вебхук или читайте поток событий, чтобы отслеживать изменения статуса.

Ошибки (48)

КодСтатусОписание
missing_api_key401API-ключ не передан. Отправьте его в заголовке 'Authorization: Bearer <key>'.
invalid_api_key401Переданный API-ключ недействителен.
revoked_api_key401Этот API-ключ отозван и больше не может использоваться.
account_banned403Этот аккаунт заблокирован.
account_suspended403Действие этого аккаунта приостановлено.
insufficient_scope403У этого API-ключа нет прав для данного эндпоинта.
invalid_json400Тело запроса не является корректным JSON.
unsupported_content_type415Неподдерживаемый Content-Type. Используйте application/json или application/x-www-form-urlencoded.
method_not_allowed405Этот HTTP-метод не разрешён для данного эндпоинта.
payload_too_large413Тело запроса слишком большое.
missing_parameter400Отсутствует обязательный параметр.
invalid_parameter400У параметра указано недопустимое значение.
invalid_quantity400Количество не является корректным целым положительным числом.
quantity_out_of_range400Количество выходит за пределы диапазона, разрешённого этой услугой.
invalid_comments400Поле комментариев пустое или содержит слишком много строк.
invalid_username400Имя пользователя недопустимо для этой услуги.
invalid_subscription400Параметры подписки некорректны.
invalid_runs400Значение 'runs' недопустимо для постепенной подачи.
invalid_interval400Значение 'interval' недопустимо для постепенной подачи.
dripfeed_not_supported400Эта услуга не поддерживает постепенную подачу.
missing_required_field400Обязательное для этого типа услуги поле отсутствует или некорректно.
service_inactive400Эта услуга сейчас недоступна для заказа.
invalid_cursor400Курсор постраничной навигации некорректен.
invalid_limit400Параметр 'limit' выходит за пределы допустимого диапазона.
invalid_webhook_url400URL вебхука должен быть публичным адресом https://.
invalid_events400Один или несколько запрошенных типов событий неизвестны.
batch_too_large400Слишком много элементов в одном пакетном запросе.
cancel_not_supported400Эта услуга не поддерживает отмену.
refill_not_supported400Эта услуга не предлагает рефилл.
unknown_endpoint404Неизвестный эндпоинт. Доступные маршруты см. в справочнике API.
service_not_found404Услуга с таким id не найдена.
order_not_found404Заказ с таким id в вашем аккаунте не найден.
refill_not_found404Рефилл с таким id в вашем аккаунте не найден.
webhook_not_found404Эндпоинт вебхука с таким id в вашем аккаунте не найден.
order_not_cancelable409Этот заказ больше нельзя отменить из-за его текущего статуса.
cancel_rejected409Поставщик отклонил запрос на отмену.
order_not_completed409Рефилл можно запросить только для выполненного заказа.
idempotency_key_reuse409Этот Idempotency-Key уже использовался с другим телом запроса.
idempotency_in_progress409Запрос с этим Idempotency-Key ещё обрабатывается. Повторите чуть позже.
webhook_limit_reached409Достигнуто максимальное число эндпоинтов вебхуков.
insufficient_balance402На вашем балансе недостаточно средств для этого заказа.
rate_limit_exceeded429Превышен лимит запросов. См. заголовок ответа Retry-After.
provider_error502Поставщик вернул ошибку. Повторите попытку.
refill_failed502Запрос на рефилл отклонён поставщиком.
service_temporarily_unavailable503Эта услуга временно недоступна. Повторите попытку позже.
internal_error500На нашей стороне произошла непредвиденная ошибка.