Commit a bulk inventory import
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.
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/commit" \ -F file="null"{ "data": { "created": 0, "failed": 0, "row_errors": [ {} ], "skipped": 0, "total_rows": 0, "updated": 0 }, "meta": {}, "success": true}Export the inventory book to Excel GET
A multi-sheet workbook. Valuation columns are omitted entirely for a user without `inventory:value_read` - an export must not hand over what the UI withholds.
Preview a bulk inventory import POST
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.