Less boo. More booked. Halloween offer: 30 days free on any paid plan. Claim 30 days freeEvery new account gets one free mailbox for warmup and replies. No domain to buy. See how it works

Skip to content

Add addresses

API referenceSuppression

From the Suppression API reference. Requests use the base URL https://app.warmerly.com/api/v1 and an API key, see Authentication.

text
POST /suppression

Requires X-Api-Key. Not project-scoped. The list applies to a whole workspace, not a single project. The workspace is the one named by the X-Workspace-Id header (you must be a member of it), otherwise your own personal workspace.

FieldTypeRequiredDescription
emailsstring (1-1,000,000 chars)YesA blob of addresses separated by commas, semicolons, spaces, tabs, or newlines. Tolerates Name <a@b.com> formatting and a leading email/email_address CSV header, so you can paste a raw CSV column unedited.

Up to 5,000 addresses per request. Every address added this way is recorded with reason: "manual"; the unsubscribed and bounced reasons are set only by Warmerly itself (the unsubscribe link and the bounce classifier), so a hand-typed address is never attributed to either.

bash
curl -X POST https://app.warmerly.com/api/v1/suppression \
  -H "X-Api-Key: wmv_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{ "emails": "jane@example.com, john@example.com" }'

201 Created:

json
{ "added": 2, "alreadyPresent": 0, "invalid": [] }

added is new rows inserted; alreadyPresent is addresses already on the workspace's list (adding one twice is a no-op, and an address repeated inside one request is counted once); invalid lists tokens that looked like an email attempt (contained @) but failed validation. Addresses are lowercased.

Errors:

StatusmessageWhen
400invalid_bodyemails missing, empty, or over 1,000,000 characters.
400no_valid_emailsNothing in emails parsed as a valid address. details.invalid samples up to 20 of the rejected tokens.
400too_many_emailsMore than 5,000 addresses parsed. details carries { max, received }.

Every add is recorded in the workspace audit log as suppression.added (removals, when staff perform them, as suppression.removed).

Was this page helpful?