Vehicle entity
Read inventory records and replace ordered vehicle photo URLs through the dealership API.
#Endpoints
Inventory records owned by the dealership. Vehicle responses include public listing URLs, pricing, status, photos, incentives, equipment, tags, and core specs.
GET/v1/vehicles
GET/v1/vehicles/{id}
x-api-key header.#Filters and Limits
List endpoints share the same pagination envelope. Query booleans use true or false.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | No | Number of records to return. Defaults to 100. Maximum is 500. |
| offset | number | No | Number of records to skip. Defaults to 0. |
| search | string | No | Optional text search. Searchable fields are listed on each entity. |
| createdAfter | datetime | No | Return records created at or after an ISO 8601 timestamp. |
| createdBefore | datetime | No | Return records created at or before an ISO 8601 timestamp. |
| updatedAfter | datetime | No | Return records updated at or after an ISO 8601 timestamp. |
| updatedBefore | datetime | No | Return records updated at or before an ISO 8601 timestamp. |
| condition | VehicleCondition | No | NEWUSED |
| status | VehicleStatus | No | IN_STOCKIN_TRANSIT |
| sold | boolean | No | Use true or false. |
| displayOnSite | boolean | No | Use true or false. |
| vin | string | No | Exact VIN match. |
| stockNumber | string | No | Exact stock number match. |
condition, status, sold, displayOnSite, vin, stockNumber, and search.vin, stockNumber, make, model, and trim.vin and stockNumber are exact-match filters.updatedAt descending, then id descending.NEWUSEDIN_STOCKIN_TRANSITJSON
{
"data": [],
"pagination": {
"limit": 100,
"offset": 0,
"total": 0
}
}#Response
| Field | Type | Nullable | Notes |
|---|---|---|---|
| id | uuid | No | Vehicle ID. |
| dealershipId | uuid | No | Dealership that owns the vehicle. |
| title | string | No | Generated display title. |
| vin | string | No | Vehicle identification number. |
| stockNumber | string | Yes | Dealer stock number. |
| slug | string | No | Vehicle detail slug. |
| year | number | No | Model year. |
| make | string | No | Make. |
| model | string | No | Model. |
| trim | string | No | Trim. |
| condition | VehicleCondition | No | NEWUSED |
| status | VehicleStatus | No | IN_STOCKIN_TRANSIT |
| sold | boolean | No | Whether the vehicle is sold. |
| displayOnSite | boolean | No | Whether the vehicle should display on the public site. |
| odometer | number | No | Mileage/odometer value. |
| msrp | number | Yes | MSRP. |
| price | number | Yes | Advertised price. |
| dealerDiscountedPrice | number | Yes | Dealer discounted price. |
| photos | url[] | No | Ordered photo URL list. |
| video | url | Yes | Vehicle video URL. |
| tags | string[] | No | Vehicle tags. |
| features | string[] | No | Equipment/features. |
| incentives | json[] | No | Applied incentives. |
| mobility | object | No | Mobility conversion attributes. |
| specs | object | No | Dimensions, towing, payload, and horsepower specs. |
| publicUrl | url | Yes | Public vehicle detail URL. |
| syncedAt | datetime | Yes | Last inventory sync timestamp. |
| createdAt | datetime | No | Creation timestamp. |
| updatedAt | datetime | No | Last update timestamp. |
id, dealershipId, title, vin, stockNumber, slug, year, make, model, and trim.condition, status, sold, cpo, reserved, commercial, special, displayOnSite, and removedFromInventoryAt.msrp, price, dealerDiscountedPrice, totalIncentives, and totalDiscount.photos URL array, nullable video, and nullable publicUrl.syncedAt, createdAt, and updatedAt ISO 8601 timestamps.#Example Request
Shell
curl "https://api.driverseat.io/v1/vehicles?condition=NEW&sold=false&displayOnSite=true" \
-H "x-api-key: sk-driverseat-..."#Example Response
JSON
{
"data": [
{
"id": "vehicle-id",
"title": "2023 Ford F-150 XLT",
"vin": "1FTFW1E50PFA00000",
"stockNumber": "F1000",
"year": 2023,
"make": "Ford",
"model": "F-150",
"trim": "XLT",
"condition": "NEW",
"status": "IN_STOCK",
"sold": false,
"photos": [
"https://example.com/photo-1.jpg"
],
"publicUrl": "https://example-dealer.com/new/2023-ford-f-150-xlt"
}
],
"pagination": {
"limit": 100,
"offset": 0,
"total": 1
}
}#Photos
Use the photo endpoint to replace the ordered list of photo URLs for a vehicle that already exists in the dealership inventory.
POST/v1/update-photos
x-api-key.application/jsonRequest body
vinstringrequired
17-character vehicle identification number.
dealershipIdstringrequired
Dealership UUID. Must match the dealership the API key belongs to.
photosstring[]required
Absolute URL strings, in display order. This fully replaces the vehicle's existing photo list, and inventory feed syncs keep it. An empty list clears the photos and lets the inventory feed supply them again.
Example request
Shell
curl -X POST https://api.driverseat.io/v1/update-photos \
-H "Content-Type: application/json" \
-H "x-api-key: sk-driverseat-..." \
-d '{
"dealershipId": "00000000-0000-0000-0000-000000000000",
"vin": "1FTFW1E50PFA00000",
"photos": [
"https://example.com/photo-1.jpg",
"https://example.com/photo-2.jpg"
]
}'Example response
JSON
{
"success": true,
"vehicle": {
"id": "vehicle-id",
"vin": "1FTFW1E50PFA00000",
"make": "Ford",
"model": "F-150",
"year": 2023,
"photos": [
"https://example.com/photo-1.jpg",
"https://example.com/photo-2.jpg"
]
}
}Behavior
- The
photosarray is a full replacement. Omitted previous URLs are removed. - Photo order is preserved exactly as submitted.
- Send an empty array to clear the vehicle's photos.
- The endpoint stores URLs; it does not upload image files.
- After a successful update, the public vehicle page is revalidated in the background.
Photo URLs should be publicly reachable and suitable for display on vehicle detail pages.