Clone a letter
const url = 'https://api.tryletterhead.com/api/v3/letters/example/clone?api=true';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url 'https://api.tryletterhead.com/api/v3/letters/example/clone?api=true' \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{}'Duplicate a letter (or template), producing a new letter with a fresh unique identifier and no publication history. Blocks and settings are copied from the source.
What is the letter’s unique identifier? An alphanumeric string, often around ten characters, e.g. ludctamgd6.
Omit channelId to clone the letter in place — onto its own channel, or staying at company level
if the source is a template. channelId addresses a channel by its internal numeric identifier
rather than its slug, so most integrations should leave it out and clone in place rather than try
to move the clone to a different channel.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”The letter’s unique identifier — an alphanumeric string around ten characters, e.g. ludctamgd6.
Query Parameters
Section titled “Query Parameters ”When true, tells the endpoint you are authenticating with a company API key (the key you generate under a company’s administrative settings) rather than a logged-in user session. For API integrations you will almost always set this to true.
Request Body
Section titled “Request Body ”object
(optional) Internal numeric identifier of the destination channel. Omit (or pass 0) to clone in place — see the description above.
(optional) Title for the clone. Defaults to the source letter’s own title.
(optional) Publication status to give the clone. Defaults to the source letter’s own status.
(optional) Whether the clone should pick up its destination channel’s default settings rather than copying the source letter’s settings. Defaults to true.
Example
{}Responses
Section titled “ Responses ”Letter cloned
object
The new, cloned letter. Shown here are the fields most integrators use — the full letter object carries many more.
object
Example
{ "items": { "uniqueId": "7hqk1z0mwe", "title": "This week's edition", "subtitle": "Everything you need to know", "publicationStatus": 3, "channelSlug": null, "channelName": null, "createdAt": "2026-08-31 09:20:00", "updatedAt": "2026-08-31 09:20:00" }, "message": "Company letter cloned.", "total": 10}Still can’t find what you need? Contact support.