Update a promotion
PATCH /rest/v1/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.
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
Path Parameters
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.
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.