Messenger API methods (unstable)
Sidemail Messenger API lets you easily send newsletters, campaigns, and product updates to your users — fully automated, personalized, and managed via API. Create and schedule one-time broadcasts, target any segment of contacts.
Available API endpoints:
GET https://api.sidemail.io/v1/messenger— List all Messenger draftsGET https://api.sidemail.io/v1/messenger/{id}— Get a Messenger draftPOST https://api.sidemail.io/v1/messenger— Create a Messenger draftPATCH https://api.sidemail.io/v1/messenger/{id}— Update a Messenger draftDELETE https://api.sidemail.io/v1/messenger/{id}— Delete a Messenger draft
Messenger Object
A Messenger draft object represents a single message draft.
id(string): Unique identifier of the Messenger draft.subject(string): Subject line of the Messenger. Defaults toUntitled draft.fromName(string, optional): Name of the sender.fromAddress(string): Email address of the sender.html(string, optional): HTML content of the message (used if not using template).richTextValue(object or null, optional): Rich text content, or null if not set.templateId(string or null, optional): Template ID to use.templateProps(object, optional): Key-value pairs for template variables.recipients(object): Recipients query object. See Contacts API.contactId(string or array of strings, optional): List of contact IDs.groupId(string or array of strings, optional): List of group IDs.filter(object, optional): Advanced filter object (see Contacts API).match("all" or "any", optional): Whether all or any recipient rules must match.isSubscribed(boolean, optional): Only acceptstrue, defaults totrue.
scheduledAt(string or null, optional): ISO8601 date string for scheduled delivery, or null.isTimezoneScheduled(boolean): Whether to schedule by recipient timezone. Defaults tofalse.contentType(string): One of"with-layout","no-layout", or"template". Defaults to"with-layout".status(string): One of"draft","queued","scheduled","processing","DONE". Only"draft"and"queued"statuses are editable. Defaults to"draft".createdAt(string): ISO8601 date string when the Messenger was created.stats(object, not editable): Stats object (see below). Only defined after a draft is queued.totalRecipients(number): Total recipients.unsubscribedTotal(number): Unsubscribed recipients.deliveriesTotal(number): Delivered messages.complaintsTotal(number): Complaints received.bouncesTotal(number): Bounced emails.uniqueOpensTotal(number): Unique opens.
Example data:
{
"id": "5d45dd1ca546d200fe201f84",
"subject": "Welcome to Sidemail!",
"fromName": "Sidemail Team",
"fromAddress": "[email protected]",
"html": "<p>Hello {{contact.name}}, welcome!</p>",
"richTextValue": null,
"templateId": null,
"templateProps": null,
"recipients": {
"contactId": null,
"groupId": ["5d45dd1ca546d200fe201f83"],
"filter": {
"match": "all",
"rules": [
{ "field": "customProps.plan", "operator": "includes", "value": "premium" },
{ "field": "createdAt", "operator": "gte", "value": "2025-01-01T00:00:00.000Z" }
]
},
"match": "all",
"isSubscribed": true
},
"scheduledAt": "2025-05-10T09:00:00.000Z",
"isTimezoneScheduled": false,
"contentType": "with-layout",
"status": "DONE",
"createdAt": "2025-05-04T12:00:00.000Z",
"stats": {
"totalRecipients": 1500,
"unsubscribedTotal": 5,
"deliveriesTotal": 1490,
"complaintsTotal": 1,
"bouncesTotal": 4,
"uniqueOpensTotal": 900
}
}
Get a Messenger draft
GET https://api.sidemail.io/v1/messenger/:id
Returns
Example response:
{ "data": {/* Messenger object */ } }
List Messenger drafts
GET https://api.sidemail.io/v1/messenger
Query string parameters
offset(number, optional): Number of drafts to skip (pagination). Default:0.limit(number, optional): Number of drafts per page. Default:20.
Returns
Example response:
{
"data": [/* ... */],
"pageCount": 5,
"totalCount": 42
}
Create a Messenger draft
POST https://api.sidemail.io/v1/messenger
The request body must be a valid Messenger draft object (see above)
Example request:
{
"subject": "Welcome!",
"fromAddress": "[email protected]",
"templateId": "5d45dd1ca546d200fe201f83",
"recipients": { "filter": { "match": "all", "rules": [ { "field": "customProps.plan", "operator": "includes", "value": "premium" } ] } },
"scheduledAt": "2025-05-04T12:00:00.000Z"
}
Returns
Returns the created Messenger draft object (see above).
Update a Messenger draft
PATCH https://api.sidemail.io/v1/messenger/:id
The request body must be a valid Messenger draft object (see above). Partial updates are supported.
Example request:
{
"subject": "Updated subject",
"scheduledAt": "2025-05-05T12:00:00.000Z"
}
Example to queue a draft for delivery:
{
"status": "queued"
}
Returns
Returns status code 200 on success and an empty JSON object:
{}
Delete a Messenger draft
DELETE https://api.sidemail.io/v1/messenger/:id
Permanently deletes a Messenger draft. It cannot be undone.
Returns
Example response:
{
"deleted": true
}