# Domains

> Source: https://developers.anymail.watch/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`.

```bash
curl "https://app.anymail.watch/api/v1/domains" \
  -H "Authorization: Bearer $ANYMAIL_TOKEN"
```

**Response `200`**

```json
{
  "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.

## Related

- [Mailboxes](/mailboxes/)
- [Campaigns](/campaigns/)
- [Statistics](/campaign-stats/)
