Skip to main content
POST
/
v1
/
transactional-emails
/
{transactionalId}
/
draft
Ensure a transactional email has a draft
curl --request POST \
  --url https://app.loops.so/api/v1/transactional-emails/{transactionalId}/draft \
  --header 'Authorization: Bearer <token>'
{
  "id": "cmnx1d95z001llilji4vapgqs",
  "name": "Welcome email",
  "draftEmailMessageId": "cmn5zia4i0017tzli8ric8giv",
  "draftEmailMessageContentRevisionId": "rev_01hxyz",
  "publishedEmailMessageId": "cmn5bia4i0217tzli8ric8giv",
  "createdAt": "2026-03-28T15:00:00.000Z",
  "updatedAt": "2026-03-28T15:20:00.000Z",
  "dataVariables": []
}
Content API endpoints are currently in an open alpha and are subject to change.
If a draft email message already exists, it is returned unchanged. Otherwise a new empty draft is created (seeded from the most recent published version when present). Use the returned draftEmailMessageId and draftEmailMessageContentRevisionId when calling Update an email message to edit the draft’s content.

Request

Path parameters

transactionalId
string
required
The ID of the transactional email.

Body

No request body.

Response

Success

id
string
required
The transactional email ID.
name
string
required
The transactional email’s name.
draftEmailMessageId
nullable string
required
The ID of the draft email message.
draftEmailMessageContentRevisionId
nullable string
required
The contentRevisionId of the draft email message. Pass this as expectedRevisionId on your first update via Update an email message.
publishedEmailMessageId
nullable string
required
The ID of the published email message, if one exists.
createdAt
string
required
ISO 8601 timestamp for when the transactional email was created.
updatedAt
string
required
ISO 8601 timestamp for when the transactional email was last updated.
dataVariables
array
required
Data variable names used by the published email. Empty for unpublished transactionals.

Error

If transactionalId is invalid, or if no sending domain is configured, a 400 Bad Request is returned. A 404 Not Found is returned if the transactional email does not exist. If the API key is invalid (or content API is not enabled for your team), a 401 Unauthorized is returned.
message
string
required
An error message describing what went wrong.
{
  "id": "cmnx1d95z001llilji4vapgqs",
  "name": "Welcome email",
  "draftEmailMessageId": "cmn5zia4i0017tzli8ric8giv",
  "draftEmailMessageContentRevisionId": "rev_01hxyz",
  "publishedEmailMessageId": "cmn5bia4i0217tzli8ric8giv",
  "createdAt": "2026-03-28T15:00:00.000Z",
  "updatedAt": "2026-03-28T15:20:00.000Z",
  "dataVariables": []
}
Last modified on June 8, 2026