ResourcesPromotions
Create a promotion
Create a promotion with its initial ordered phase set.
At least one phase is required. Phase array order becomes the stored one-based position.
Authorization
bearerAuth storeAuth AuthorizationBearer <token>
Provide your SellApp API key as a bearer token.
In: header
X-STORE<token>
Select the SellApp store for this API request.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://sell.app/api/v2/promotions" \ -H "Content-Type: application/json" \ -d '{ "name": "Launch week", "status": "active", "starts_at": "2026-08-01T00:00:00Z", "ends_at": "2026-08-08T00:00:00Z", "priority": 1, "is_stackable": false, "max_redemptions": 500, "phases": [ { "discount_type": "percentage", "discount_value": "20", "ends_at": "2026-08-04T00:00:00Z", "max_redemptions": 200, "minimum_amount": "10" }, { "discount_type": "fixed", "discount_value": "5", "ends_at": null, "max_redemptions": null, "minimum_amount": "25" } ] }'{
"data": {
"id": 0,
"name": "string",
"status": "active",
"starts_at": "2019-08-24T14:15:22Z",
"ends_at": "2019-08-24T14:15:22Z",
"priority": 0,
"is_stackable": true,
"max_redemptions": 1,
"phases": [
{
"id": 0,
"promotion_id": 0,
"sort_order": 1,
"discount_type": "percentage",
"discount_value": "string",
"ends_at": "2019-08-24T14:15:22Z",
"max_redemptions": 1,
"minimum_amount": "string",
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"deleted_at": "2019-08-24T14:15:22Z"
}
],
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"deleted_at": "2019-08-24T14:15:22Z"
}
}{
"message": "Unauthenticated."
}{
"message": "This action is unauthorized."
}{
"message": "The given data was invalid.",
"errors": {
"data": [
"The data field is required."
]
}
}