---
title: "Run domain verification now"
method: POST
path: "/v1/domains/{id}/verify"
tags: ["domains"]
---

# Run domain verification now

`POST /v1/domains/{id}/verify`

## Request

- Base URL: `https://api.mailfixture.com`
- URL: `https://api.mailfixture.com/v1/domains/{id}/verify`
- Auth: HTTP bearer

Runs live DNS TXT + MX checks (fresh, uncached resolution) and persists the result. Always 200 — failed checks are reported in `txt_ok`/`mx_ok`, never as an error status.

## Path parameters

- `id` string, uuid, required

## Response `200`

Check results and current verification state.

- DomainVerifyResult
  - `fqdn` string, required
  - `id` string, uuid, required
  - `mx_ok` boolean, required: This check run saw the MX record.
  - `mx_ok_at` string, date-time, nullable, required
  - `setup` DomainSetup, required
    - `mx` object, required
      - `name` string, required
      - `priority` integer, required
      - `value` string, required: The MX hostname to point at.
    - `txt` object, required
      - `name` string, required: Record name, `_mfx.<fqdn>`.
      - `value` string, required: Record value, `mfx-verify=<token>`.
  - `txt_ok` boolean, required: This check run saw the TXT challenge.
  - `verified_at` string, date-time, nullable, required

## Other responses

- `401`: Missing bearer token, malformed key, or unknown/revoked/invalid API key.
- `404`: No such custom domain on this account.
- `429`: Per-key rate limit exceeded. `Retry-After` says when the next request will be admitted; the RateLimit headers name the bucket that refused (`requests` or `creates`) with `r=0`.
- `500`: Unexpected server error. `detail` is null — internals are never leaked.

---

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