API ключ
Статистика запросов
Не просто API, а интеллектуальный слой доверия к автомобильным данным.
Мы превращаем разрозненные объявления из разных источников в аккуратную, сопоставимую и предсказуемую базу. Система убирает шум, склеивает дубликаты, стандартизирует сущности и оставляет вам данные, с которыми можно строить продукт без хаоса.
Отчеты инспекций приводятся к единому стандарту
Источники отдают инспекции в разных форматах: от структурированных API до сканов и PDF. Мы приводим выводы, проверки, повреждения, диагностику, медиа и файлы к одному предсказуемому контракту, поэтому интеграции не нужны отдельные парсеры для каждого источника.
Дубликаты находятся даже без VIN
Если VIN отсутствует, система сравнивает фотографии, характеристики, историю объявлений и десятки косвенных сигналов. Решение о склейке принимается по совокупности индикаторов, поэтому результат выглядит почти как магия.
Марки и модели приводятся к единому стандарту
У каждой марки и модели есть десятки и сотни синонимов. Эта база поддерживается живым человеком, потому что порядок и достоверность в таких данных нельзя полностью доверить ИИ.
Локации становятся точными и сопоставимыми
Любая локация приводится к единой базе: страна, регион, город и координаты. У машины появляются широта и долгота, что открывает умные сортировки, радиусный поиск и аналитику по географии.
Опции машин стандартизируются на отдельном уровне
ИИ помогает разбирать сложные, локальные и разноязычные названия опций, а человек подключается там, где модель не уверена. Поэтому taxonomy остается сильной, расширяемой и пригодной для фильтров.
Запросы по дням
—Запросы по месяцам
—Важное замечание перед использованием API
/cars предназначен для скачивания всех машин. Он использует scroll-пагинацию: на сервере создается временный scroll-контекст, и количество запросов для продолжения такой пагинации технически не может быть безлимитным.
/search предназначен для поиска машин по фильтрам. У него нет такого технического ограничения scroll-запросов, но максимальное окно пагинации ограничено 10k результатов.
Рекомендуемый процесс синхронизации: 2-3 раза в сутки проходить полный список через /cars и сохранять полученные машины. Все машины, которых не было в последнем завершенном полном проходе, нужно считать архивными на вашей стороне.
Когда машина архивируется, она исчезает из /search и /cars, но обычно остается в базе примерно еще 1 месяц. В этот период /cars/{car_id} и /listing/{domain_id}/{listing_id} могут вернуть ее с отдельной меткой архивного объявления. Примерно через месяц машина может исчезнуть и из этих эндпоинтов.
Новые поля автомобиля и объявления
Все поля добавлены обратно совместимо: прежние поля ответа остаются без изменений. Указанные boolean-поля также принимаются как фильтры /search и /search/count.
- cylinders
- Количество цилиндров двигателя в корневом объекте машины.
- doors
- Количество дверей в корневом объекте машины.
- seats
- Количество мест в корневом объекте машины. /search и /search/count принимают seats как точный integer-фильтр.
- has_inspections
- Корневой boolean-флаг. Возвращается всеми эндпоинтами машин и принимается как фильтр поиска. Полные inspections есть только в детальных ответах.
- has_history_reports
- Корневой boolean-флаг для быстрого определения наличия истории. Возвращается всеми эндпоинтами машин и принимается как фильтр поиска.
- listings[].has_history_reports
- Флаг истории конкретного объявления. Используйте именно его для отображения и подсчета истории по отдельной площадке.
- listings[].is_manufacturer_certified
- Признак сертификации объявления производителем или официальной дилерской программой. Также принимается как фильтр поиска.
- inspections
- Массив полных публичных инспекций в детальных эндпоинтах.
- vehicle_history_reports
- Массив полных публичных отчетов истории в детальных эндпоинтах. Каждый отчет остается привязанным к объявлению из vehicle_ref.
Отчеты инспекций автомобилей
Машина может содержать стандартизированные отчеты инспекций. Легкий boolean-флаг has_inspections означает, что с активным объявлением связан хотя бы один опубликованный отчет.
Поведение эндпоинтов
- GET /search
- Возвращает только has_inspections. Массив inspections намеренно не включается, чтобы ответ поиска оставался компактным.
- GET /cars
- Возвращает has_inspections и inspections. Массив содержит публичные опубликованные отчеты для активных объявлений, доступных API-ключу.
- GET /cars/{car_id}
- Возвращает все публичные опубликованные отчеты для активных объявлений машины, доступных API-ключу.
- GET /listing/{domain_id}/{listing_id}
- Возвращает отчеты только для точной пары domain_id и listing_id.
Публичный формат отчета
{
"schema_version": 1,
"mapper_contract_version": 1,
"report_id": "inspection_987654",
"uuid": null,
"status": "published",
"visibility": "public",
"language": "ko",
"inspected_at": "2026-05-31T04:20:00+00:00",
"valid_until": "2026-08-31T23:59:59+00:00",
"created_at": "2026-05-31T04:27:33+00:00",
"updated_at": null,
"system_updated_at": "2026-07-07T12:30:00+00:00",
"vehicle_ref": {
"domain_id": 123,
"listing_id": "987654",
"site_car_id": null,
"vin": "..."
},
"vehicle_snapshot": {
"title": "...", "brand": "...", "model": "...",
"year": 2024, "vin": "...", "mileage_km": 24000,
"fuel_type": "...", "transmission": "...", "engine_type": "..."
},
"source": {
"source_key": "provider", "source_type": "external_api",
"source_report_id": "987654", "source_language": "ko",
"mapper_version": "provider-v1", "imported_at": "..."
},
"access": {"attach_to_listing": true},
"participants": [{
"role_key": "inspector", "name": "...",
"company_id": 10, "user_id": 20, "source_label": "..."
}],
"conclusions": {
"overall_result_key": "issue", "accident_status_key": "issue",
"water_damage_status_key": "ok", "fire_damage_status_key": "ok",
"chemical_damage_status_key": "ok", "biohazard_status_key": "ok",
"notes": "..."
},
"source_claims": [{
"id": "claim_1", "type_key": "accident", "result_key": "issue",
"source_code": "...", "source_label": "...", "description": "..."
}],
"inspection_blocks": [{
"id": "exterior", "key": "exterior", "result_key": "issue",
"source_code": "...", "source_label": "...",
"description": "...", "sort_order": 10
}],
"checked_items": [{
"id": "item_1", "block_id": "exterior", "block_key": "exterior",
"part_key": "front_fender_left", "part_label": "...",
"location_key": "left_front", "location_label": "...",
"result_key": "issue", "issue_type_keys": ["replaced", "painted"],
"severity_key": "medium", "damage_rank_key": "rank_2",
"accident_relevance_key": "cosmetic", "source_code": "...",
"source_label": "...", "description": "...",
"recommendation_key": "monitor", "clarification": "...",
"evidence_media_ids": ["photo_1"], "visual_map_id": "body_map",
"visual_marker_id": "marker_1", "visual_marker_label": "X",
"visual_x": 42.5, "visual_y": 21.0,
"visual_width": 12.0, "visual_height": 8.0,
"visual_shape_key": "polygon",
"measurements": [{
"id": "measurement_1", "type_key": "paint_thickness",
"value_number": 210, "value_text": null, "unit_key": "micrometer",
"result_key": "issue", "description": "..."
}]
}],
"diagnostic_errors": [{
"id": "dtc_1", "system_key": "engine", "system_label": "...",
"code": "P0001", "description": "...", "status_key": "stored",
"severity_key": "medium", "source_label": "..."
}],
"media": [{
"id": "photo_1", "type_key": "inspection_photo",
"external_url": "https://...", "local_path": null, "server_id": null,
"description": "...", "block_id": "exterior",
"checked_item_id": "item_1", "sort_order": 1
}],
"files": [{
"id": "file_1", "type_key": "source_report",
"external_url": "https://...", "local_path": null, "server_id": null,
"original_name": "report.pdf", "extension": "pdf",
"description": "...", "block_id": null,
"checked_item_id": null, "sort_order": 1
}],
"limitations": [{
"id": "limit_1", "type_key": "partial_coverage",
"description": "...", "source_label": "..."
}]
}Правила контракта
- Если доступных отчетов нет, inspections содержит пустой массив.
- Возвращаются только отчеты с видимостью public и статусом, отличным от archived.
- Отчеты сортируются по system_updated_at по убыванию, затем created_at по убыванию и report_id по возрастанию.
- language обозначает язык исходного отчета, а не язык интерфейса. Стандартные ключи следует переводить в клиентском приложении.
- id идентифицирует объект внутри одного отчета и не является ключом перевода. Переводите канонические block_key, part_key, location_key, result_key и другие документированные поля *_key; не создавайте словари из сокращений источника.
- Переводите при наличии: conclusions.*_result_key; source_claims type_key/result_key; inspection_blocks key/result_key; checked_items block_key/part_key/location_key/result_key/issue_type_keys/severity_key/damage_rank_key/accident_relevance_key/recommendation_key/visual_shape_key; measurements type_key/unit_key/result_key; diagnostic_errors system_key/status_key/severity_key; а также type_key у media, files и limitations.
- result_key — нормализованный общий итог. Полный текущий набор значений: ok, issue, not_checked, not_applicable, not_equipped и unknown. None для проверки утечки, Good и Adequate могут правильно означать ok; unknown никогда не означает ok.
- Текущие стабильные issue_type_keys: scratch, dent, crack, broken, missing, replaced, repaired, painted, corrosion, wear, leak, noise, malfunction, contamination, water_damage, fire_damage, chemical_damage, biohazard, structural_damage, damage, accident_trace и other. Стабильные block_key: exterior, interior, body_structure, mechanical, powertrain, electrical, equipment_operation, driver_assistance, tires_wheels, brakes, diagnostics, road_test, documents и other. part_key — расширяемая независимая от источника taxonomy, общая для всех текущих и будущих источников. Смысл существующих канонических значений не меняется, но после повторной обработки пункт отчета может перейти из unknown в более точный ключ. Новые значения могут добавляться, поэтому нужен fallback. Используйте пространство имен поля, например inspection.result.not_checked и inspection.issue_type.replaced.
- source_code идентифицирует поле источника и может быть словом, путем, числом или одним символом вроде O. source_label называет проверку, а description обычно содержит точный выбранный ответ. Это доказательства источника, а не стабильные ключи переводов.
- vehicle_snapshot содержит исторический снимок данных на момент отчета. Текущие значения из основного объекта машины имеют приоритет.
- created_at — время создания отчета у источника. system_updated_at — время сохранения или обновления отчета в слое данных API.
Как лучше показать отчет во frontend
Отчеты об истории автомобиля
История автомобиля — отдельный стандартизированный отчет конкретного объявления. Он описывает регистрацию, владельцев, использование, пробег и страховые события, не смешивая их с технической инспекцией.
Поведение эндпоинтов
- GET /search
- Возвращает только has_history_reports. vehicle_history_reports намеренно отсутствует, чтобы поиск оставался компактным.
- GET /cars
- Возвращает has_history_reports и vehicle_history_reports для активных объявлений, доступных API-ключу.
- GET /cars/{car_id}
- Возвращает публичные опубликованные отчеты истории для активных объявлений машины, доступных API-ключу.
- GET /listing/{domain_id}/{listing_id}
- Возвращает отчеты истории только для точной пары domain_id и listing_id.
Публичный формат отчета
{
"schema_version": 1,
"mapper_contract_version": 1,
"report_id": "provider_vehicle_history_987654",
"status": "published",
"visibility": "public",
"language": "ko",
"created_at": "2026-05-31T04:27:33+00:00",
"checked_at": "2026-05-31T04:27:33+00:00",
"system_updated_at": "2026-07-07T12:30:00+00:00",
"vehicle_ref": {
"domain_id": 123, "listing_id": "987654",
"site_car_id": null, "vin": "..."
},
"vehicle_snapshot": {
"title": "...", "brand": "...", "model": "...",
"year": 2024, "vin": "...", "mileage_km": 24000,
"listing_id": "987654", "source_domain": "cars.example.com",
"fuel_type": "gasoline"
},
"source": {
"source_key": "provider_example", "source_type": "external_api",
"source_report_id": "987654", "source_language": "ko",
"mapper_version": "provider-history-v1", "imported_at": "..."
},
"access": {"attach_to_listing": true},
"coverage": {
"completeness_key": "complete", "period_start": "2024-01-01T00:00:00Z",
"period_end": "2026-05-31T00:00:00Z",
"section_keys": ["registration", "ownership", "insurance", "usage"]
},
"summary": {
"first_registered_at": "2024-01-15T00:00:00Z",
"owner_change_count": 1, "registration_change_count": 0,
"insurance_claim_count": 2, "vehicle_damage_claim_count": 1,
"vehicle_damage_claim_cost": 1200000,
"third_party_damage_claim_count": 1,
"third_party_damage_claim_cost": 350000,
"total_loss_count": 0, "flood_total_loss_count": 0,
"flood_partial_loss_count": 0, "theft_count": 0, "currency": "krw"
},
"checks": [{
"id": "check_1", "type_key": "total_loss_history", "result_key": "not_present",
"count": 0, "source_code": "...", "source_label": "...",
"description": "...", "evidence_type_key": "source_record",
"verification_key": "source_reported"
}],
"events": [{
"id": "event_1", "type_key": "owner_change",
"subtype_key": null, "occurred_at": "2025-03-01T00:00:00Z",
"ended_at": null, "date_precision_key": "day", "status_key": "completed",
"mileage_km": 18000, "source_code": "...", "source_label": "...",
"description": "...", "evidence_type_key": "source_record",
"verification_key": "source_reported", "organization_name": "...",
"organization_role_key": "insurer", "currency": "krw",
"amount_total": 1200000, "amount_insurance_benefit": 1000000,
"amount_parts": 500000, "amount_labor": 300000, "amount_painting": 400000,
"details": [{
"key": "transaction_type", "value_text": "private_transfer",
"value_number": null, "value_date": null, "unit_key": null,
"source_code": "...", "source_label": "..."
}]
}],
"media": [{
"id": "media_1", "type_key": "photo", "external_url": "https://...",
"local_path": null, "server_id": null, "original_name": "history.jpg",
"description": "...", "sort_order": 1
}],
"files": [{
"id": "file_1", "type_key": "source_report", "external_url": "https://...",
"local_path": null, "server_id": null, "original_name": "history.pdf",
"description": "...", "sort_order": 1
}],
"limitations": [{
"id": "limit_1", "type_key": "partial_coverage",
"description": "...", "source_label": "..."
}]
}Правила контракта
- Отчет истории относится к объявлению, а не к склеенной машине. Нельзя автоматически переносить его на другое объявление той же машины.
- Если отчетов нет, детальные эндпоинты возвращают пустой массив vehicle_history_reports. Точный поиск машины может вернуть недавно архивированную запись, но массивы отчетов на уровне машины собираются только для активных объявлений; пока архивное объявление хранится, используйте точный listing-эндпоинт.
- Возвращаются только публичные отчеты со статусом, отличным от archived.
- created_at — создание у источника, checked_at — момент проверки источником, system_updated_at — техническое обновление в API.
- summary — удобная сводка, но events и checks остаются подробными доказательствами и должны сохраняться.
- Для словарей используйте стабильные checks type_key/result_key и events type_key/subtype_key/date_precision_key. То же правило действует для канонических evidence_type_key, verification_key, status_key, organization_role_key, details[].key и других документированных *_key. Добавляйте пространство имен поля, например history.event.initial_registration.
- Переводите при наличии: coverage completeness_key/section_keys; checks type_key/result_key/evidence_type_key/verification_key; events type_key/subtype_key/date_precision_key/status_key/evidence_type_key/verification_key/organization_role_key; key/unit_key деталей события; а также type_key у media, files и limitations.
- Значения result_key истории: present, not_present, unknown, not_applicable. Точность даты: datetime, day, month, year, unknown. Типы событий: initial_registration, owner_change, registration_change, insurance_claim, insurance_coverage_started, insurance_coverage_gap, maintenance, statutory_inspection, recall, comparative_quote, total_loss, flood_damage, theft, usage_change. Типы проверок: accident_history, total_loss_history, flood_total_loss_history, flood_partial_loss_history, theft_history, lien_history, business_use_history, rental_use_history, government_use_history, insurance_gap_history, odometer_rollback. Смысл существующих канонических значений не меняется, но повторная обработка может заменить unknown более точным ключом. Новые значения могут добавляться, поэтому нужен читаемый fallback.
- id, source_code, source_label, description и исходные значения не являются ключами перевода. source_code зависит от источника и может быть путем, числом вроде 0, одним символом вроде O или другим техническим значением.
- Стандартизированный отчет исключает регистрационные номера и другие личные идентификаторы. Внутренние processing_info и check_tokens API не возвращает.
Как лучше показать отчет во frontend
Значения перечислений API
В API-запросах используется числовой ID. Для каждой группы показано несколько примеров; полный список позволяет искать, выбирать значения для /search и копировать готовые фрагменты запроса.
Эндпоинты
Параметры добавляются в GET-запрос автоматически.
Промпт для AI-агента
Скопируйте этот блок и передайте его Codex, Claude, Copilot или другому AI-агенту, чтобы он понимал API, ограничения, эндпоинты и текущий контекст ключа.
