Four ways to get your stock onto the site, from adding vehicles one at a time to a fully automated feed that keeps your listings in sync around the clock.
Recommended for day-to-day stock management
Best for bulk onboarding
Set and forget ongoing stock sync
Standard dealer-management-system exports are supported. Flexible field mapping means common feed formats work out of the box — if your export uses different tag or column names, just get in touch and we will help map them.
Push stock directly from your own software
POST https://fast-squid-791.api.macaly.app/api/feeds/ingest x-api-key: YOUR_API_KEY
curl -X POST https://fast-squid-791.api.macaly.app/api/feeds/ingest \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"vehicles": [{
"externalId": "STOCK-1234",
"make": "Ford",
"model": "Focus",
"variant": "ST-Line",
"year": 2021,
"mileage": 24000,
"price": 14995,
"fuelType": "Petrol",
"transmission": "Manual",
"bodyType": "Naked",
"colour": "Magnetic Grey",
"regPlate": "AB21 CDE",
"description": "Immaculate condition, one owner from new.",
"thumbnailUrl": "https://example.com/motorbike.jpg",
"features": ["Air Conditioning", "Parking Sensors", "Bluetooth"]
}]
}'| Field | Rules |
|---|---|
| externalId | required — your stock reference. Sending the same externalId again UPDATES that vehicle instead of creating a duplicate |
| make, model | required |
| year | required number, e.g. 2021 |
| mileage | required number, in miles |
| price | required number, in GBP |
| fuelType | required — Petrol, Diesel, Electric, Hybrid, PHEV, Mild Hybrid, Hydrogen or LPG |
| transmission | required — Manual, Automatic or Semi-Automatic |
| bodyType | required — Naked, Sports, Tourer, Sports Tourer, Cruiser, Adventure, Scooter, Off-Road, Classic or Other |
| variant, regPlate, colour, engineSize, horsepower | optional strings/numbers |
| serviceHistory | optional — Full, Partial or None |
| description | optional — full advert text |
| thumbnailUrl | optional — a link to your main photo. Only use images you have permission to use |
| features | optional array of strings |
{ "inserted": 1, "updated": 0, "failed": 0 } HTTP 200 on success
HTTP 200 with a failed count and errors array when some rows are rejected
401 invalid or missing API key
403 feed is disabled or not an API feed
413 more than 500 vehicles in one pushKeys are per feed. Regenerating your key revokes the old one instantly.
Questions about any option? Contact us and we will help you choose the right route.