Перейти к основному содержанию

Формат ошибок

Ошибки возвращаются в одной из трёх форм. Большинство эндпоинтов использует первую; две другие встречаются на конкретных путях и описаны здесь, чтобы ваш клиент не пропустил код ошибки, который ищет. Стандартная. Код code для программной обработки, вложенный в detail.error:
Лимит уровня аккаунта. Те же поля, но на верхнем уровне, без detail — этот ответ формируется до того, как запрос дойдёт до эндпоинта:
Плоская. Шаги подтверждения вывода кладут code рядом с detail, а в detail находится само сообщение:
Код есть не в каждом ответе. Ошибки валидации запроса приходят в собственном формате фреймворка, где detail — массив ошибок по полям, а не строка; несколько внутренних проверок возвращают {"detail": "..."} с обычным текстом. При этом часть ответов 422 код всё же несёт, в стандартной форме, — например повторно использованный ключ идемпотентности.
Читайте код из первого поля, которое присутствует: detail.error.code, затем error.code, затем code. Если нет ни одного, ориентируйтесь на HTTP-статус. И никогда не считайте detail строкой: в стандартной форме это объект, а в ошибке валидации — массив.

HTTP-коды состояния

Основные коды ошибок

Возвращаются в стандартной форме, в поле detail.error.code:
У Node API (node.tronrental.com) свои коды ошибок в другом формате — см. Node API → Лимиты и ошибки.
INSUFFICIENT_BALANCE используется не везде. POST /api/v1/smart-mode/activate и POST /api/v1/transfer-packages/buy сообщают о том же условии статусом 400 с сообщением и без кода: {"detail":{"error":{"message":"Insufficient balance"}}}. На этих двух эндпоинтах не определяйте нехватку средств по одному лишь коду.

Коды автопополнения

Возвращаются в стандартной форме эндпоинтами автопополнения:

Коды подтверждения вывода средств

POST /api/v1/account/withdrawal возвращает эти коды подтверждения в плоской форме, где code стоит рядом с detail. Остальные ошибки того же эндпоинта приходят в стандартной форме:

Стратегия повторных попыток

Повторяйте ответы 5xx с экспоненциальной задержкой. Для 429 используйте заголовок Retry-After, если он есть, и сначала прочитайте тело — не всякий 429 является лимитом частоты (см. Лимиты запросов).