# Verify domain

> Run the DNS checks now and return the updated domain.

Source: https://sndr.sh/docs/cranl/domains/verify-domain

`POST https://api.sndr.sh/api/cranl/v1/domains/{id}/verify`

Run the DNS checks now and return the updated domain. status becomes verified when SPF, DKIM and DMARC all pass, otherwise it stays pending; each check is verified or failed.

Scope: `send`

**Path parameters**

- `id` (string, required): Domain ID (dom_...).

**Request**

```bash
curl -X POST 'https://api.sndr.sh/api/cranl/v1/domains/dom_a7c2e910-4b1/verify' \
  -H 'Authorization: Bearer sndr_your_access_token'
```

**Response** (200)

```json
{
  "id":              "dom_a7c2e910-4b1",
  "organization_id": "org_8d41c7a2-3f6",
  "name":            "mail.acme.com",
  "status":          "pending",
  "region":          "us-east-1",
  "spf_status":      "verified",
  "dkim_status":     "verified",
  "dmarc_status":    "failed",
  "mx_status":       "verified",
  "tls_rpt_status":  "failed",
  "mta_sts_status":  "failed",
  "bimi_status":     "failed",
  "records": [
    {
      "type":     "TXT",
      "name":     "_dmarc.mail.acme.com",
      "value":    "v=DMARC1; p=quarantine; rua=mailto:dmarc@mail.acme.com; ruf=mailto:dmarc@mail.acme.com; pct=100; adkim=r; aspf=r",
      "status":   "failed",
      "hint":     "Policy that ties SPF + DKIM together. Tells receivers what to do with messages that fail.",
      "required": true,
      "label":    "DMARC"
    }
  ],
  "created_at": "2026-06-01T12:00:00Z"
}
```

**Errors**

- `unauthenticated` (401): Missing or invalid Bearer token.
- `token_expired` (401): Access token expired — exchange the refresh token for a new pair.
- `token_revoked` (401): Token was explicitly revoked.
- `insufficient_scope` (403): Token is missing the send scope.
- `not_found` (404): Resource does not exist or belongs to a different account.
