Ошибки

Конверт один на все отказы. Ветвитесь по code и reason; message написан для людей и может меняться.

Обновлено 26 сентября 2026 г. · 3 мин чтения
Markdown

Конверт

{"error": {
  "code": "insufficient_balance",       
  "reason": null,                       
  "message": "Аванса не хватает…",      
  "details": {"required": "20.00", …},  
  "request_id": "req_5f0c2a9e…"         
}}
  1. code — машинный код: ветвитесь по нему
  2. reason — уточнение у части кодов
  3. message — для людей, может меняться
  4. details — данные к отказу
  5. request_id — назовите его поддержке

Незнакомый код

Повторите с тем же reseller_ref или Idempotency-Key и назовите поддержке request_id.

Реестр кодов

200 принято401 · 403 доступ404 · 405 · 410 нет объекта409 конфликт или состояние4xx запрос не прошёл402 · 429 деньги и лимиты5xx наша сторона
Ключ и доступ7
401unauthenticated
Ключ API не принят: нет ключа, он неверный или отозван
403scope_missing
У ключа нет нужной области
403ip_not_allowed
Адрес запроса не входит в разрешённые для ключа
403browser_not_allowed
API вызывается только с сервера, не из браузера
403account_suspended
Аккаунт партнёра приостановлен — напишите в поддержку
410claim_expired
Ссылка выдачи ключа просрочена — запросите новую
reason:unknown — ссылки нет или истекла
410claim_used
Ссылка выдачи ключа уже использована — запросите новую
Запрос8
404not_found
Такого адреса нет
405method_not_allowed
Метод не поддерживается этим адресом
411length_required
Нужен заголовок Content-Length
413body_too_large
Тело запроса слишком большое
415unsupported_media_type
Тело запроса должно быть application/json
422validation_error
Запрос не прошёл проверку
reason:duplicate_line — пара «товар + вариант» дваждыmax_units — единиц больше лимитаidempotency_key_required — нет Idempotency-Keynetwork — сети нет в списке (песочница)
422idempotency_conflict
Ключ повтора уже использован с другим запросом
reason:idempotency_key — ключ повтора с другим телом или объектомreseller_ref — ref с другим телом, прежний заказ — в details.order_id
409idempotency_in_progress
Такой же запрос ещё выполняется — повторите позже
Заказ и товар8
404product_not_found
Товар не найден или скрыт
409not_available_via_api
Этот товар через API не продаётся
409variant_required
Укажите вариант товара
422empty_order
В заказе нет позиций
409out_of_stock
Нет в наличии
reason:пусто — нет в наличииqueue_full — очередь card_pay занятаone_per_order — card_pay по однойno_mailbox — нет почты под «новый аккаунт»below_floor — неприкосновенный остаток розницыreservation_lost — резерв ушёл, повторите
409new_account_unavailable
«Новый аккаунт» доступен только для оплаты нашей картой
reason:not_card_pay — «новый аккаунт» только у card_pay
409price_changed
Сумма выше max_total_usd — перечитайте цену
404order_not_found
Заказ не найден
Аванс и лимиты3
402insufficient_balance
Аванса не хватает — пополните и повторите с тем же reseller_ref
429rate_limited
Слишком много запросов — повторите после Retry-After
reason:keyordersactivationglobalwebhookчей лимит сработал
429daily_cap_reached
Исчерпан суточный лимит
reason:orders — заказов за суткиspend — трат за сутки
Активации5
404activation_not_found
Активация не найдена
409invalid_state
Объект не в том состоянии для этого действия
reason:not_pending — отменить можно только pendingпричины активаций — раздел «Активации»
422credential_invalid
Данные клиента не подходят для этой активации
reason:формат данных клиента — раздел «Активации»
200credential_warning
Данные приняты, но формат непривычный — проверьте вставку
422login_link_invalid
Ссылка входа не подходит
reason:not_requestedbad_linkempty
События и вебхук4
409webhook_not_configured
Адрес вебхука не задан
422webhook_url_invalid
Адрес вебхука не прошёл проверку
reason:not_httpsbad_portbad_urlprivate_addressunresolvableforbidden_host
422invalid_cursor
Курсор не распознан
410cursor_expired
Курсор старше срока хранения событий — начните заново без after
Сервис3
503api_disabled
API временно выключен
503rate_unavailable
Курс недоступен — повторите позже
500internal_error
Внутренняя ошибка — повторите запрос с тем же ключом повтора

Пример отказа

Пример: Аванса не хватает

{
  "reseller_ref": "ord-10483",
  "items": [
    {
      "product_id": "3f6c0e7e-2b1d-4c1a-9a57-4d0f1b8e2c11",
      "quantity": 1
    }
  ]
}
{
  "error": {
    "code": "insufficient_balance",
    "reason": null,
    "message": "Аванса не хватает — пополните и повторите с тем же reseller_ref",
    "details": {
      "balance": "4.00",
      "required": "20.00"
    },
    "request_id": "req_5f0c2a9e41d7b3a8"
  }
}
Страница помогла?