Skip to main content
POST
Create promotion

Authorizations

Authorization
string
header
required

Unkey API key passed as Bearer token

Headers

X-External-User-ID
string
required

External user identifier from the calling system

X-External-User-Email
string<email>

External user email from the calling system

Body

application/json
promotionName
string
required

Display name for the promotion

Minimum string length: 1
productIds
string<uuid>[]
required

Product IDs (from /v1/products)

Minimum array length: 1
uploadIds
string<uuid>[]

Upload IDs from the File API. Required for file-based formats (pdf, image, video, etc.). Must be omitted when fileFormat is "text".

content
string

Inline text or HTML content. Required when fileFormat is "text". Must be omitted for file-based formats.

Minimum string length: 1
fileFormat
enum<string>

Content format (text, video, audio, image, pdf, document)

Available options:
text,
video,
audio,
image,
pdf,
document
channelIds
string<uuid>[]

Channel IDs (from /v1/channels)

Minimum array length: 1
jurisdictionId
string<uuid>

Jurisdiction ID (from /v1/jurisdictions)

deadline
string<date-time>

Deadline in ISO 8601 format

paidPromotion
boolean

Whether this is a paid promotion

isFinancialPromotion
boolean

Whether this is a financial promotion. Defaults to true when omitted. Setting false marks the promotion as explicitly not a financial promotion, which skips the compliance evaluation.

evergreen
boolean

Whether this promotion is evergreen (no expiry)

nextReviewDate
string<date-time> | null

Next review date in ISO 8601 format

caption
string
details
string
type
enum<string>

Promotion type (single, carousel, variations)

Available options:
single,
carousel,
variations
linkedClaimIds
string<uuid>[]
targetMarketIds
string<uuid>[]
applyToAllTargetMarkets
boolean
metadata
object

Arbitrary key-value pairs stored with the promotion and echoed back in webhook payloads. Max 20 keys. Keys: alphanumeric/underscore/hyphen, max 128 chars. Values: max 1024 chars. Do not store PII, credentials, or sensitive data.

Example:
variations
object[]

Create a linked variation set in one request. Mutually exclusive with top-level uploadIds, content, and fileFormat.

Required array length: 2 - 20 elements
tags
string[] | null

Tag names to attach to the promotion. Existing tags are reused; unknown names are created. Names are trimmed, and duplicates within one request are ignored. Tags belong to the promotion, so they are shared by all of its versions. Max 20 tags, each up to 255 characters. Names beginning with "Var-" and the name "TESTING" are reserved.

Example:

Response

Promotion created

promotionId
string<uuid>
required
versionId
string<uuid>
required
version
integer
required

Auto-derived version number

correlationId
string<uuid>
required

Correlation ID for request tracing. Include in support requests.

publicId
string

Human-readable promotion ID, when available

metadata
object

Stored metadata echoed back for confirmation

tags
string[]

Tag names actually attached, echoed back for confirmation. Empty when tags were requested but could not be attached — the promotion is still created, and the request can be retried by adding the tags separately.