Skip to content

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:

FieldDescription
TypeVehicle type (e.g. “CAR”)
IdentifierUnique vehicle ID from your system
Seller.IdentifierYour dealership ID
Seller.NameDealership name
Specification.MakeVehicle make
Specification.ModelVehicle 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:

TypeDescription
DAPDrive Away Price (total cost to buyer)
EGCExcluding Government Charges
RRPRecommended 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.