Add addresses
From the Suppression API reference. Requests use the base URL https://app.warmerly.com/api/v1 and an API key, see Authentication.
POST /suppressionRequires 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.
| Field | Type | Required | Description |
|---|---|---|---|
emails | string (1-1,000,000 chars) | Yes | A 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.
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:
{ "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:
| Status | message | When |
|---|---|---|
400 | invalid_body | emails missing, empty, or over 1,000,000 characters. |
400 | no_valid_emails | Nothing in emails parsed as a valid address. details.invalid samples up to 20 of the rejected tokens. |
400 | too_many_emails | More 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).