API ReferenceProducts

Diese Seite ist nur auf Englisch verfügbar.

Batch upsert products by SKU

POST /rest/v1/products/batch

POST
/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.

AuthorizationBearer <token>

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

Idempotency-Key?string

Unique client-generated key (max 255 chars), stored 24h.

Lengthlength <= 255

Request 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"}

Zuletzt aktualisiert am 18. Oktober 2026

Brauchst du Hilfe?

Schreib uns, und ein Mensch antwortet, meist innerhalb eines Werktags.