Ошибки API используют единый JSON-формат:
{
"message": ["Human-readable detail"],
"error": "Error name",
"statusCode": 400
}
В программной логике опирайтесь на HTTP-статус и контракт метода, а не на
точный текст message.
Коды состояния
| Статус | Значение |
|---|---|
400 | Неверные входные данные, недоступная операция или недопустимое состояние ресурса |
401 | API-ключ отсутствует, неверен, некорректно оформлен или не связан с организацией |
404 | Указанный ресурс не найден |
409 | Ресурс уже существует |
429 | Достигнут лимит запросов; повторите запрос позже с задержкой |
500 | Неожиданная ошибка сервера |
ID запросов
Каждый ответ содержит заголовок x-request-id. Записывайте его вместе с
методом, путём, временем и статусом запроса. Передавайте его поддержке, чтобы
запрос можно было найти без раскрытия учётных данных.
Политика повторов
Повторяйте ответы 429 и временные ошибки 5xx с ограниченной экспоненциальной
задержкой и джиттером. Учитывайте Retry-After, если он присутствует.
const retryable = response.status === 429 || response.status >= 500;
const delayMs = Math.min(30_000, 500 * 2 ** attempt) + Math.random() * 250;
Не повторяйте ошибки валидации, аутентификации или отсутствующего ресурса без изменения запроса либо учётных данных.