Inventory API
The Inventory API is a high-throughput REST API used exclusively for uploading inventory data (e.g., vehicles, listings). Reading inventory data is not supported — please use the GraphQL API for data queries.
🔐 Authentication
- The API uses the same authentication mechanism as the GraphQL API.
- You must use an App Client Token with the
inventory:write
grant. - User-level tokens are not supported.
- To get access, email support@vyro.co.
🚦 Rate Limits
- 10,000 requests per minute. All requests are processed asynchronously, typically within a few seconds.
- If you exceed the rate limit, you'll receive a
429 Too Many Requests
response.
🌍 Environments
Environment | Endpoint |
---|---|
Production Asia-Pacific | https://inventory-api.vyro.com.au/batch |
Production Europe | https://inventory-api.vyro-eu.com/batch |
Staging | https://inventory-api.vyrolabs-staging.net/batch |
Dev | https://inventory-api.vyrolabs.net/batch |
📦 Endpoints
POST /batch
Upload a batch of inventory items (up to 100 items or 2MB).
Request Body
{
"source_name": "app:you-app-name",
"items": [
{
"showroom_ids": ["uuid"],
"vehicle": {
"source_id": "PS2-001",
"stock_id": "STK-PS2-001",
"channel": "opaque-string-used-for-tracking",
"production_year": "2024",
"build_date": "2023-12-15",
"compliance_date": "2024-01-10",
"make": "Polestar",
"model": "2",
"badge": "Long range Dual motor",
"series": "EFJH",
"make_code": "POL",
"model_code": "PS2",
"badge_code": "LRDM",
"wheel_name": "19\" Performance",
"wheel_code": "W19P",
"option_codes": ["OPT001", "OPT002"],
"vin": "LPSED4AC6PC123456",
"colour": "Snow",
"interior": "Charcoal WeaveTech",
"colour_code": "C001",
"interior_code": "I001",
"purchased_at": "2024-01-15",
"body_type": "Sedan",
"condition": "new",
"odometer": 0,
"hide_odometer": false,
"battery_health": 100,
"description": "Brand new Polestar 2 with all the latest features and technology.",
"specifications_provider_id": "12345",
"specifications_provider": "redbook",
"specifications_provider_search_method": "id",
"state_of_registration": "NSW",
"registration_number": "ABC123",
"registration_expiry_date": "2025-01-15",
"is_sold": false,
"is_published": true,
"is_listed": true,
"estimated_delivery_delay": 14,
"available_from": "2024-02-01",
"pricing": {
"type": "basic",
"price": 6500000,
"currency": "AUD",
"included_discount": 500000,
"excls_on_roads": false
},
"vehicle_order_min_deposit": 100000,
"powered_by_logo_src": "https://cdn.vyro.com/logos/dealer.png",
"powered_by_description": "Powered by Demo Motors",
"external_cta_url": "https://dealer.example.com/order",
"external_cta_label": "Order now",
"external_cta_description": "Continue to order on dealer website.",
"transmission": "Automatic",
"engine_details": "Electric Dual Motor/300kW",
"useable_battery": 78,
"range": 540,
"fuel_type": "electric",
"safety_rating": 5,
"fuel_rating": 5,
"derivative_code": "532LRDM456",
"tags": [
{
"code": "performance",
"label": "Performance",
"colour_scheme": "blue"
},
{
"code": "electric",
"label": "Electric Vehicle",
"colour_scheme": "green"
}
],
"custom_fields": [
{
"name": "warranty_years",
"value": "5"
},
{
"name": "charging_type",
"value": "CCS2"
}
],
"features_description": "Includes advanced driver assistance, premium audio system, and more.",
"images_description": "Images are representative and may not show exact vehicle specifications.",
"servicing_description": "5 years/75,000km warranty with scheduled servicing included.",
"warranty_description": "Comprehensive 5-year warranty with roadside assistance."
},
"location": {
"source_id": "unique-id-for-this-location-in-your-system",
"name": "Sydney Showroom"
},
"assets": [
{
"type": "image",
"placement": "featured",
"order": 0,
"src": "https://ik.imagekit.io/vyro/public/autofox-api-mapped-to-vehicles/27292c431c2a9c385c4671d67b202dccd5961085dd2fbdc0a190b6c362d795e6.jpg"
},
{
"type": "image",
"placement": "gallery",
"order": 1,
"src": "https://ik.imagekit.io/vyro/public/inventory-api/15fff3392fe4f6b7897d8916af17507463335aee1778fe128d7f03c15f3fe829.jpg"
},
{
"type": "image",
"placement": "gallery",
"order": 2,
"src": "https://ik.imagekit.io/vyro/public/inventory-api/15fff3392fe4f6b7897d8916af17507463335aee1778fe128d7f03c15f3fe829.jpg"
}
]
}
]
}
Success Response
- 201 Created
{
"job_id": "a2e456f3-89b2-4533-b4f2-3b92d8f4b9f3"
}
GET /jobs/{job_id}
Poll the /jobs/{id}
endpoint to check the status of the job.
Processing
This job is still processing. Continue to poll /jobs/a2e456f3-89b2-4533-b4f2-3b92d8f4b9f3
to check the status.
"id": "a2e456f3-89b2-4533-b4f2-3b92d8f4b9f3",
"status": "processing",
"errors": []
}
Completed
This job has finished processing.
"id": "a2e456f3-89b2-4533-b4f2-3b92d8f4b9f3",
"status": "completed",
"errors": []
}
Image Moderation Results
If you are using the image moderation feature, you will receive a response indicating whether the images passed or failed moderation.
{
"id": "ea5e2fc7-087f-44d8-ad51-b8f84f999693",
"status": "completed",
"errors": [],
"image_moderation": [
{
"job_item_id": "351f5d87-7c1d-465f-a40c-f17b1606cfcd",
"index": 0,
"accepted": [
{
"src": "https://ik.imagekit.io/vyro/public/inventory-api/15fff3392fe4f6b7897d8916af17507463335aee1778fe128d7f03c15f3fe829.jpg"
},
{
"src": "https://ik.imagekit.io/vyro/public/inventory-api/15fff3392fe4f6b7897d8916af17507463335aee1778fe128d7f03c15f3fe829.jpg"
}
],
"rejected": [
{
"src": "https://ik.imagekit.io/vyro/public/inventory-api/d6eb784ed534cd8871790f2cc9d9a58cddeaf7578fa58de50c459be96390a275.jpg"
}
]
}
]
}
📘 Notes
- Each inventory item should include
vehicle
,assets
, andshowroom_ids
. - Max 100 items per batch or 2MB of payload.
moderate_images
andmoderate_content
are optional, default totrue
.
Codegen
- The Inventory API supports code generation for various programming languages.
- Point your favorite codegen tool to the API schema to generate client libraries.
- The schema can be found at https://inventory-api.vyro.com.au/spec and is publicly available.
- For example, you can use OpenAPI Generator or Swagger Codegen to generate client libraries in languages like Python, Java, JavaScript, and more.