# CarHub Documentation ## Docs - [CarHub developer documentation](https://docs.trycarhub.com/index.md): Build automotive AI workflows with the CarHub API. - [Quickstart](https://docs.trycarhub.com/quickstart.md): Submit and retrieve your first production CarHub job. - [Authentication](https://docs.trycarhub.com/authentication.md): Authenticate production and test API requests. - [Test mode](https://docs.trycarhub.com/guides/test-mode.md): Validate your integration with deterministic API scenarios. - [Go-live checklist](https://docs.trycarhub.com/guides/go-live.md): Prepare a reliable CarHub integration for customer traffic. - [Submit and retrieve jobs](https://docs.trycarhub.com/guides/jobs.md): Submit work safely and retrieve asynchronous inference results. - [Upload media](https://docs.trycarhub.com/guides/uploads.md): Use presigned uploads for videos, batches and reusable media inputs. - [Receive webhooks](https://docs.trycarhub.com/guides/webhooks.md): Verify and deduplicate job events from CarHub. - [Use CarHub through MCP](https://docs.trycarhub.com/guides/mcp.md): Expose active CarHub models as tools to an AI agent. - [Player SDK](https://docs.trycarhub.com/sdk/player.md): Embed and control an interactive 360° vehicle player in your application. - [API overview](https://docs.trycarhub.com/api-reference/overview.md): Shared conventions for the CarHub HTTP API. - [Errors and retries](https://docs.trycarhub.com/api-reference/errors.md): Handle CarHub API failures predictably. - [Car & Position Analyser](https://docs.trycarhub.com/api-reference/a-—-understand-the-vehicle/car-&-position-analyser.md): Tools allowing the detection of the car as well as its position. - [Car Segmentation](https://docs.trycarhub.com/api-reference/a-—-understand-the-vehicle/car-segmentation.md): Tool to perfectly segment the car. - [Vehicle Model Detection](https://docs.trycarhub.com/api-reference/a-—-understand-the-vehicle/vehicle-model-detection.md): Tool to identify the make, the model and the version of a vehicle from a photo. - [VIN Reader](https://docs.trycarhub.com/api-reference/a-—-understand-the-vehicle/vin-reader.md): Tool for reading the VIN of a vehicle. - [License Plate Reader](https://docs.trycarhub.com/api-reference/a-—-understand-the-vehicle/license-plate-reader.md): Tool for reading license plates. - [Document Reader](https://docs.trycarhub.com/api-reference/a-—-understand-the-vehicle/document-reader.md): Tool for reading vehicle documents. - [Dashboard & Mileage Reader](https://docs.trycarhub.com/api-reference/a-—-understand-the-vehicle/dashboard-&-mileage-reader.md): Tool for reading the mileage and the warning lights from a dashboard photo. - [Engine Fault Sound Detection](https://docs.trycarhub.com/api-reference/a-—-understand-the-vehicle/engine-fault-sound-detection.md): Tool to detect internal engine damage from the sound of the engine. - [Video Onboarding](https://docs.trycarhub.com/api-reference/a-—-understand-the-vehicle/video-onboarding.md): Tool to illustrate in real time the progress of the inspection of a vehicle. - [Damage Detection](https://docs.trycarhub.com/api-reference/b-—-damage-&-condition/damage-detection.md): Tool for detecting damage to the interior and exterior of the vehicle. - [Car Severity Estimation](https://docs.trycarhub.com/api-reference/b-—-damage-&-condition/car-severity-estimation.md): Tool to assign a severity to a damage. - [Tire Reading](https://docs.trycarhub.com/api-reference/b-—-damage-&-condition/tire-reading.md): Tool for reading the type of a tire from its sidewall. - [Tire Wear Detection](https://docs.trycarhub.com/api-reference/b-—-damage-&-condition/tire-wear-detection.md): Tool for detecting tire wear. - [Car Parts Recognition](https://docs.trycarhub.com/api-reference/c-—-parts/car-parts-recognition.md): Tool to give a name to each part of your vehicle. - [Car Parts Segmentation](https://docs.trycarhub.com/api-reference/c-—-parts/car-parts-segmentation.md): Tool to segment a vehicle with its multiple parts. - [Car Parts Decomposition](https://docs.trycarhub.com/api-reference/c-—-parts/car-parts-decomposition.md): Tool for decomposing a part of the vehicle into components. - [Car Pricing](https://docs.trycarhub.com/api-reference/d-—-money/car-pricing.md): Tool to estimate the price of a vehicle in real time according to many criteria. - [Car Reparation Pricing](https://docs.trycarhub.com/api-reference/d-—-money/car-reparation-pricing.md): Tool allowing to give the price of repairing a damage. - [Image Backgrounding](https://docs.trycarhub.com/api-reference/e-—-image-production/image-backgrounding.md): Tool to replace the background of images containing vehicles. - [Quality Improver](https://docs.trycarhub.com/api-reference/e-—-image-production/quality-improver.md): Tool to improve the quality of an image. - [License Plate Replacer](https://docs.trycarhub.com/api-reference/e-—-image-production/license-plate-replacer.md): Tool for covering a license plate with a logo. - [360 Generation](https://docs.trycarhub.com/api-reference/e-—-image-production/360-generation.md): Tool to generate a studio 360 of a vehicle from four photos. - [Ad Video Generation](https://docs.trycarhub.com/api-reference/e-—-image-production/ad-video-generation.md): Tool to generate a custom advertising video of a vehicle from photos. - [360 Viewer & Hotspoter](https://docs.trycarhub.com/api-reference/f-—-presentation/360-viewer-&-hotspoter.md): Tool to anchor points of interest onto named parts of a vehicle across a set of images. - [Full vehicle inspection (bundle)](https://docs.trycarhub.com/api-reference/inspections/full-vehicle-inspection-bundle.md): Chains the full pipeline in one call and bills as a single blended inspection rather than as separate metered calls. - [List jobs](https://docs.trycarhub.com/api-reference/jobs/list-jobs.md): Jobs created by the calling key's organisation, newest first. The `livemode` of the calling key scopes the list: a `chk_test_` key never sees live jobs and vice versa. - [Retrieve a job](https://docs.trycarhub.com/api-reference/jobs/retrieve-a-job.md): The canonical way to collect a result. `result` is populated once `status` is `succeeded`; on `failed` it stays null and `error` explains why. Inspection jobs additionally expose `stages[]`. - [List the endpoint catalogue](https://docs.trycarhub.com/api-reference/jobs/list-the-endpoint-catalogue.md): Every endpoint your key can call, with its meter, its price in minor currency units, the kind of input it takes and whether it accepts `wait=true`. Prices and limits live in configuration, not in code, so read them here rather than hard-coding them. - [Create a presigned upload](https://docs.trycarhub.com/api-reference/uploads/create-a-presigned-upload.md): Returns a presigned `PUT` URL. Upload the bytes to `url` with the declared `content_type`, then pass the `upload_ref` as `input_ref` / `input_refs` on any endpoint. - [Retrieve the active organisation](https://docs.trycarhub.com/api-reference/management/retrieve-the-active-organisation.md): The organisation carried by the JWT's `org_id` claim: plan, credit balances (live and test are separate purses), billing country and storage retention. - [List API keys](https://docs.trycarhub.com/api-reference/management/list-api-keys.md): Keys belong to the organisation, not to the human who created them — revoking a member never breaks production. Secrets are hashed at rest and never returned here: only the readable prefix is. - [Create an API key](https://docs.trycarhub.com/api-reference/management/create-an-api-key.md): The `secret` is shown **once**, in this response, and never again. Scopes are granted by endpoint family; omitting `scopes` grants every family. - [Revoke an API key](https://docs.trycarhub.com/api-reference/management/revoke-an-api-key.md): Immediate and irreversible: in-flight jobs keep running, the next request with that key gets `401`. Minimum role: `admin`. - [Rotate an API key](https://docs.trycarhub.com/api-reference/management/rotate-an-api-key.md): Issues a new secret for the same logical key and schedules the old one for expiry after `grace_seconds` (0 = immediate), so a fleet can be redeployed without a gap. The new `secret` is shown once. Minimum role: `admin`. - [Usage aggregates](https://docs.trycarhub.com/api-reference/management/usage-aggregates.md): One row per (day, endpoint): request volume, outcomes, billable units and credits charged. Rows are ordered by `date` descending then `endpoint`. Minimum role: `member`. - [Job history of the organisation](https://docs.trycarhub.com/api-reference/management/job-history-of-the-organisation.md): Same page shape as `GET /v1/jobs`, but spanning every key of the organisation and both modes — filter with `livemode`. Minimum role: `member`. - [Retrieve a job (dashboard)](https://docs.trycarhub.com/api-reference/management/retrieve-a-job-dashboard.md): Identical payload to `GET /v1/jobs/{id}`, reachable with a dashboard JWT and with the api key that produced it exposed for audit. Minimum role: `member`. - [Credit ledger entries](https://docs.trycarhub.com/api-reference/management/credit-ledger-entries.md): The append-only credit ledger, newest first. The balance is the sum of these entries — never a stored column. A job typically produces a `reserve`, then a `commit` and a `release` for the unused delta. Minimum role: `member`. - [Create a Stripe Checkout session](https://docs.trycarhub.com/api-reference/management/create-a-stripe-checkout-session.md): Opens a Checkout session for a credit top-up or a subscription. Credits are granted by the plan definition (`credits` on the Stripe Price), never derived from the amount paid — the same pack may cost €100 here and $120 there for the same credit amount. - [Create a Stripe Customer Portal session](https://docs.trycarhub.com/api-reference/management/create-a-stripe-customer-portal-session.md): Short-lived link to the Stripe-hosted portal: payment methods, invoices, subscription management. Minimum role: `owner`. - [Top up the test credit balance](https://docs.trycarhub.com/api-reference/management/top-up-the-test-credit-balance.md): Deposits simulated money into the **test** credit balance only — free, unlimited and never invoiced. Use `amount` to exercise billing without touching the live credit balance. Minimum role: `admin`. - [List webhook endpoints](https://docs.trycarhub.com/api-reference/management/list-webhook-endpoints.md): Outgoing webhook destinations of the organisation. Minimum role: `admin`. - [Create a webhook endpoint](https://docs.trycarhub.com/api-reference/management/create-a-webhook-endpoint.md): Registers an HTTPS destination for the events you select. The signing `secret` is returned **once**: every delivery carries a `Carhub-Signature` HMAC computed with it. Failed deliveries are retried with exponential backoff for 24 h. - [Delete a webhook endpoint](https://docs.trycarhub.com/api-reference/management/delete-a-webhook-endpoint.md): Stops deliveries immediately, including pending retries. Minimum role: `admin`. - [Send a test event](https://docs.trycarhub.com/api-reference/management/send-a-test-event.md): Delivers a synthetic, correctly signed event built from the sandbox fixture of the chosen endpoint, and returns what your server answered. Nothing is billed and no job is created. - [Inference completion callback (internal)](https://docs.trycarhub.com/api-reference/internal/inference-completion-callback-internal.md): **Not part of the public API.** Called by the inference plane when a submitted unit of work settles. Authenticated by an HMAC-SHA256 of the raw body in `X-Modal-Signature`, keyed with a shared secret; unsigned or stale (> 5 min skew) calls are rejected with `401`. - [A job completed successfully](https://docs.trycarhub.com/api-reference/a-job-completed-successfully.md): Sent as soon as a job reaches `succeeded`. `data.job` is byte-for-byte what `GET /v1/jobs/{id}` would return at that instant, `result` included — no follow-up call is needed for small results. - [A job failed](https://docs.trycarhub.com/api-reference/a-job-failed.md): Sent when a job reaches `failed` (model or infrastructure error) or `expired` (never picked up). `data.job.result` is null and `data.job.error` explains why; the credit balance reservation has already been released, so `credits.charged` is `0`. - [One stage of an inspection settled](https://docs.trycarhub.com/api-reference/one-stage-of-an-inspection-settled.md): Emitted eight times per inspection, once per stage, so a UI can show progress instead of a spinner. `data.job` is the inspection job in its current state — `status` is still `processing` for every stage but the last, and `result` only materialises once the whole pipeline has settled. `data.stage` is… ## OpenAPI Specs - [openapi](https://docs.trycarhub.com/openapi.yaml)