> ## Documentation Index
> Fetch the complete documentation index at: https://apidoc.mailercloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Verify a Domain

> Check the domain's DNS records now and update its status — the same as **Verify** in **Account Settings → Domains**.

The response is the same domain object as **Get a Domain**, with each record's new `status`. Add the records at your DNS provider first; one Verify is enough once they are published.

**Notes**
- When the domain becomes `verified` (or a verified domain fails), the account owner gets the same email as from the app.
- DNS changes can take a while to be visible; if a record still shows `pending`, verify again later.



## OpenAPI

````yaml /openapi-v1.json post /domains/{id}/verify
openapi: 3.1.0
info:
  title: Mailercloud Marketing API
  version: 1.0.0
  description: >-
    Campaigns, contacts, lists, segments, automations, and webhooks for the
    Mailercloud Marketing Platform.
servers:
  - url: https://cloudapi.mailercloud.com/v1
security:
  - apiKey: []
tags:
  - name: Campaigns
  - name: Contacts
  - name: Lists
  - name: Tags
  - name: Segments
  - name: Custom Properties
  - name: Senders
  - name: Domains
  - name: Templates
  - name: Automations
  - name: Webhooks
  - name: Webforms
  - name: Inbox Tracker
  - name: Account
paths:
  /domains/{id}/verify:
    post:
      tags:
        - Domains
      summary: Verify a Domain
      description: >-
        Check the domain's DNS records now and update its status — the same as
        **Verify** in **Account Settings → Domains**.


        The response is the same domain object as **Get a Domain**, with each
        record's new `status`. Add the records at your DNS provider first; one
        Verify is enough once they are published.


        **Notes**

        - When the domain becomes `verified` (or a verified domain fails), the
        account owner gets the same email as from the app.

        - DNS changes can take a while to be visible; if a record still shows
        `pending`, verify again later.
      operationId: verify-a-domain
      parameters:
        - name: id
          in: path
          required: true
          description: Domain ID (from Add a Domain or List Domains)
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: Domain ID
                  domain:
                    type: string
                    description: Domain name
                  status:
                    type: string
                    enum:
                      - verified
                      - not_verified
                      - failed
                    description: >-
                      Domain status:

                      - `verified` — the domain is authenticated and ready to
                      send.

                      - `not_verified` — the DNS records are not all in place
                      yet (or not checked yet).

                      - `failed` — at least one DNS record was found but is
                      wrong (that record's `status` is `invalid`; see its
                      `error_message` in Get a Domain).
                  open_tracking:
                    type: boolean
                    description: >-
                      Open tracking for Email API / SMTP sends from this domain.
                      No effect on marketing campaigns. Off for a newly added
                      domain.
                  records:
                    type: array
                    description: DNS records to publish at your DNS provider
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                          enum:
                            - CNAME
                            - TXT
                            - CAA
                          description: Record type
                        host:
                          type: string
                          description: Host / name of the record
                        value:
                          type: string
                          description: Value to enter at your DNS provider
                        status:
                          type: string
                          enum:
                            - pending
                            - verified
                            - invalid
                            - optional
                          description: >-
                            - `pending` — not added yet, or not checked yet

                            - `verified` — found and correct

                            - `invalid` — found but wrong (see `error_message`)

                            - `optional` — the second DKIM record (`dkim2`), not
                            added yet; it is only needed for automatic DKIM key
                            rotation
                        purpose:
                          type: string
                          enum:
                            - tracking
                            - dkim
                            - dkim2
                            - image
                            - dmarc
                            - spf
                            - caa
                          description: >-
                            What the record is for:

                            - `tracking` — Return-Path & tracking host
                            (`mc.example.com`)

                            - `dkim` — DKIM signature

                            - `dkim2` — optional second DKIM record (key
                            rotation)

                            - `image` — image hosting

                            - `dmarc` — DMARC policy

                            - `spf` — SPF

                            - `caa` — lets us issue the SSL certificate for your
                            tracking and image hosts (only when your existing
                            CAA record would block it)
                        message:
                          type: string
                          description: >-
                            What to do at your DNS provider. Left out when the
                            record is verified.

                            - *Add the record to your domain provider*

                            - *Update the record in your domain provider* — an
                            existing record must be changed (DMARC)

                            - *Edit and update the record in your domain
                            provider* — the record is invalid
                        error_message:
                          type: string
                          description: >-
                            Why the record is invalid. Only present when
                            `status` is `invalid`.
                  created_at:
                    type: string
                    description: >-
                      When the domain was added, in your account timezone
                      (`YYYY-MM-DD HH:MM:SS`)
              examples:
                Example-1:
                  value:
                    id: zjAKXb
                    domain: example.com
                    status: not_verified
                    open_tracking: false
                    records:
                      - type: CNAME
                        host: mc.example.com
                        value: mc3035n.mlrcloud.com
                        status: pending
                        purpose: tracking
                        message: Add the record to your domain provider
                      - type: CNAME
                        host: k1._domainkey.example.com
                        value: dkim.mlrcloud.com
                        status: pending
                        purpose: dkim
                        message: Add the record to your domain provider
                      - type: CNAME
                        host: k2._domainkey.example.com
                        value: dkim2.mlrcloud.com
                        status: optional
                        purpose: dkim2
                        message: Add the record to your domain provider
                      - type: CNAME
                        host: img3035n.example.com
                        value: img3035n.mlrcloud.com
                        status: pending
                        purpose: image
                        message: Add the record to your domain provider
                      - type: TXT
                        host: _dmarc.example.com
                        value: >-
                          v=DMARC1; p=reject; sp=none; adkim=s; aspf=s;
                          rua=mailto:dmarc@mlrcloud.com;
                          ruf=mailto:dmarc@mlrcloud.com;
                        status: pending
                        purpose: dmarc
                        message: Update the record in your domain provider
                    created_at: '2026-10-15 18:32:12'
                Failed:
                  value:
                    id: zjAKXb
                    domain: example.com
                    status: failed
                    open_tracking: false
                    records:
                      - type: CNAME
                        host: mc.example.com
                        value: mc3035n.mlrcloud.com
                        status: verified
                        purpose: tracking
                      - type: CNAME
                        host: k1._domainkey.example.com
                        value: dkim.mlrcloud.com
                        status: verified
                        purpose: dkim
                      - type: CNAME
                        host: k2._domainkey.example.com
                        value: dkim2.mlrcloud.com
                        status: optional
                        purpose: dkim2
                        message: Add the record to your domain provider
                      - type: CNAME
                        host: img3035n.example.com
                        value: img3035n.mlrcloud.com
                        status: verified
                        purpose: image
                      - type: TXT
                        host: _dmarc.example.com
                        value: >-
                          v=DMARC1; p=reject; sp=none; adkim=s; aspf=s;
                          rua=mailto:dmarc@mlrcloud.com;
                          ruf=mailto:dmarc@mlrcloud.com;
                        status: invalid
                        purpose: dmarc
                        message: Edit and update the record in your domain provider
                        error_message: More than one dmarc TXT record found in your provider
                    created_at: '2026-10-13 15:13:00'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        field:
                          type: string
                        message:
                          type: string
              examples:
                Example-1:
                  value:
                    errors:
                      - field: ''
                        message: Authorization failed
        '404':
          description: Not Found — unknown id, or a domain that belongs to another account
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        field:
                          type: string
                        message:
                          type: string
              examples:
                Example-1:
                  value:
                    errors:
                      - field: id
                        message: Domain not found
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              examples:
                Example-1:
                  value:
                    message: Too Many Requests
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              examples:
                Example-1:
                  value:
                    message: >-
                      Sorry, we are experiencing some technical difficulties.
                      Please try after some time.
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        Your Mailercloud API key (plain text, no Bearer prefix). Create keys in
        Settings → API.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.