Начало работы
Ошибки
Коды статуса соответствуют семантике HTTP. Тело ответа — JSON одной из трёх форм, поэтому читайте то поле, которое присутствует, а не полагайтесь на одно конкретное.
| Статус | Значение | Повторять? |
|---|---|---|
200 | Успех. Пустой результат тоже возвращается как 200 с data: [] или count: 0. | — |
400 | Поисковая система отклонила запрос, или limit/scroll_time экспорта превышает максимум. | Нет, исправьте запрос |
403 | Проблема с ключом, подпиской, IP или доступом к источнику. Также недействительный курсор экспорта. | Нет |
404 | Автомобиль, объявление или запись справочника не найдены в ваших источниках, или курсор экспорта истёк. | Нет |
422 | Ошибка валидации. errors указывает каждое поле. | Нет, исправьте поля |
503 | Поиск временно недоступен. Соблюдайте Retry-After (в секундах). | Да, после задержки |
429 / 5xx | Сбой внешнего сервиса или инфраструктуры. Тело может быть в HTML. | Да, с ограниченным backoff |
Формы тела ответа
| Форма | Когда используется |
|---|---|
{"error": "…"} | Ошибки доступа и поиска. Часто возвращает контекст, например car_id, vin, domain_id или ip. |
{"errors": {"field": ["…"]}} | Валидация. message есть на одних эндпоинтах и отсутствует на других. Сообщения следуют lang. |
{"message": "…"} | Ошибки лимитов экспорта (с your_value и default_value) и сбои фреймворка. |
На публичных маршрутах нет фиксированного лимита запросов в минуту, но лимиты аккаунта и внешних сервисов всё равно могут действовать. Всегда соблюдайте Retry-After, если он присутствует.
Обработка ошибок с повторами
# --retry repeats 429 and 5xx responses and honors Retry-After.
# --fail-with-body exits non-zero on 4xx/5xx but still prints the JSON.
curl -sg --fail-with-body --retry 3 \
"https://api.lotarius.com/search?perPage=1&api_key=$CARS_API_KEY" \
-H "Accept: application/json"422 · perPage=1Live
{
"errors": {
"perPage": [
"The per page field must be at least 2."
]
}
}