Suppressions · MachineMail Docs

Method Path Summary
GET /v0/suppressions List Suppressions
POST /v0/suppressions Add Suppression
GET /v0/suppressions/{email} Get Suppression
DELETE /v0/suppressions/{email} Remove Suppression

List Suppressions

http

GET /v0/suppressions

Every suppressed address in the organization (also for pod and inbox credentials). Addresses are added automatically on permanent bounces and complaints.

Authentication:Authorization: Bearer <api key> or the dashboard mm_session cookie. Permission: list_entry_read.

Query parameters

FieldDescription

limit``integer

Maximum number of items to return. Default 50, maximum 500; larger values are capped.

page_token``string

next_page_token from the previous page.

ascending``boolean

Sort oldest first.

Response

200 A page of suppressions (application/json)

FieldDescription

count``integerRequired

Number of items returned.

limit``integer

Maximum number of items per page. Default 50, maximum 500; larger values are capped.

next_page_token``string

Page token for pagination. Absent on the last page.

suppressions Suppression[] Required

Newest first unless ascending is set.

Each item of suppressions is a Suppression:

FieldDescription

email``stringRequired

The suppressed address (lowercased).

organization_id``stringRequired

ID of the organization.

reason``"bounce" | "complaint" | "manual"Required

bounce: a permanent bounce. complaint: the recipient reported spam; only MachineMail support can remove it. manual: added with POST /v0/suppressions.

detail``string

Free text: the bounce diagnostic, or the note given when the address was added manually.

source_message_id``string

Message whose bounce or complaint caused the suppression.

created_at``string (date-time)Required

When the address was suppressed.

Errors

Status Meaning
400 Invalid request: error.type is validation and error.param names the field.
401 Missing, invalid, expired or revoked credential.
403 The credential lacks the permission or scope for this request (error.type forbidden), or MachineMail suspended the organization or its sending (account_suspended: error.message says what still works; do not retry or re-register).
500 Unexpected server error.

Error bodies use the error envelope.

Example

Request

curl "https://api.machinemail.dev/v0/suppressions" \
  -H "Authorization: Bearer $MACHINEMAIL_API_KEY"

Response 200

{
  "count": 1,
  "limit": 50,
  "next_page_token": "eyJvIjo1MH0",
  "suppressions": [\
    {\
      "email": "agent@machinemail.dev",\
      "organization_id": "org_01k6x2m9qd0000a7h3kq9v2c4e",\
      "reason": "bounce",\
      "detail": "string",\
      "source_message_id": "string",\
      "created_at": "2026-10-01T12:00:00.000Z"\
    }\
  ]
}

Add Suppression

http

POST /v0/suppressions

Suppress an address for the whole organization, with reason: "manual". Adding an address that is already suppressed replaces a bounce or manual suppression (its reason becomes manual); a complaint suppression is returned unchanged. Sends to a suppressed address return 403.

Authentication:Authorization: Bearer <api key> or the dashboard mm_session cookie. Permission: list_entry_create.

Request body

Content type: application/json.

FieldDescription

email``stringRequired

Address to suppress.

detail``string

Note stored as detail.

reason``stringDeprecated

Old name of detail (it is stored as detail; the suppression reason is always manual). Ignored when detail is set.

Response

201 Created (application/json)

FieldDescription

email``stringRequired

The suppressed address (lowercased).

organization_id``stringRequired

ID of the organization.

reason``"bounce" | "complaint" | "manual"Required

bounce: a permanent bounce. complaint: the recipient reported spam; only MachineMail support can remove it. manual: added with POST /v0/suppressions.

detail``string

Free text: the bounce diagnostic, or the note given when the address was added manually.

source_message_id``string

Message whose bounce or complaint caused the suppression.

created_at``string (date-time)Required

When the address was suppressed.

Errors

Error bodies use the error envelope.

Example

Request

curl -X POST "https://api.machinemail.dev/v0/suppressions" \
  -H "Authorization: Bearer $MACHINEMAIL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "email": "agent@machinemail.dev",
  "reason": "string"
}'

Response 201

{
  "email": "agent@machinemail.dev",
  "organization_id": "org_01k6x2m9qd0000a7h3kq9v2c4e",
  "reason": "bounce",
  "detail": "string",
  "source_message_id": "string",
  "created_at": "2026-10-01T12:00:00.000Z"
}

Get Suppression

http

GET /v0/suppressions/{email}

Authentication:Authorization: Bearer <api key> or the dashboard mm_session cookie. Permission: list_entry_read.

Path parameters

FieldDescription

email``stringRequired

The suppressed address (URL-encoded).

Response

200 The suppression (application/json)

FieldDescription

email``stringRequired

The suppressed address (lowercased).

organization_id``stringRequired

ID of the organization.

reason``"bounce" | "complaint" | "manual"Required

bounce: a permanent bounce. complaint: the recipient reported spam; only MachineMail support can remove it. manual: added with POST /v0/suppressions.

detail``string

Free text: the bounce diagnostic, or the note given when the address was added manually.

source_message_id``string

Message whose bounce or complaint caused the suppression.

created_at``string (date-time)Required

When the address was suppressed.

Errors

Status Meaning
401 Missing, invalid, expired or revoked credential.
403 The credential lacks the permission or scope for this request (error.type forbidden), or MachineMail suspended the organization or its sending (account_suspended: error.message says what still works; do not retry or re-register).
404 Not found. Also returned for resources outside the credential scope.
500 Unexpected server error.

Error bodies use the error envelope.

Example

Request

curl "https://api.machinemail.dev/v0/suppressions/customer@example.com" \
  -H "Authorization: Bearer $MACHINEMAIL_API_KEY"

Response 200

Remove Suppression

http

DELETE /v0/suppressions/{email}

Allow sending to the address again. Organization-scoped credentials only: pod and inbox credentials get 403. Only bounce and manual suppressions can be removed: a complaint suppression returns 403 (Complaint suppressions can only be removed by MachineMail support; email support@machinemail.dev).

Authentication:Authorization: Bearer <api key> or the dashboard mm_session cookie. Permission: list_entry_delete.

Path parameters

FieldDescription

email``stringRequired

The suppressed address (URL-encoded).

Response

200 Deleted (application/json)

FieldDescription

ok``trueRequired

Errors

Error bodies use the error envelope.

Example

Request

curl -X DELETE "https://api.machinemail.dev/v0/suppressions/customer@example.com" \
  -H "Authorization: Bearer $MACHINEMAIL_API_KEY"

Response 200

{
  "ok": true
}