API ReferenceProducts

Cette page n'est disponible qu'en anglais.

Update a product

PATCH /rest/v1/products/{id}

PATCH
/products/{id}

Applies the local update synchronously and returns the full updated product with a sync block describing channel propagation. Texts and listings. title and description are the product's texts. A listing with its own text (overrides, e.g. every imported listing) keeps sending it: on a product with one listing the listing follows the product, on several listings use PATCH /listings/{id} (null = back to the product's text). Images are updated through this endpoint: send the desired images[] array. Elements with a known id are kept untouched (never re-uploaded, channel-side image ids preserved), elements without an id are added (hosted on Nembol's storage, whether you pass a URL or base64), and ids you omit are removed (and deleted from storage). Array order is display order. Omit the field entirely to leave images unchanged. There is no daily upload cap; each product holds up to 20 images. Concurrency is last-write-wins; pass expected_updated_at to fail with 412 if the product changed since you read it. 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

Path Parameters

id*string

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.

Properties1 <= properties

Response Body

application/json

application/json

application/json

application/json

curl -X PATCH "https://example.com/products/string" \  -H "Content-Type: application/json" \  -d '{}'
{  "id": "prod_66a1f09b2",  "object": "product",  "title": "Vintage denim jacket",  "description": "string",  "brand": "string",  "category": "string",  "short_description": "string",  "vat_rate": 0,  "mpn": "string",  "weight": {    "value": "string",    "unit": "oz"  },  "dimensions": {    "length": "string",    "width": "string",    "height": "string",    "unit": "in"  },  "tags": [    "string"  ],  "currency": "string",  "status": "ready",  "requires_attention": {    "reason": "string",    "message": "string",    "channel": "string",    "conflicting_product_ids": [      "string"    ],    "detected_at": "2019-08-24T14:15:22Z"  },  "merged_into": "string",  "sync_status": "ok",  "images": [    {      "id": "img_ph1x8",      "object": "image",      "url": "http://example.com",      "alt": "string",      "position": 0    }  ],  "variants": [    {      "id": "var_66a1f1",      "object": "variant",      "sku": "VDJ-M-001",      "title": "string",      "price": "19.90",      "msrp": "24.90",      "quantity": 0,      "barcode": "string",      "grams": 0,      "asin": "string",      "images": [        {          "image_id": "img_66a1f2",          "url": "http://example.com",          "position": 0        }      ],      "options": {        "property1": "string",        "property2": "string"      }    }  ],  "listings": [    {      "id": "list_9ac2e",      "channel_account_id": "string",      "channel": "string",      "status": "listed",      "url_on_channel": "http://example.com",      "overrides": {        "title": "string",        "description": "string"      }    }  ],  "created_at": "2019-08-24T14:15:22Z",  "updated_at": "2019-08-24T14:15:22Z",  "sync": {    "operation_id": "op_8fd2c1",    "channels": [      {        "channel_account_id": "string",        "status": "pending"      }    ]  }}

Dernière mise à jour le 18 octobre 2026

Besoin d'aide ?

Écrivez-nous et une personne vous répond, généralement sous un jour ouvré.