Full vehicle inspection (bundle)
Chains the full pipeline in one call and bills as a single blended inspection rather than as separate metered calls.
| # | Stage | Model |
|---|---|---|
| 1 | Onboard walkaround | video-onboarding |
| 2 | Isolate the vehicle | car-segmentation |
| 3 | Decompose parts | parts-decomposition |
| 4 | Detect damage | damage-detection |
| 5 | Grade severity | severity-estimation |
| 6 | Price the repair | reparation-pricing |
| 7 | Render for listing | image-backgrounding |
| 8 | Anchor hotspots | viewer-hotspoter |
The returned job carries a stages[] array — the only endpoint that does — so progress is
observable long before the aggregated result exists. Each stage also emits an
inspection.stage_completed webhook.
Minutes-long by construction: wait=true is rejected.
Authorizations
Organisation API key, sent as Authorization: Bearer chk_live_….
chk_live_…— real inference, real credits,livemode: true.chk_test_…— identical pipeline against the fixture backend, test credits,livemode: false.
Keys are stored hashed; only the prefix (chk_live_a1b2…) is ever displayed again. A key
may be scoped to a subset of endpoint families — calling outside its scopes is a 403.
Headers
Client-generated key (a UUID is ideal) making this POST safe to retry. The first request
is executed and its response stored for 24 h; any replay with the same key returns that
stored response with Idempotent-Replayed: true and bills nothing. Reusing a key with a
different payload is a 409 idempotency_key_reuse.
8 - 255Steers the fixture backend. Ignored by live keys, 400 test_scenario_not_supported if the
scenario is unknown to the endpoint. Common catalogue:
Some endpoints add their own scenarios; unsupported common scenarios (for example
empty_result on a generation endpoint) are rejected rather than silently ignored.
"empty_result"
"low_confidence"
"model_error"
"slow"
"insufficient_credits"
Body
Supply either a walkaround video (stage 1 indexes it into frames) or a set of images — at least one of the two is required.
Supply a walkaround video, a set of images, or both.
30Restrict the pipeline to these stages. Omitted, all eight run. Excluded stages are reported as skipped and are not billed.
onboard_walkaround, isolate_vehicle, decompose_parts, detect_damage, grade_severity, price_repair, render_listing, anchor_hotspots What you already know about the vehicle. Every field is optional.
^[A-Z]{3}$^[A-Z]{2}$Workshop hourly rate in minor units, for the repair pricing stage.
x >= 0x >= 0Background preset for the listing renders of stage 7.
studio_white, studio_grey, studio_gradient, showroom, outdoor, transparent, blur Parts to anchor in stage 8.
Stable identifier of a vehicle part, shared by every endpoint that names one. Snake case,
side-suffixed where a vehicle has two (door_front_left). The list grows with the part
taxonomy, so treat an unknown code as opaque rather than rejecting it.
Response
Inspection accepted; the eight stages are queued.
An inspection job. Unlike every other job it carries stages, and its result only materialises when the eighth stage settles.
Job identifier — job_ followed by a base58 string.
^job_[1-9A-HJ-NP-Za-km-z]{8,32}$"job_3ZxK9pQr7TnW"
"job"Dotted slug of a CarHub endpoint, the identifier used for jobs and usage.
vehicle.analyse, vehicle.segment, vehicle.identify, vin.read, plate.read, document.read, dashboard.read, engine.detect, video.onboard, damage.detect, damage.severity, tire.read, tire.detect, parts.recognize, parts.segment, parts.decompose, pricing.vehicle, pricing.repair, render.background, render.enhance, render.plate, render.360, render.video, viewer.hotspots, inspections Lifecycle of a job. queued → processing → one of succeeded | failed; expired
when it was never picked up in time, canceled when it was cancelled before starting.
The three settled states are terminal.
queued, processing, succeeded, failed, expired, canceled false when the job was created with a chk_test_ key: fixture result, test credits.
Epoch seconds, UTC.
1755300000
When the job left the queue. Null while queued.
1755300000
When the job settled. Null until then.
1755300000
Exact model build that produced the result, as <model>@<release date>. Null until the job starts. Pin your regression tests to it.
"plate-reader@2026-08-01"
Credit accounting for the job. One credit equals one USD cent. reserved is held at
admission and charged is the real cost after settlement; unused credits are released.
The aggregated outcome of the eight stages: what was captured, what the vehicle is made of, what is wrong with it, what fixing it costs, and the assets to publish it with. Each stage's raw output stays readable on its own child job.
Populated when status is failed or expired, null otherwise.
Per-stage progress. Present on inspections jobs only, absent everywhere else.
The X-Carhub-Test-Scenario that produced this job. Present on test-mode jobs that were steered by one, absent otherwise — a live job never carries it.
"low_confidence"