Create a promotion
fileFormat, promotionName, channelIds (at least one), productIds (at least one), and jurisdictionId.
Metadata
Themetadata field accepts an arbitrary string-to-string map (up to 20 keys). Use it to pass through your own reference IDs, such as Workfront project and task IDs. Adclear stores it with the promotion and echoes it back in every webhook payload, so you can correlate Adclear events to your system without maintaining a separate mapping. Do not store PII, credentials, or sensitive data.
Text promotions
WhenfileFormat is "text", provide the content field instead of uploadIds. The content field accepts plain text or HTML.
Handling upload conflicts
If a referenced file hasn’t finished uploading, the request returns409 Conflict with a details entry of type upload_not_ready. Poll GET /v1/uploads/{uploadId} until each upload’s status is completed, then retry. Use exponential back-off (1s, 2s, 4s, up to ~30s). Small files complete within seconds; files over 100 MB may take longer.
Submit a revision
If a promotion needs changes after review, upload the new file(s) (see File upload), then create a new version on the same promotion. The new version inherits the promotion’s name, channels, products, and jurisdiction. Supply only the new files and any fields you want to override.version. Then trigger evaluation on the new version. Each version is evaluated independently, and previous results are retained for audit.
Create-version fields
| Field | Required | Description |
|---|---|---|
uploadIds | Conditional | Upload IDs for the revised content. Required for file-based formats; omit when fileFormat is "text" |
content | Conditional | Inline text or HTML. Required when fileFormat is "text"; omit for file-based formats |
fileFormat | Yes | pdf, image, video, audio, text, or document |
deadline | No | Updated deadline (ISO 8601). Retained if omitted |
caption | No | Updated caption. Retained if omitted |
details | No | Updated details. Retained if omitted |
type | No | single, batch, carousel, or variations. Inherited if omitted |
linkedClaimIds | No | Updated claim IDs. Retained if omitted |
targetMarketIds | No | Updated target market IDs. Retained if omitted |
applyToAllTargetMarkets | No | Applies to all target markets regardless of targetMarketIds |
metadata | No | Updated metadata. The original is retained and echoed in webhooks if omitted |
promotionName, channelIds, productIds, and jurisdictionId are set once at promotion creation and can’t change per version. Everything else above can be overridden; omitted fields carry forward from the previous version.
Frequently asked questions
Which fileFormat value should I use?
Which fileFormat value should I use?
| File type | fileFormat |
|---|---|
.pdf | pdf |
.jpg, .png, .gif, .webp, .svg, .bmp, .tiff | image |
.mp4, .mov, .avi, .webm, .mkv, .wmv | video |
.mp3, .wav, .aac, .ogg, .flac, .m4a | audio |
.doc, .docx, .xls, .xlsx, .ppt, .pptx, .txt, .csv, .rtf | document |
| Inline text or HTML (no file upload) | text (use the content field instead of uploadIds) |
fileFormat must match the file you uploaded. A .pdf upload uses fileFormat: "pdf", not "document".Can I delete or archive a promotion via the API?
Can I delete or archive a promotion via the API?
No. The API doesn’t support deleting or archiving promotions. They’re retained for compliance audit purposes.