☰ Меню · Помилки
Початок роботи

Помилки

HTTP-статус вказує на тип проблеми, а тіло JSON пояснює, що саме сталося і, якщо йдеться про одне поле, про яке саме.

JSON
{
  "error": {
    "type": "invalid_request_error",
    "code": "parameter_invalid",
    "message": "consent: must be true: confirm the guest agreed to data processing",
    "param": "consent"
  },
  "request_id": "req_0d4d15b86c484738b46b"
}
error.typestring
Загальний клас: invalid_request_error, authentication_error, permission_error, idempotency_error, rate_limit_error, api_error.
error.codestring
Стабільний машинозчитуваний код, наприклад member_not_found. Розгалужуйте логіку за ним, а не за текстом повідомлення.
error.messagestring
Речення для розробника. Текст може змінюватися, не розбирайте його програмно.
error.paramstring
Поле запиту, якого стосується помилка, якщо таке є.
request_idstring
Також передається в заголовку X-Request-Id кожної відповіді. Вказуйте його, коли пишете нам.

Коди статусу

СтатусЗначенняЩо робити
200, 201Успіх. 201 означає, що створено щось нове.
400Запит сформовано неправильно або поле має недопустиме значення.Виправте запит. Повтор з тим самим тілом дасть ту саму відповідь.
401Ключа немає, він невідомий або відкликаний.Перевірте ключ.
402Запит коректний, але виконати його неможливо, наприклад через недостатній баланс.Покажіть гостю повідомлення. Подробиці є в тілі відповіді.
403У ключа немає права, потрібного для цього запиту.Використайте ключ із правом, указаним у повідомленні.
404Учасника, транзакції, страви або замовлення в цьому закладі не існує.Перевірте ідентифікатор.
409Конфлікт: номер картки зайнятий, зміна статусу недопустима або баланс змінився під час запиту.Перевірте код. Для balance_conflict повторіть запит з тим самим external_id.
429Забагато запитів.Зачекайте стільки секунд, скільки вказано в Retry-After.
500, 502, 503Збій на нашому боці.Повторіть запит із наростаючою затримкою та тим самим external_id або Idempotency-Key. Нічого не буде застосовано двічі.

Поширені коди

КодКоли виникає
parameter_invalidПоле відсутнє або має неправильний формат. Дивіться param.
member_not_foundЖоден учасник не відповідає номеру картки, штрихкоду, телефону чи id.
card_number_takenЦей номер картки вже має інший учасник у цьому закладі.
insufficient_balanceredeem_amount перевищує баланс кешбеку. Поточний баланс указано в available.
redeem_not_supportedУ програмі учасника немає балансу кешбеку для списання.
visit_not_supportedВізит надіслано для програми з кешбеком. Натомість надішліть чек із сумою.
no_reward_availableУ учасника немає отриманої нагороди для видачі.
transaction_not_foundТранзакції з таким external_id немає.
invalid_status_transitionЗамовлення не може перейти з поточного статусу в той, який ви надіслали.
missing_scopeУ ключа немає потрібного права.
hold_requiredЗаклад списує кешбек лише через резерви. Створіть резерв через POST /v1/holds.
hold_expired, hold_captured, hold_releasedЦей резерв більше не можна використати. Створіть новий.
register_id_requiredЗаклад нумерує чеки окремо для кожної каси, тому register_id обов’язковий.
check_too_oldclosed_at старіший, ніж приймає заклад.
scan_requiredЗаклад приймає це лише для картки, яку цей ключ щойно сканував.
refund_exceeds_checkПовернення більше за залишок чека. Залишок указано в refundable.
adjustments_disabledЗаклад не дозволив коригувати баланс через API.
idempotency_key_reusedТой самий Idempotency-Key використано з іншим тілом запиту.
rate_limitedЗабагато запитів із цього ключа.
Питання щодо інтеграції: api@loyaltyfy.io. Відповідаємо протягом одного робочого дня.