Skip to content

Blacklist ​

Beeving never sends to a blacklisted email address. The blacklist is shared across the platform: an address blacklisted after a bounce or complaint is protected for everyone. Each workspace sees and manages only the entries it added.

The entry object ​

json
{
  "id": 9,
  "email": "bounce@example.com",
  "reason": "bounce",
  "created_at": "2026-02-01T10:00:00.000000Z"
}

reason is one of bounce, complaint, manual or unsubscribe. Emails are stored in lowercase.

Endpoints ​

MethodPathPermissionDescription
GET/blacklistblacklist:readEntries your workspace added (paginated). Query: search
POST/blacklistblacklist:writeAdd an email
GET/blacklist/reasonsblacklist:readThe available reasons and their labels
POST/blacklist/checkblacklist:readCheck whether an email is blacklisted
POST/blacklist/bulk-createblacklist:writeAdd up to 1000 emails
DELETE/blacklist/bulk-deleteblacklist:writeRemove up to 1000 emails
GET/blacklist/{id}blacklist:readGet an entry
DELETE/blacklist/{email}blacklist:writeRemove an email. Returns 204.

List blacklist entries ​

GET /blacklist returns entries added by the authenticated token's workspace. Platform-wide entries and entries from other workspaces are not exposed.

ParameterTypeDefaultDescription
pageinteger1Page number, starting at 1
per_pageinteger15Results per page, from 1 to 100
searchstringPartial email address
reasonstringbounce, complaint, manual or unsubscribe
sortstringcreated_atemail, reason or created_at
directionstringdescasc or desc
http
GET /api/v1/blacklist?search=example.com&reason=bounce&sort=email&direction=asc&page=2

The response follows the pagination contract. Equal sort values are ordered consistently by entry ID.

Add an email ​

json
{ "email": "someone@example.com", "reason": "manual" }

201: { "data": Entry }. If the email is already blacklisted, you get 422 with "Email is already blacklisted".

Check an email ​

POST /blacklist/check

This endpoint has its own limit of 30 requests per minute.

json
{ "email": "someone@example.com" }
json
{
  "data": {
    "email": "someone@example.com",
    "is_blacklisted": true,
    "reason": "manual",
    "blacklisted_at": "2026-02-01T10:00:00.000000Z"
  }
}

reason and blacklisted_at are filled in only when your workspace added the entry.

Bulk add / remove ​

json
{ "emails": ["a@example.com", "b@example.com"], "reason": "manual" }

reason is only needed for bulk add.

  • Bulk add returns 201: { "data": { "added": 1, "skipped": 1 } }. skipped counts emails that were already blacklisted.
  • Bulk remove returns 200: { "data": { "deleted": 2, "not_found": 0 } }.

API v1.0