---
title: "Verify Domain"
method: POST
path: "/domains/{domain}/verify"
tags: ["Domains"]
---

# Verify Domain

`POST /domains/{domain}/verify`

## Request

- Base URL: `https://app.lettr.com/api`
- URL: `https://app.lettr.com/api/domains/{domain}/verify`
- Auth: HTTP bearer

Verify a domain's DNS records (DKIM and CNAME) with SparkPost. This triggers a verification check and returns the current status of DNS records.

## Path parameters

- `domain` string, required

## Response `200`

Domain verification completed

- VerifyDomainResponse: Response containing domain verification results
  - `message` string, required: Human-readable response message
  - `data` DomainVerificationView, required: Domain verification status and DNS details
    - `domain` string, required: The domain name
    - `dkim_status` 'valid' | 'unverified' | 'invalid', required: DKIM verification status
    - `cname_status` 'valid' | 'unverified' | 'invalid' | 'not_applicable', required: CNAME verification status. `not_applicable` is returned for primary (apex) sending domains, which require SPF instead of CNAME delegation.
    - `dmarc_status` 'valid' | 'invalid' | 'missing' | 'unverified', required: DMARC verification status.
    - `spf_status` 'valid' | 'invalid' | 'missing' | 'unverified', required: SPF verification status.
    - `is_primary_domain` boolean, required: True when this is a root/apex sending domain (not a subdomain). Primary domains require SPF instead of CNAME delegation.
    - `ownership_verified` string, nullable: Whether domain ownership has been verified
    - `dns` DomainDnsVerificationView: DNS verification error details
      - `dkim_record` string, nullable: Found DKIM record value
      - `cname_record` string, nullable: Found CNAME record value
      - `dkim_error` string, nullable: DKIM verification error message
      - `cname_error` string, nullable: CNAME verification error message
      - `dmarc_record` string, nullable: Found DMARC record value.
      - `dmarc_error` string, nullable: DMARC verification error message.
      - `spf_record` string, nullable: Found SPF record value.
      - `spf_error` string, nullable: SPF verification error message.
    - `dmarc` DmarcValidationResult: DMARC validation result details.
      - `is_valid` boolean, required: Whether a valid DMARC record was found.
      - `status` 'valid' | 'invalid' | 'missing' | 'unverified', required: DMARC validation status.
      - `found_at_domain` string, nullable, required: Domain where the DMARC record was located (may be a parent domain for subdomains).
      - `record` string, nullable, required: Raw DMARC record value.
      - `policy` 'none' | 'quarantine' | 'reject' | 'null', nullable, required: DMARC policy tag (`p=`).
      - `subdomain_policy` 'none' | 'quarantine' | 'reject' | 'null', nullable, required: DMARC subdomain policy tag (`sp=`), if present.
      - `error` string, nullable, required: Validation error message, if any.
      - `covered_by_parent_policy` boolean, required: Whether this domain is covered by the parent domain's subdomain policy.
    - `spf` SpfValidationResult: SPF validation result details.
      - `is_valid` boolean, required: Whether a valid SPF record was found that authorises SparkPost.
      - `status` 'valid' | 'invalid' | 'missing' | 'unverified', required: SPF validation status.
      - `record` string, nullable, required: Raw SPF record value.
      - `error` string, nullable, required: Validation error message, if any.
      - `includes_sparkpost` boolean, required: Whether the SPF record authorises `_spf.sparkpostmail.com`.

## Other responses

- `401`: Unauthorized - Missing or invalid API key
- `404`: Domain not found
- `422`: Validation error - Invalid domain format
- `500`: Server error - Failed to verify domain
- `503`: Service unavailable - the API key could not be verified, so the request was not processed. This does not mean the key is invalid; retry after the delay given in the Retry-After header.

---

[API](https://skmtc.dev/lettr/apis/lettr-api.md) · [All operations](https://skmtc.dev/lettr/apis/lettr-api/llms.txt) · [OpenAPI document](https://skmtc.dev/lettr/apis/lettr-api/revisions/48ef0dac1ebd?raw)
