CarStat.dev
Начало работы

Ошибки

Коды статуса соответствуют семантике 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."
    ]
  }
}