Skip to content
Letterhead Letterhead Letterhead Help Center
Admin Tools

Update a letter

POST
/api/v3/letters/{letterUuid}
curl --request POST \
--url https://api.tryletterhead.com/api/v3/letters/example \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "publicationStatus": 3, "segmentId": 0, "includePromotions": true, "title": "This week'\''s edition", "subtitle": "Everything you need to know", "blocks": "[]", "openGraphHeadline": "This week'\''s edition", "openGraphDescription": "Everything you need to know", "openGraphImageUrl": "" }'

Update a letter (or template) by its unique identifier.

This is the v3 (company-scoped) full update. It replaces the letter’s content and configuration in one call and returns the updated letter.

What is the letter’s unique identifier? An alphanumeric string, often around ten characters, e.g. ludctamgd6. It is returned by the create/draft/send endpoints.

This is a full replace, not a partial update

Every writable field is set from the request body. Any field you omit is reset to its default (empty string for text fields, default settings for settings). Fetch the letter first with Retrieve a Letter by its UUID, change what you need, and send the whole object back.

If you only want to change one thing, prefer the narrower endpoints — they exist precisely so you don’t have to round-trip the full payload:

EndpointUpdates
POST /api/v3/letters/{uniqueId}/settingsLetter settings
POST /api/v3/letters/{uniqueId}/permissionsPermissions only
POST /api/v3/letters/{uniqueId}/update-statusPublication status only
POST /api/v3/letters/{uniqueId}/tagsTags

Required fields

FieldTypeNotes
publicationStatusintegerOne of 3 (template), 8 (configuring), 9 (configured). Scheduling and sending are not done here — use the send/schedule endpoints.
segmentIdintegerThe audience segment the letter targets.
includePromotionsbooleanWhether promotions are composed into the letter.

Optional fields

title, subtitle, blocks, html, mjmlTemplate, campaignId, private, publicationDate, openGraphHeadline (max 180), openGraphDescription (max 180), openGraphImageUrl.

If openGraphHeadline / openGraphDescription are omitted they fall back to title / subtitle.

Responses

  • 200 — the updated letter.

  • 403 — the letter is claimed by another editor (body is the current claimant).

  • 422 — validation failed.

letterUuid
required
string

The letter’s unique identifier — an alphanumeric string around ten characters, e.g. ludctamgd6.

Media type application/json
object
publicationStatus
integer
segmentId
integer
includePromotions
boolean
title
string
subtitle
string
blocks
string
openGraphHeadline
string
openGraphDescription
string
openGraphImageUrl
string
Example
{
"publicationStatus": 3,
"segmentId": 0,
"includePromotions": true,
"title": "This week's edition",
"subtitle": "Everything you need to know",
"blocks": "[]",
"openGraphHeadline": "This week's edition",
"openGraphDescription": "Everything you need to know",
"openGraphImageUrl": ""
}

Successful response

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