Create a draft from a template
const url = 'https://api.tryletterhead.com/api/v3/letters/example/actions/draft';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"api":true,"channel":"an-example-channel","subject":"Who doesn\'t love a good movie?","subtitle":"A new exhibition, two openings, and a closer look at this season\'s residency.","suppress":["some-other-channel"],"curations":[{"excerpt":"Pan\'s Labyrinth should be number one, we think.","tags":["pans-labyrinth"],"title":"The 100 Best Movies of the 21st Century","url":"https://www.nytimes.com/interactive/2025/movies/best-movies-21st-century.html"}]}'};
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/actions/draft \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "api": true, "channel": "an-example-channel", "subject": "Who doesn'\''t love a good movie?", "subtitle": "A new exhibition, two openings, and a closer look at this season'\''s residency.", "suppress": [ "some-other-channel" ], "curations": [ { "excerpt": "Pan'\''s Labyrinth should be number one, we think.", "tags": [ "pans-labyrinth" ], "title": "The 100 Best Movies of the 21st Century", "url": "https://www.nytimes.com/interactive/2025/movies/best-movies-21st-century.html" } ] }'Create a draft edition from a newsletter template: letterUuid in the path identifies the
template to draft from, not the resulting letter. Persists any curations you pass and hydrates
them onto the template’s targetable blocks, then returns the new draft letter with its rendered
email content.
The draft is created in draft status — nothing is sent or scheduled by this call. Use
sendALetterFromATemplate to send a letter from a template directly instead.
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.
Request Body required
Section titled “Request Body required ”object
This is a little silly, but you need to inform the API endpoint that you are interfacing with it as a RESTful API user.
(optional) Override the template’s subtitle (email preview text) for this draft edition. Max 191 chars. Omit or send null to keep the template’s existing subtitle.
(optional) An array of channel identifiers (slugs), to suppress sending to anyone on “an-example-channel” who is also subscribed to one or more of the channels passed here.
object
Example
{ "api": true, "channel": "an-example-channel", "subject": "Who doesn't love a good movie?", "subtitle": "A new exhibition, two openings, and a closer look at this season's residency.", "suppress": [ "some-other-channel" ], "curations": [ { "excerpt": "Pan's Labyrinth should be number one, we think.", "tags": [ "pans-labyrinth" ], "title": "The 100 Best Movies of the 21st Century", "url": "https://www.nytimes.com/interactive/2025/movies/best-movies-21st-century.html" } ]}Responses
Section titled “ Responses ”Create a draft from a template
Still can’t find what you need? Contact support.