Enrichment / API reference
Vehicle images
Read cached vehicle enrichment through the unified API, with independent availability for each product.
/v1/connections/{id}/vehicles/{vehicleId}/imagesAuthentication: Bearer consumer API key with an explicit connection grant.
Preview contract. Availability depends on the deployed release, authorized connection and asset.
How to use this endpoint
- Implementation pending rollout. These routes require migration 008 and reviewed API deployment; enrichment starts only after this connection is explicitly enabled. Public docs deployment alone does not enable an API route.
- Uses the same connection-scoped consumer key as telemetry. A VIN is an identity attribute, never permission to access another fleet's data.
- New VINs automatically enter a background queue. GET reads cached results without calling suppliers. pending means work remains; missing means a completed lookup found no data; failed and blocked include a safe error code.
- images: data.images contains url, kind and source. vin_listing means dealer/auction photos associated with this VIN; it does not establish current condition. Generic stock-image support is not verified yet. No image is a normal missing result.
- Specifications and factory build are independently enabled after account entitlement is confirmed. Missing or malformed VINs return missing_vin or invalid_vin without making a supplier call. Profiles are scoped to the asset's current VIN.
- fetchedAt is enrichment retrieval time, not a live vehicle observation. No periodic paid refresh is enabled; supplier corrections or image changes require an operator-managed refresh until a refresh API is added.
Parameters
| Name | Where | Required | Type and behavior |
|---|---|---|---|
id | path | Yes | string |
vehicleId | path | Yes | string |
Request example
curl "$TELEMATICS_ORIGIN/v1/connections/$CONNECTION_ID/vehicles/$VEHICLE_ID/images" \
--header "Authorization: Bearer $TELEMATICS_CONSUMER_KEY"Response fields
HTTP 200 returns ImagesSection. Fields listed as required are guaranteed by this contract; optional fields may be absent.
| Field | Type | Required |
|---|---|---|
status | disabled | pending | available | missing | failed | blocked | missing_vin | invalid_vin | Yes |
data | VehicleImages | null | Yes |
source | string | Yes |
adapterVersion | string | null | Yes |
fetchedAt | string | null | Yes |
errorCode | string | null | Yes |
vehicleId | string | Yes |
vin | string | null | Yes |
product | "images" | Yes |
Nested field shapes and constraints are defined in the OpenAPI contract. For latest telemetry values, see normalized units and availability.
Response example
Synthetic values; this is a shape example, not a live customer response.
{
"vehicleId": "asset-001",
"vin": "1TEST000000000001",
"product": "images",
"status": "available",
"data": {
"images": [
{
"url": "https://images.example.test/asset.jpg",
"kind": "vin_listing",
"source": "example-source"
}
]
},
"source": "auto.dev",
"adapterVersion": "1.0.0",
"fetchedAt": "2026-10-01T00:00:00Z",
"errorCode": null
}Errors and retries
| HTTP status | Meaning |
|---|---|
401 | Consumer authentication denied |
404 | Resource missing or connection access denied |
503 | Service or database unavailable |
Errors return {"error":"reason_code"}. Honor Retry-After when a 429 includes it. Permission and provider failures never become zero-valued telemetry. Connection health and reading status provide separate signals.
Response schema
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"disabled",
"pending",
"available",
"missing",
"failed",
"blocked",
"missing_vin",
"invalid_vin"
]
},
"data": {
"anyOf": [
{
"$ref": "#/components/schemas/VehicleImages"
},
{
"type": "null"
}
]
},
"source": {
"type": "string"
},
"adapterVersion": {
"type": [
"string",
"null"
]
},
"fetchedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"errorCode": {
"type": [
"string",
"null"
]
},
"vehicleId": {
"type": "string"
},
"vin": {
"type": [
"string",
"null"
]
},
"product": {
"const": "images"
}
},
"required": [
"status",
"data",
"source",
"adapterVersion",
"fetchedAt",
"errorCode",
"vehicleId",
"vin",
"product"
]
}