Skip to content
Letterhead Letterhead Letterhead Help Center
Admin Tools

Update a promotion

POST
/api/v3/promotions/{promotionCollateralUid}
curl --request POST \
--url https://api.tryletterhead.com/api/v3/promotions/example \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "api": true, "campaignTitle": "Summer Sale 2026 (Updated)", "channels": [ "an-example-channel" ], "headline": "60% off summer collection β€” extended!", "contentText": "Extended for one more week.", "imageUrl": "https://cdn.example.com/summer-sale-v2.png", "imageAlternativeText": "Updated summer sale banner", "promotionLink": "https://example.com/summer-sale-extended", "promoter": "Example Brand", "dates": [ "2026-07-01", "2026-07-08", "2026-07-15", "2026-07-22" ], "isActive": true, "isEvergreen": false, "zone": "A", "type": 2 }'

Update an existing promotion. The v3 API uses POST (not PUT/PATCH) for updates by convention.

The request body uses the same fields and validation as Create a promotion β€” send the full desired state of the promotion.

v3 endpoints expect a company API key.

Body fields

Same shape as Create a promotion β€” see that endpoint for the full field table.

promotionCollateralUid
required
string

UUID of the promotion to delete

Media type application/json
object
api

Required. Set to true to authenticate with an API key.

boolean
campaignTitle
string
channels
Array<string>
headline
string
contentText
string
imageUrl
string
imageAlternativeText
string
promotionLink
string
promoter
string
dates
Array<string>
isActive
boolean
isEvergreen
boolean
zone
string
type
integer
Example
{
"api": true,
"campaignTitle": "Summer Sale 2026 (Updated)",
"channels": [
"an-example-channel"
],
"headline": "60% off summer collection β€” extended!",
"contentText": "Extended for one more week.",
"imageUrl": "https://cdn.example.com/summer-sale-v2.png",
"imageAlternativeText": "Updated summer sale banner",
"promotionLink": "https://example.com/summer-sale-extended",
"promoter": "Example Brand",
"dates": [
"2026-07-01",
"2026-07-08",
"2026-07-15",
"2026-07-22"
],
"isActive": true,
"isEvergreen": false,
"zone": "A",
"type": 2
}

200 OK

Media type application/json
object
items
object
promotionCollateralUid
string
campaignTitle
string
channels
Array<string>
allChannels
boolean
headline
string
contentText
string
imageUrl
string
imageAlternativeText
string
imageWidth
integer
imageHeight
integer
promotionLink
string
promoter
string
promotionServiceProviderId
integer
dates
Array<string>
isActive
boolean
isInactive
boolean
isEvergreen
boolean
embedClicks
integer
zone
string
type
integer
createdAt
string
updatedAt
string
message
string
total
integer
Example
{
"items": {
"promotionCollateralUid": "b2c3d4e5f6",
"campaignTitle": "Summer Sale 2026 (Updated)",
"channels": [
"news-daily"
],
"allChannels": false,
"headline": "60% off summer collection β€” extended!",
"contentText": "Extended for one more week.",
"imageUrl": "https://cdn.example.com/summer-sale-v2.png",
"imageAlternativeText": "Updated summer sale banner",
"imageWidth": 600,
"imageHeight": 400,
"promotionLink": "https://example.com/summer-sale-extended",
"promoter": "Example Brand",
"promotionServiceProviderId": 0,
"dates": [
"2026-07-01",
"2026-07-08",
"2026-07-15",
"2026-07-22"
],
"isActive": true,
"isInactive": false,
"isEvergreen": false,
"embedClicks": 0,
"zone": "A",
"type": 2,
"createdAt": "2026-06-04 17:30:00",
"updatedAt": "2026-06-04 18:15:42"
},
"message": "Promotion updated successfully",
"total": 1
}

Still can’t find what you need? Contact support.