Войти в ЛК
Разделы документации

Документация → Коды ошибок

Коды ошибок

Ошибки приходят как application/problem+json с машинным кодом.

Любая ошибка — статус 4xx/5xx и application/problem+json (RFC 9457) с машинным code и request_id; заголовок Request-Id есть в каждом ответе. Ветвитесь по code, а title и detail показывайте человеку — их текст может уточняться. Все коды — примеры ответов каждой операции и страница https://lazycrm.ru/docs/api/errors.

{
  "type": "https://lazycrm.ru/docs/api/errors#validation_error",
  "code": "validation_error",
  "title": "Поле не прошло проверку",
  "status": 422,
  "detail": "Телефон должен быть в формате +7XXXXXXXXXX, получено «8 900 12».",
  "errors": [
    {
      "field": "phone",
      "code": "invalid_phone"
    }
  ],
  "request_id": "req_8f2c1a9b"
}

Коды ошибок

statuscodeКогдаЧто делать
400idempotency_key_requiredОтправка без заголовка Idempotency-KeyДобавить заголовок (UUID)
400invalid_cursorКурсор битый или выдан для другого запросаНачать список заново без cursor
400unknown_parameterНеизвестный query-параметр или поле тела (в т.ч. tenant_id); имя — в errors[].fieldУбрать параметр
401channel_key_expiredCheckout boundary returned channel_key_expiredInspect the scoped channel and original operation receipt before retrying.
401invalid_api_keyКлюч неизвестен или отозванВыпустить новый в кабинете
401missing_api_keyНет заголовка AuthorizationПередать ключ
403channel_grant_requiredCheckout boundary returned channel_grant_requiredInspect the scoped channel and original operation receipt before retrying.
403channel_scope_mismatchCheckout boundary returned channel_scope_mismatchInspect the scoped channel and original operation receipt before retrying.
403insufficient_scopeУ ключа нет нужного права; detail называет егоВыпустить ключ с полным доступом
403server_channel_requiredCheckout boundary returned server_channel_requiredInspect the scoped channel and original operation receipt before retrying.
404not_foundОбъекта нет или он другого ресторанаПроверить id
409campaign_already_sentОтправка рассылки не в draft с новым ключом повтораПрочитать статус GET /v1/campaigns/{campaign_id}
409campaign_not_cancelableОтправка уже началась, закончилась или рассылка не запланированаНичего — рассылку уже не отменить
409empty_audienceНа момент отправки получателей 0Выбрать другой сегмент
409idempotency_conflictCheckout boundary returned idempotency_conflictInspect the scoped channel and original operation receipt before retrying.
409idempotency_request_in_progressПервый запрос с этим ключом повтора ещё выполняетсяПовторить через секунду
409loyalty_conflictCheckout boundary returned loyalty_conflictInspect the scoped channel and original operation receipt before retrying.
422idempotency_key_reusedТот же ключ повтора с другим запросомНовый ключ на новый запрос
422validation_errorЗначение не прошло проверку; причины в errors[]: unknown_segment, text_empty, text_too_long, scheduled_at_in_past, invalid_phone, invalid_datetime, out_of_range, requiredИсправить поле из errors[].field
429rate_limitedБольше 600 запросов в минуту на ключ; Retry-AfterПодождать Retry-After секунд
429send_limit_reached20 отправок за сутки уже было; Retry-After до полуночи ресторанаОтправить завтра
500internal_errorОшибка на нашей сторонеПовторить запрос; не проходит — написать в поддержку с request_id
503sending_disabledОтправка SMS на платформе временно выключена; Retry-AfterПовторить позже тем же ключом повтора
503upstream_unavailableСервис или SMS-шлюз временно недоступен; Retry-AfterПовторить позже