curl --request POST \
--url https://app.loops.so/api/v1/email-messages/{emailMessageId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"expectedRevisionId": "<string>",
"subject": "<string>",
"previewText": "<string>",
"fromName": "<string>",
"fromEmail": "<string>",
"replyToEmail": "<string>",
"lmx": "<string>"
}
'{
"success": true,
"emailMessageId": "em_01hxyz",
"campaignId": "cmp_01hxyz",
"subject": "Big spring updates",
"previewText": "A quick look at what's new",
"fromName": "Loops",
"fromEmail": "hello@news.example.com",
"replyToEmail": "support@example.com",
"lmx": "<Email><Text>Hello world</Text></Email>",
"contentRevisionId": "rev_01hyza",
"updatedAt": "2026-03-28T15:30:00.000Z"
}
Update fields on an email message.
curl --request POST \
--url https://app.loops.so/api/v1/email-messages/{emailMessageId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"expectedRevisionId": "<string>",
"subject": "<string>",
"previewText": "<string>",
"fromName": "<string>",
"fromEmail": "<string>",
"replyToEmail": "<string>",
"lmx": "<string>"
}
'{
"success": true,
"emailMessageId": "em_01hxyz",
"campaignId": "cmp_01hxyz",
"subject": "Big spring updates",
"previewText": "A quick look at what's new",
"fromName": "Loops",
"fromEmail": "hello@news.example.com",
"replyToEmail": "support@example.com",
"lmx": "<Email><Text>Hello world</Text></Email>",
"contentRevisionId": "rev_01hyza",
"updatedAt": "2026-03-28T15:30:00.000Z"
}
Documentation Index
Fetch the complete documentation index at: https://loops.so/docs/llms.txt
Use this file to discover all available pages before exploring further.
Draft status.contentRevisionId you last fetched. Used for optimistic concurrency.
The request is rejected with 409 Conflict if the server’s revision has
advanced.@ or domain). The team’s sending domain is
appended automatically.<Style /> tag. The LMX payload must not exceed 100KB.expectedRevisionId on
your next update request.400 Bad Request is returned.
A 404 Not Found is returned if the email message does not exist.
A 409 Conflict is returned when the campaign is not in draft status, when
contentRevisionId is stale, when content cannot be parsed, or when the email message uses MJML format.
A 413 Payload Too Large is returned when the LMX payload exceeds the 100KB limit.
A 422 Unprocessable Entity is returned when LMX compilation fails.
If the API key is invalid (or content API is not enabled for your team), a
401 Unauthorized is returned.
{
"success": true,
"emailMessageId": "em_01hxyz",
"campaignId": "cmp_01hxyz",
"subject": "Big spring updates",
"previewText": "A quick look at what's new",
"fromName": "Loops",
"fromEmail": "hello@news.example.com",
"replyToEmail": "support@example.com",
"lmx": "<Email><Text>Hello world</Text></Email>",
"contentRevisionId": "rev_01hyza",
"updatedAt": "2026-03-28T15:30:00.000Z"
}
Was this page helpful?