Blocklist
Addresses and domains that must never be emailed, for one workspace or for the whole account.
List blocklist entries
Returns the suppression entries (blocked domains and email addresses) that apply to the calling key's workspace, newest first. By default that is both lists: the workspace's own entries and the account-wide ones inherited from the main workspace. Narrow with scope=workspace or scope=global. Each item reports which list it came from.
Parameters
- scope string in query
Which list to return: workspace, global, or all (default all)
One of: "workspace", "global", "all" - search string in query
Case-insensitive substring match on the domain or email address
- limit integer in query
Page size (default 100, max 1000)
- offset integer in query
Offset (default 0)
Responses
- 200 OK · BlocklistListResponse
- 400 Invalid scope · ErrorResponse
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 500 Failed to list entries · ErrorResponse
Fields in the 200 response
- items array of BlocklistEntry
6 fields inside items
- createdAt string
- domain stringExample:
competitor.com - emailAddress string
EmailAddress is the blocked address when the entry blocks one address rather than a whole domain.
Example:jane@acme.com - id integerExample:
17 - scope string
Scope is "workspace" for the calling workspace's own entry, "global" for an account-wide one.
One of: "workspace", "global". Example:workspace - workspaceId integer
WorkspaceId is the workspace the entry is stored on. For a global entry read from a sub-workspace this is the main workspace, not the caller.
Example:12
- totalCount integerExample:
214
Request
curl -X GET "https://api.emailchaser.com/r/blocklist" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY"Response
{
"items": [
{
"createdAt": "string",
"domain": "competitor.com",
"emailAddress": "jane@acme.com",
"id": 17,
"scope": "workspace",
"workspaceId": 12
}
],
"totalCount": 214
}Add blocklist entries
Adds up to 1000 suppression entries in one call. Each value is either a full email address (contains "@") or a bare domain. Existing entries and invalid values are skipped, so the call is safe to retry and suited to carrying over a suppression list from another sending platform. scope defaults to "workspace", which suppresses for the calling key's workspace only; "global" suppresses across every workspace on the account and requires a main workspace's key.
Request bodyJSON · BlocklistAddRequest
- scope string
Scope is "workspace" (default) or "global". A global entry suppresses across every workspace on the account and can only be written with a main workspace's API key.
One of: "workspace", "global". Example:workspace - values array of string required
Values holds the email addresses and/or domains to block, up to 1000 per request.
Example:["competitor.com","jane@acme.com"]
Responses
- 200 OK · BlocklistAddResponse
- 400 Invalid request body · ErrorResponse
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 403 Only a main workspace's key may write the account-wide blocklist · ErrorResponse
- 500 Failed to add entries · ErrorResponse
Fields in the 200 response
- created integer
Created is the number of new suppression entries written.
Example:42 - scope string
Scope is the list the entries were written to.
One of: "workspace", "global". Example:workspace - skipped integer
Skipped is the number of values ignored because they already existed or failed validation.
Example:3
Request
curl -X POST "https://api.emailchaser.com/r/blocklist" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"scope": "workspace",
"values": [
"competitor.com",
"jane@acme.com"
]
}'Response
{
"created": 42,
"scope": "workspace",
"skipped": 3
}Delete blocklist entries
Removes up to 1000 entries in one call, by id or by value. Values are matched case-insensitively against both the domain and the email-address column, so unblocking "acme.com" removes the domain entry, not the individual addresses on it. scope limits the delete to one list and defaults to "workspace"; "all" covers both, and anything touching the account-wide list requires a main workspace's key. Entries that match nothing the caller may delete are counted as skipped rather than failing the call.
Request bodyJSON · BlocklistDeleteRequest
- ids array of integer
Ids are entry ids as returned by GET /blocklist.
- scope string
Scope limits the delete to one list: "workspace" (default), "global", or "all". Deleting from "global" requires a main workspace's key.
One of: "workspace", "global", "all". Example:workspace - values array of string
Values are domains or email addresses to unblock, matched case-insensitively. Values not present are counted as skipped.
Example:["competitor.com","jane@acme.com"]
Responses
- 200 OK · BlocklistDeleteResponse
- 400 Invalid request body · ErrorResponse
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 403 Only a main workspace's key may write the account-wide blocklist · ErrorResponse
- 500 Failed to delete entries · ErrorResponse
Fields in the 200 response
- deleted integer
Deleted is the number of entries removed.
Example:12 - skipped integer
Skipped is the number of requested values or ids that matched nothing the caller may delete.
Example:1
Request
curl -X DELETE "https://api.emailchaser.com/r/blocklist" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"ids": [
123
],
"scope": "workspace",
"values": [
"competitor.com",
"jane@acme.com"
]
}'Response
{
"deleted": 12,
"skipped": 1
}Get a blocklist entry
Returns one suppression entry by id. Entries inherited from the account-wide list are visible here too, and report scope "global".
Parameters
- id integer required in path
Blocklist entry ID
Responses
- 200 OK · BlocklistEntry
- 400 Invalid id · ErrorResponse
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 404 Entry not found · ErrorResponse
- 500 Failed to load entry · ErrorResponse
Fields in the 200 response
- createdAt string
- domain stringExample:
competitor.com - emailAddress string
EmailAddress is the blocked address when the entry blocks one address rather than a whole domain.
Example:jane@acme.com - id integerExample:
17 - scope string
Scope is "workspace" for the calling workspace's own entry, "global" for an account-wide one.
One of: "workspace", "global". Example:workspace - workspaceId integer
WorkspaceId is the workspace the entry is stored on. For a global entry read from a sub-workspace this is the main workspace, not the caller.
Example:12
Request
curl -X GET "https://api.emailchaser.com/r/blocklist/123" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY"Response
{
"createdAt": "string",
"domain": "competitor.com",
"emailAddress": "jane@acme.com",
"id": 17,
"scope": "workspace",
"workspaceId": 12
}Update a blocklist entry
Changes the blocked value, the scope, or both. A value containing "@" is stored as an email address, otherwise as a domain, so an entry can be converted between the two. Moving an entry to or from the account-wide list requires a main workspace's key, and moves the entry onto the main workspace.
Parameters
- id integer required in path
Blocklist entry ID
Request bodyJSON · BlocklistUpdateRequest
- scope string
Scope moves the entry between the workspace list and the account-wide list. Moving an entry to "global" requires a main workspace's key.
One of: "workspace", "global". Example:global - value string
Value is the new domain or email address. Which of the two the entry holds is re-inferred from whether the value contains "@", so an entry can be converted between a domain block and an address block.
Example:competitor.com
Responses
- 200 OK · BlocklistEntry
- 400 Invalid request body or id · ErrorResponse
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 403 Only a main workspace's key may write the account-wide blocklist · ErrorResponse
- 404 Entry not found · ErrorResponse
- 409 That value is already blocked in the target list · ErrorResponse
- 500 Failed to update entry · ErrorResponse
Fields in the 200 response
- createdAt string
- domain stringExample:
competitor.com - emailAddress string
EmailAddress is the blocked address when the entry blocks one address rather than a whole domain.
Example:jane@acme.com - id integerExample:
17 - scope string
Scope is "workspace" for the calling workspace's own entry, "global" for an account-wide one.
One of: "workspace", "global". Example:workspace - workspaceId integer
WorkspaceId is the workspace the entry is stored on. For a global entry read from a sub-workspace this is the main workspace, not the caller.
Example:12
Request
curl -X PUT "https://api.emailchaser.com/r/blocklist/123" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"scope": "global",
"value": "competitor.com"
}'Response
{
"createdAt": "string",
"domain": "competitor.com",
"emailAddress": "jane@acme.com",
"id": 17,
"scope": "workspace",
"workspaceId": 12
}Delete a blocklist entry
Removes one suppression entry, unblocking the domain or address. A sub-workspace key cannot delete an account-wide entry it merely inherits.
Parameters
- id integer required in path
Blocklist entry ID
Responses
- 200 OK · BlocklistDeleteEntryResponse
- 400 Invalid id · ErrorResponse
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 403 Only a main workspace's key may write the account-wide blocklist · ErrorResponse
- 404 Entry not found · ErrorResponse
- 500 Failed to delete entry · ErrorResponse
Fields in the 200 response
- id integerExample:
17 - message stringExample:
blocklist entry deleted successfully
Request
curl -X DELETE "https://api.emailchaser.com/r/blocklist/123" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY"Response
{
"id": 17,
"message": "blocklist entry deleted successfully"
}Generated from the Emailchaser API's own OpenAPI definition, so it always matches the running API.