v2.0 Production Ready
MonsterAuto Inventory Feed API
Production-grade vehicle data ingestion for Canadian dealerships
Quick Start
Endpoint
POST https://api.monsterauto.ca/v1/dealers/inventoryAuthentication
X-Monster-Api-Key: YOUR_API_KEYGet your API key from the dealer portal Feed Setup page
Example Request (cURL)
curl -X POST https://api.monsterauto.ca/v1/dealers/inventory \
-H "Content-Type: application/json" \
-H "X-Monster-Api-Key: YOUR_KEY_HERE" \
-d '{
"incremental": true,
"vehicles": [
{
"vin": "1HGBH41JXMN109186",
"make": "Honda",
"model": "Accord",
"year": 2022,
"price": 28995,
"odometer": 35000,
"location_city": "Toronto",
"location_province": "ON",
"latitude": 43.6532,
"longitude": -79.3832,
"status": "Available"
}
]
}'Response 202 Accepted: Your feed is queued for processing. Check job status in the dealer portal within 10-60 seconds.
Required Fields (10 fields)
| Field | Type | Example | Notes |
|---|---|---|---|
| vin | string | 1HGBH41JXMN109186 | Must be unique per dealer |
| make | string | Honda | Manufacturer name |
| model | string | Accord | Model name |
| year | integer | 2022 | Model year |
| price | integer | 28995 | CAD whole dollars (no decimals) |
| odometer | integer | 35000 | Kilometres (also accepts "km", "mileage") |
| location_city | string | Toronto | Dealer city |
| location_province | enum | ON | 2-letter province code (AB, BC, ON, etc.) |
| latitude | number | 43.6532 | Decimal degrees |
| longitude | number | -79.3832 | Decimal degrees |
Optional Fields (Recommended for Quality Score)
Basic Details
trim- Model variantexterior_colour- Paint colorinterior_colour- Interior colorbody_style- Sedan, SUV, etc.
Technical Specs
transmission- Automatic, Manual, CVTengine- e.g., "2.0L Turbo"drivetrain- FWD, RWD, AWD, 4WDfuel_type- Gasoline, Hybrid, Electric, etc.
Marketing Content
description- Text description (150+ chars recommended)photos- Array of URLs (max 40, HTTPS only)features- Array of feature strings
Status & CPO
status- Available, Sold, On Holdis_cpo- Boolean (Certified Pre-Owned)
Photos Policy: Only valid HTTPS URLs accepted. Max 40 images. Empty photos array will preserve existing photos (will not delete them).
Feed Modes: Incremental vs Full Replacement
Default
Incremental Mode
"incremental": true- Updates/inserts vehicles you send
- Missing vehicles: NO ACTION (preserved)
- Safest for frequent updates
Advanced
Full Replacement
"incremental": false- Updates/inserts sent vehicles
- Missing vehicles: SOFT DISABLE (status → "On Hold")
- Safety lock prevents mass deletion (>10 + >20% drop)
Safety Lock Protection: If full replacement mode would remove >10 vehicles AND >20% of your inventory, the job is paused and requires admin approval to prevent accidental data loss.
Field Mapping & Normalization
Price Normalization
"38995" → 38995"38,995" → 38995 (commas removed)"$38995" → 38995 ($ symbol removed)38995.50 → 38996 (rounded to nearest dollar)Odometer Aliases (all accepted)
Accepts:
odometer, km, or mileagePhotos Validation
Only HTTPS URLs accepted
Maximum 40 images per vehicle
Invalid URLs automatically skipped (not fatal)
Empty array preserves existing photos
Features Auto-Normalization
"NAV" / "GPS" / "Navigation" → "Navigation System"
"Backup Cam" / "Rear Camera" → "Backup Camera"
"Heated Seats" / "Seat Heaters" → "Heated Seats"
...and 50+ more mappings
Response Codes
| Code | Meaning | Action Required |
|---|---|---|
202 | Accepted | Feed queued for processing. Check portal in 10-60s. |
401 | Unauthorized | Missing or invalid API key |
403 | Forbidden | Dealer account must be 'live' or 'on_hold' status |
413 | Payload Too Large | Maximum 10MB per request |
429 | Rate Limit Exceeded | Max 60 requests/minute, 1000 requests/hour |
Visibility & Security Rules
LIVE
Public Visibility
Vehicles appear in public search and customer-facing pages
ON HOLD
Private Testing
Vehicles visible to dealer + admin only. NOT public.Perfect for testing your feed before going live.
SUSPENDED / ONBOARDING
Feed Ingestion Blocked
API returns 403 Forbidden. Contact support to resolve.
Uniqueness & Upsert Logic
Unique Key:
dealer_partner_id + vinSame VIN sent again: Updates existing vehicle (never creates duplicate)
New VIN: Creates new vehicle record
Locked attributes: Fields manually edited by dealer cannot be overwritten by feed
Complete Example Payload (3 Vehicles)
{
"incremental": true,
"vehicles": [
{
"vin": "1HGBH41JXMN109186",
"make": "Honda",
"model": "Accord",
"trim": "EX-L",
"year": 2022,
"price": 28995,
"odometer": 35000,
"exterior_colour": "Crystal Black Pearl",
"interior_colour": "Black Leather",
"transmission": "Automatic",
"engine": "2.0L Turbo",
"drivetrain": "FWD",
"fuel_type": "Gasoline",
"body_style": "Sedan",
"description": "One-owner Honda Accord with full service history.",
"photos": [
"https://example.com/accord_front.jpg",
"https://example.com/accord_interior.jpg"
],
"features": ["Heated Seats", "Sunroof", "Backup Camera"],
"status": "Available",
"location_city": "Toronto",
"location_province": "ON",
"latitude": 43.6532,
"longitude": -79.3832,
"is_cpo": false
},
{
"vin": "5UXCR6C0XL9C25123",
"make": "BMW",
"model": "X5",
"trim": "xDrive40i",
"year": 2021,
"price": 54995,
"odometer": 42000,
"status": "Available",
"location_city": "Mississauga",
"location_province": "ON",
"latitude": 43.5890,
"longitude": -79.6441,
"is_cpo": true
},
{
"vin": "3VWDX7AJ9CM654321",
"make": "Volkswagen",
"model": "Jetta",
"year": 2023,
"price": 24500,
"odometer": 18000,
"status": "Sold",
"location_city": "Ottawa",
"location_province": "ON",
"latitude": 45.4215,
"longitude": -75.6972
}
]
}Questions? Email support@monsterauto.ca or contact your account manager.
