MailerAddSuppression¶
POST mailer/suppression
Adds an address to the suppression list of the brand. Suppressed addresses are refused in MailerSendEmail before the provider is contacted.
This list is what protects the sending domain. Mailbox providers count bounces and complaints: writing again to an address that already answered "no such mailbox" pushes the bounce rate up, and at some point the provider starts filing all mail from the domain as spam — including confirmation codes to real customers.
Access Control¶
Allowed roles: admin, leader. The entry belongs to the brand of the caller.
Request¶
POST https://{broker_domain}/mailer/suppression
{
"email": "[email protected]",
"reason": "HARD_BOUNCE",
"description": "Mailbox does not exist"
}
{
"command": "MailerAddSuppression",
"extID": "1",
"data": {
"email": "[email protected]",
"reason": "HARD_BOUNCE",
"description": "Mailbox does not exist"
}
}
const res = await platform.MailerAddSuppression({
email: "[email protected]",
reason: "HARD_BOUNCE",
description: "Mailbox does not exist"
});
Request Data¶
| Field | Type | Required | Description |
|---|---|---|---|
email |
string | Yes | Address to suppress |
reason |
enum | No | Why it is suppressed: HARD_BOUNCE, BLOCK, COMPLAINT, UNSUBSCRIBE, MANUAL. Default MANUAL |
description |
string | No | Free-form explanation, up to 512 characters |
expiresAt |
string | No | YYYY-MM-DD HH:mm:ss. Empty means it never expires |
Behavior¶
- The address is stored in lower case and compared case-insensitively. By RFC the local part is case-sensitive, but no mail server uses that: a bounce for
[email protected]must also block[email protected]. - The reason decides the scope.
COMPLAINTandUNSUBSCRIBEblock onlyMARKETING— a spam complaint about a promotion is not a refusal to receive login codes.HARD_BOUNCE,BLOCKandMANUALblock everything. - A soft bounce (a full mailbox) is deliberately not added: it is temporary, and suppressing it would lose a valid recipient.
- Hard bounces and complaints reported by provider webhooks land here automatically — this method is for the manual and imported cases.
Response Data¶
created: false means an existing entry was updated instead. A stronger reason wins: a hard bounce over an unsubscribe, never the other way round.
{
"id": 31,
"brand": "default",
"email": "[email protected]",
"domain": "example.com",
"reason": "HARD_BOUNCE",
"source": "CRM",
"description": "Mailbox does not exist",
"emailId": null,
"expiresAt": null,
"createdAt": "2026-08-24 13:44:02",
"created": true
}
Errors¶
| Code | Error | Description |
|---|---|---|
400 |
INVALID_EMAIL_ADDRESS |
Address cannot be parsed |
400 |
VALIDATION_ERROR |
Unknown reason value |