---
title: "Trigger an on-demand DNS verification check"
method: POST
path: "/domains/{id}/verify"
tags: ["domains"]
---

# Trigger an on-demand DNS verification check

`POST /domains/{id}/verify`

## Request

- Base URL: `https://dash.mailsocket.app/api/v1`
- URL: `https://dash.mailsocket.app/api/v1/domains/{id}/verify`
- Auth: HTTP bearer

Checks the ownership TXT record, then MX, advancing
`pending_dns -> verified` when both match. Idempotent on an
already-verified domain (updates only `last_checked_at`).
Rate-limited: at most one manual verify per domain per 30 seconds,
and at most 20 per account per hour (`429 domain_verify_rate_limited`).

## Path parameters

- `id` string, required

## Response `200`

The domain after the verify pass.

- object
  - `data` Domain, required
    - `id` string, required: The domain public ID.
    - `name` string, required: The FQDN, stored lowercase. Immutable after create.
    - `status` 'pending_dns' | 'verified' | 'failed' | 'disabled', required
    - `verification_txt_host` string, required: The TXT record host to publish (`_mailsocket-verify.<name>`).
    - `verification_token` string, required: The TXT record value to publish at `verification_txt_host`.
    - `mx_target` string, required: The MX target that must be present once DNS is live (`mx.mailsocket.app`).
    - `last_checked_at` string, date-time, nullable, required
    - `last_error` string, required
    - `verified_at` string, date-time, nullable, required
    - `catch_all` boolean: True when unmatched local parts on this (verified) domain route to catch_all_inbox_id. Toggled via `PATCH /domains/{id}/catch_all`.
    - `catch_all_inbox_id` string, nullable: The catch-all inbox's public ID, or null when catch-all has never been configured.
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required

## Other responses

- `401`: Missing or invalid API key.
- `403`: Account is not permitted to use the API.
- `404`: Resource not found (unknown or not owned).
- `429`: Manual-verify rate limit exceeded (`domain_verify_rate_limited`).

---

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