API ReferencePromotions

Update a promotion

PATCH /rest/v1/promotions/{id}

PATCH
/promotions/{id}

Draft, scheduled, ended or stopped promotions (a running one answers 409 promotion_running: stop it first); new dates restart an ended one. Fields not sent stay as they are; only the sent ones are validated. Required scope: promotions: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.

On create name, discount, channels and product_ids are required; on PATCH every field is optional.

Response Body

application/json

application/json

application/json

application/json

curl -X PATCH "https://example.com/promotions/promo_66f0a1" \  -H "Content-Type: application/json" \  -d '{}'
{  "id": "promo_66f0a1",  "object": "promotion",  "name": "string",  "status": "draft",  "discount": {    "type": "percentage",    "value": 0  },  "starts_at": "2019-08-24T14:15:22Z",  "ends_at": "2019-08-24T14:15:22Z",  "channels": [    "string"  ],  "product_ids": [    "string"  ],  "variant_ids": {    "property1": [      "string"    ],    "property2": [      "string"    ]  },  "show_countdown": true,  "target_counts": {    "property1": 0,    "property2": 0  },  "targets": [    {      "product_id": "string",      "channel": "string",      "status": "string",      "error": "string"    }  ],  "created_at": "2019-08-24T14:15:22Z"}

Last updated on October 18, 2026

Need help?

Email us and a human replies, usually within one business day.