Начало работы
Ошибки
Формат ошибок, коды статусов и когда стоит повторять запрос.
Ошибки используют обычные коды статусов HTTP и всегда возвращают одинаковую JSON-обёртку со стабильным машинным кодом.
Формат ошибки#
{
"error": {
"code": "rateLimited",
"message": "Rate limit exceeded",
"retryAfter": 12
}
}error.code стабилен, на него можно опираться в коде. error.message — подсказка для человека, она может меняться. Некоторые ошибки добавляют поля: retryAfter для лимитов, reason для квот и ограничений тарифа, issues для ошибок валидации.
Коды ошибок#
| Статус | Код | Значение | Повторять? |
|---|---|---|---|
| 400 | validation | Некорректный параметр или тело запроса; смотри error.issues. | Нет |
| 401 | unauthorized | API-ключ отсутствует, некорректен или отозван. | Нет |
| 402 | planRequired | Тариф не включает доступ к API или эту функцию. | Нет |
| 403 | forbidden | Запрос запрещён. | Нет |
| 404 | notFound | Токен ещё не сканировали или кошелёк ещё не профилировали. | Позже |
| 409 | conflict | Запрос конфликтует с текущим состоянием. | Нет |
| 429 | rateLimited | Слишком много запросов в минуту или исчерпана месячная квота. | Да |
| 500 | generic | Сбой на нашей стороне. | Да |
| 503 | unavailable | Техобслуживание или у поставщика данных закончилась мощность. | Позже |
Ошибки валидации#
Некорректные параметры возвращают 400 со списком issues, указывающих на проблемное поле.
400
{
"error": {
"code": "validation",
"message": "Invalid input",
"issues": [
{
"path": "pageSize",
"message": "Invalid input"
}
]
}
}