Skip to main content
POST
/
v1
/
transactional-emails
Create a transactional email
curl --request POST \
  --url https://app.loops.so/api/v1/transactional-emails \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "<string>"
}
'
{
  "id": "cmnx1d95z001llilji4vapgqs",
  "name": "Welcome email",
  "draftEmailMessageId": "cmn5zia4i0017tzli8ric8giv",
  "draftEmailMessageContentRevisionId": "rev_01hxyz",
  "publishedEmailMessageId": null,
  "createdAt": "2026-03-28T15:00:00.000Z",
  "updatedAt": "2026-03-28T15:00:00.000Z",
  "dataVariables": []
}
Content API endpoints are currently in an open alpha and are subject to change.
This endpoint creates a transactional email and an empty draft email message in one step. Use the returned draftEmailMessageId and draftEmailMessageContentRevisionId when calling Update an email message to set subject, sender, preview text, and LMX content. Then call Publish a transactional email when you’re ready to start sending.

Request

Body

name
string
required
The transactional email name.

Response

Success

Returns 201 Created.
id
string
required
The transactional email ID.
name
string
required
The transactional email name.
draftEmailMessageId
nullable string
required
The ID of the draft email message created for this transactional email.
draftEmailMessageContentRevisionId
nullable string
required
The initial content revision ID for the draft email message. Pass this as expectedRevisionId on your first email message update.
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 the request body is invalid, or if no sending domain is configured, a 400 Bad Request is returned. 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": null,
  "createdAt": "2026-03-28T15:00:00.000Z",
  "updatedAt": "2026-03-28T15:00:00.000Z",
  "dataVariables": []
}
Last modified on June 8, 2026