Preview a bulk inventory import
Upload a .xlsx or .csv export. With no mapping, columns are auto-matched to inventory fields by header text (e.g. 'Item Code' -> sku, 'Reorder Level' -> reorder_point); pass one back (edited or not) to re-validate against it before committing. Every row is validated here - nothing is written yet.
Authorization
HTTPBearer JWT access token
In: header
Query Parameters
Optional merchant to act on. Must be one you are a member of.
uuidHeader Parameters
Request Body
multipart/form-data
""Response Body
application/json
application/json
curl -X POST "https://example.com/api/v1/inventory/import/preview" \ -F file="null"{ "data": { "columns": [ { "header": "string", "inferred_type": "string", "sample_values": [ "string" ] } ], "error_rows": 0, "fields": [ { "description": "string", "dtype": "string", "key": "string", "label": "string", "required": true } ], "filename": "string", "mapping": { "property1": "string", "property2": "string" }, "rows": [ { "action": "string", "errors": [ "string" ], "row_number": 0, "sku": "string", "values": {} } ], "to_create": 0, "to_update": 0, "total_rows": 0, "valid_rows": 0 }, "meta": {}, "success": true}Commit a bulk inventory import POST
Re-validates the file against `mapping` exactly as /preview did, then writes every row that passes: a new SKU creates its product and item (with an opening RESTOCK movement if a quantity was given); an existing SKU updates its policy fields only - never its stock count, which stays under Adjust Stock. Rows that fail validation are skipped, not partially applied, and one bad row never blocks the rest.
List inventory GET
List inventory.