Questa pagina è disponibile solo in inglese.
Batch upsert products by SKU
POST /rest/v1/products/batch
Create or update up to 100 products in one call, matched by variant SKU. Items are validated upfront; per-item outcomes appear in the operation's results[] and the overall status may be partial. Same matching as /inventory/batch: a SKU on more than one variant is never guessed: that item fails with sku_ambiguous (error.details.product_ids) and nothing is written for it. When no item applies, the answer is a synchronous 422 no_items_applied (error.details.rejected_items), no operation is created. Exception: items that failed only on Nembol's side (internal_error) still give a 202 failed operation, since retrying may work. Test keys simulate without reading products.
Required scope: products:write.
Authorization
apiKey Authorization: Bearer nbl_live_... (or nbl_test_... for test mode). Test-mode writes are validated and simulated but never persisted and never touch channels; simulated results are marked simulated.
In: header
Header Parameters
Unique client-generated key (max 255 chars), stored 24h.
length <= 255Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
curl -X POST "https://example.com/products/batch" \ -H "Content-Type: application/json" \ -d '{ "items": [ { "title": "string" } ] }'{ "id": "op_8fd2c1", "object": "operation", "type": "string", "status": "pending", "resource_type": "string", "resource_id": "string", "results": [ { "channel_account_id": "string", "product_id": "string", "listing_id": "string", "sku": "string", "variant_id": "string", "previous_price": "19.90", "price": "19.90", "status": "pending", "error": { "code": "string", "message": "string", "details": {} } } ], "import": { "source": "channel", "channel_account_id": "string", "filters": {}, "warnings": [ "string" ], "processed": 0, "total": 0, "created": 0, "updated": 0, "unchanged": 0, "linked": 0, "not_imported": 0, "requires_attention": 0, "error": "string", "undone_at": "2019-08-24T14:15:22Z", "undo": { "removed": 0, "unlinked": 0, "kept": { "live_on_a_channel": 0, "modified_after_import": 0 } } }, "created_at": "2019-08-24T14:15:22Z", "completed_at": "2019-08-24T14:15:22Z"}Ultimo aggiornamento il 18 ottobre 2026