Domains
A sending domain is the domain part of one or more mailboxes. The endpoint shows each domain as the Domains view of Settings, Accounts does: DNS health, capacity and mailboxes with errors. It also returns the tracking domain of the workspace.
| Method | Path | Action |
|---|---|---|
GET |
/api/v1/domains |
List sending domains |
The API does not buy domains or change DNS records.
List domains#
The list is not paginated. next_cursor is always null.
curl "https://app.anymail.watch/api/v1/domains" \
-H "Authorization: Bearer $ANYMAIL_TOKEN"
const res = await fetch("https://app.anymail.watch/api/v1/domains", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.ANYMAIL_TOKEN}`,
},
});
console.log(res.status, await res.text());
import os
import requests
response = requests.request(
"GET",
"https://app.anymail.watch/api/v1/domains",
headers={
"Authorization": f"Bearer {os.environ['ANYMAIL_TOKEN']}",
},
)
print(response.status_code, response.text)
Response 200
{
"data": [
{
"domain": "example.com",
"mailboxes": [
{ "id": "b2c3d4e5-0000-4000-8000-000000000001", "email": "sales@example.com" },
{ "id": "b2c3d4e5-0000-4000-8000-000000000002", "email": "ada@example.com" }
],
"daily_limit": 100,
"sent_today": 37,
"mailboxes_with_errors": 0,
"checked_at": "2026-10-27T03:00:00.000+00:00",
"spf": "ok",
"dkim": "ok",
"dmarc": "missing",
"has_problem": true
}
],
"tracking_domain": {
"domain": "track.example.com",
"verified": true,
"verified_at": "2026-10-01T09:00:00.000+00:00",
"error": null
},
"next_cursor": null
}
| Field | Notes |
|---|---|
daily_limit |
The sum of the daily limits of the mailboxes on this domain. |
sent_today |
Messages sent today from these mailboxes, each in its own time zone. |
mailboxes_with_errors |
Mailboxes whose last IMAP read failed. |
spf, dkim, dmarc |
ok, missing, conflicting or unknown, from the latest hourly check. unknown means the check did not run or the resolver did not answer. It does not mean the record is missing. |
checked_at |
The time of that check. null when the domain was never checked. |
has_problem |
true when a record needs a change: missing or conflicting. unknown does not count. |
tracking_domain |
The custom domain for open and click tracking, or null when the workspace has none. Opens and clicks are measured only when verified is true. |
Before you start a campaign, pick mailboxes on domains with has_problem: false. A missing DMARC record is the most common reason for mail in spam.
Errors: 401, 403, 429 and 500 only.