Skip to main content
POST

Authorizations

Authorization
string
header
required

Opaque Authorization header using the Bearer scheme. Example: "Authorization: Bearer {token}"

Body

The offer to create or update.

unifiedCampaignId
string | null

ID of Unified Campaign.

Maximum string length: 64
offerId
string | null

ID of Promotion Campaign.

Maximum string length: 255
name
string | null

Name of the campaign visible in the admin tools.

Maximum string length: 255
validFrom
string<date-time> | null

Date when any coupons for this promotion campaign become available to pick up in store.

validTo
string<date-time> | null

Date when all coupons for this promotion campaign stop being available to pick up in the store.

previewVisibleFrom
string<date-time> | null

Date when Coupons will be returned in API and visible in the app. Cannot be cleared after being set.

offerType
string | null

Customer specific campaign type. Determines how or by which service campaign will be used. Types used so far: game, appCoupon, gift, preferredStore, memberOffer, stampCard, stickersCampaign, segmentedAppCoupon. If not specified during creation, default type will be used.

Maximum string length: 255
offerContent
object
prices
object
discount
object
redemptionLimit
integer<int32> | null

Specifies how many times coupon can be redeemed in store. Each redemption is a separate purchase. Amount of time a coupon can be used in one purchase is controlled by Discount model. When not specified, defaults to last stored value on update, or 1 on create. Use 0 to indicate that coupon can be redeemed unlimtied amount of times. If value is not equal to 1, we recommned providing Idempotency key during redemption, or weird behavior might happen.

totalCoupons
integer<int32> | null

Total amount of possible coupons in the campaign. When it is null, unlimited amount of coupons can be assigned.

isDefault
boolean | null

Can be true only for personal campaigns ("personalOffer", "relevantOffer"). When true, this campaign will be returned for a user that has no coupons assigned in personal campaigns.

chainIds
string[] | null

List of Chain Ids where Promotion campaign is available. Mutually exclusive with StoreIds.

storeIds
string[] | null

List of Store Ids where Promotion campaign is available. Mutually exclusive with ChainIds.

offerSynchronized
boolean | null

Specifies if offer was successfully synchronized into customer system

fundedBy
string | null

Specifies who this offer is funded by. Retailers can use any values they need, or keep it empty

Maximum string length: 100
audienceIds
string[] | null

Segmentation identifier from the audience service.

displayPriority
integer<int32> | null

Controlls the order in which coupons are returned to the mobile app. Lower number means higher priority

preactivated
boolean | null

Specifies if coupons for this offer require activation, or are working on POS without activation

ignoreOnPos
boolean | null

Specifies if coupons should be visible and processed by POS.

published
boolean | null

When set to true, offer will be also published during upsert. When set to false, Offer will be moved to draft. When not specified, offer status will not be checked.

defaultValidForDays
integer<int32> | null

Default number of days a Triggered coupon is valid for, when no explicit value is specified during assignment

metadata
object | null

Allows to store any arbitrary data in Campaign, returned in all get requests and sent to IL during activation. Can be null.

Response

OK

offerId
string
required

ID of Promotion Campaign.

Required string length: 1 - 255
name
string
required

Name of the campaign visible in the admin tools.

Required string length: 1 - 255
unifiedCampaignId
string | null

ID of Turboflow Campaign.

Maximum string length: 64
validFrom
string<date-time> | null

Date when any coupons for this promotion campaign become available to pick up in store.

validTo
string<date-time> | null

Date when all coupons for this promotion campaign stop being available to pick up in the store.

previewVisibleFrom
string<date-time> | null

Date when Coupons will be returned in API and visible in the app. Optional. When not specified, ValidFrom is used.

offerType
string | null

Customer specific campaign type. Determines how or by which service campaign will be used. Types used so far: game, appCoupon, gift, preferredStore, memberOffer, stampCard, stickersCampaign, segmentedAppCoupon.

Maximum string length: 255
content
object
prices
object
discount
object
status
enum<string>
Available options:
Imported,
Active,
Expired,
Scheduled
redemptionLimit
integer<int32>

Specifies how many times coupon can be redeemed in store. Each redemption is a separate purchase. Amount of time a coupon can be used in one purchase is controlled by Discount model.

totalCoupons
integer<int32> | null

Total amount of possible coupons in the campaign. When it is null, unlimited amount of coupons can be assigned.

statistics
object

Statistical data about campaign. Can be null if not requested.

chainIds
string[] | null

List of Chain Ids where Promotion campaign is available. Mutually exclusive with StoreIds. Can be null if not requested

storeIds
string[] | null

List of Store Ids where Promotion campaign is available. Mutually exclusive with ChainIds. Can be null if not requested

isDefault
boolean | null

Can be true only for personal campaigns ("personalOffer", "relevantOffer"). When true, this campaign will be returned for a user that has no coupons assigned in personal campaigns.

offerSynchronized
boolean

Specifies if offer was successfully synchronized into customer system

fundedBy
string | null

Specifies who this offer is funded by. Retailers can use any values they need, or keep it empty

Maximum string length: 100
audienceIds
string[] | null

Segmentation identifier from the audience service.

Maximum array length: 1
metadata
object | null

Allows to store any arbitrary data in Campaign, returned in all get requests and sent to IL during activation. Can be null.

authorName
string | null

The name of the person/entity that created the offer.

Maximum string length: 64
isTemplate
boolean

Specifies if the offer is template, meaning it can be used as a base for other offers during creation

displayPriority
integer<int32>

Controlls the order in which coupons are returned to the mobile app. Lower number means higher priority

preactivated
boolean

Specifies if coupons for this offer require activation, or are working on POS without activation

ignoreOnPos
boolean

Specifies if coupons should be visible and processed by POS.

defaultValidForDays
integer<int32> | null

Default number of days a Triggered coupon is valid for, when no explicit value is specified during assignment

modifiedDate
string<date-time> | null

The date and time when the campaign was modified. Changes every time the campaign is updated.

modifiedBy
string | null

The name of the person/entity that last updated the offer.

Maximum string length: 64
Last modified on August 10, 2026