Documentation Menu
Getting Started
Reference
Tools
Sending Vehicles
How to publish vehicle inventory via the webhook endpoint.
How it works
Send one vehicle per HTTP POST request to:
POST https://ingest.driveagent.io/api/ingest
Each request creates or updates a vehicle listing. Vehicles are matched by the combination of Seller.Identifier + StockNumber — if a vehicle with the same stock number already exists for that seller, it is updated.
Payload format
The payload follows the CSN-DTO Vehicle format. Here’s a complete example with all commonly used fields:
{
"Type": "CAR",
"Identifier": 94083,
"ListingType": "used",
"SaleStatus": "For Sale",
"SaleType": "Retail",
"Description": "Vehicle description text. HTML is sanitized on ingest.",
"Slug": "used-white-2024-ford-ranger-xlt-STK001",
"Registration": {
"Number": "ABC123",
"ExpiresUtc": "2027-06-01T00:00:00.000Z"
},
"Identification": [
{ "Type": "StockNumber", "Value": "STK001" },
{ "Type": "VIN", "Value": "WBAPH5C55BA123456" }
],
"Seller": {
"Identifier": "your-guid-seller-id",
"Type": "Dealer",
"Name": "Your Dealership Name",
"Addresses": [{
"Line1": "123 Main Street",
"Suburb": "Melbourne",
"State": "VIC",
"Postcode": "3000",
"Latitude": -37.8136,
"Longitude": 144.9631
}]
},
"Specification": {
"SpecificationSource": "REDBOOK",
"SpecificationCode": "AUVFORD2024RANG",
"CountryCode": "AU",
"Make": "Ford",
"Model": "Ranger",
"Series": "P703",
"ReleaseDate": { "Year": 2024 },
"Attributes": [
{ "Name": "Badge", "Value": "XLT" },
{ "Name": "EngineType", "Value": "Piston" },
{ "Name": "EngineSize", "Value": 1998 },
{ "Name": "Cylinders", "Value": 4 },
{ "Name": "FuelType", "Value": "Diesel" },
{ "Name": "Transmission", "Value": "Automatic" },
{ "Name": "Gears", "Value": 10 },
{ "Name": "Drive", "Value": "Four Wheel Drive" },
{ "Name": "BodyStyle", "Value": "Dual Cab Ute" },
{ "Name": "Doors", "Value": 4 },
{ "Name": "Seats", "Value": 5 }
]
},
"Colours": [
{ "Location": "Exterior", "Generic": "White", "Name": "Arctic White" },
{ "Location": "Interior", "Name": "Ebony" }
],
"OdometerReadings": [{
"Value": 25000,
"UnitOfMeasure": "KM"
}],
"Media": {
"Photos": [
{ "Url": "https://example.com/photo1.jpg" },
{ "Url": "https://example.com/photo2.jpg" }
]
},
"PriceList": [
{ "Type": "DAP", "Currency": "AUD", "Amount": 65990 },
{ "Type": "EGC", "Currency": "AUD", "Amount": 62990 }
],
"ComplianceDate": { "Month": 3, "Year": 2024 },
"BuildDate": { "Month": 1, "Year": 2024 },
"Certification": { "Certified": true, "CertificationType": "COI" },
"Features": {
"Safety & Security": ["ABS", "Airbag - Driver", "Camera - Rear Vision"],
"Comfort & Convenience": ["Climate Control", "Cruise Control"]
}
}
Required fields
These fields must be present or the request will fail:
| Field | Description |
|---|---|
Type | Vehicle type (e.g. “CAR”) |
Identifier | Unique vehicle ID from your system |
Seller.Identifier | Your dealership ID |
Seller.Name | Dealership name |
Specification.Make | Vehicle make |
Specification.Model | Vehicle model |
Identification[] | At least one entry with Type “StockNumber” |
Photos
The first photo URL in the Media.Photos array becomes the main listing image. Include as many photos as needed — they are stored in order.
"Media": {
"Photos": [
{ "Url": "https://cdn.example.com/vehicle/main.jpg" },
{ "Url": "https://cdn.example.com/vehicle/interior.jpg" },
{ "Url": "https://cdn.example.com/vehicle/rear.jpg" }
]
}
Pricing
Use the PriceList array with standard CSN-DTO price types:
| Type | Description |
|---|---|
DAP | Drive Away Price (total cost to buyer) |
EGC | Excluding Government Charges |
RRP | Recommended Retail Price |
Field coverage
The response includes a fields object showing how many fields were successfully mapped:
{
"fields": {
"mapped": 28,
"total": 43,
"details": { "make": "Ford", "model": "Ranger", ... }
}
}
Higher coverage means richer listings. Check the details object for any null values — those are fields you could provide for a more complete listing.
Full schema reference
See the Vehicle Schema and Seller Schema for all accepted fields.