---
title: "Run a DNS check for this domain now."
method: POST
path: "/v1/domains/{id}/verify"
tags: ["Domains"]
---

# Run a DNS check for this domain now.

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

## Request

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

Requires `manage` scope. Rate-limited to 1 request per 60 s per domain id (shared with the account UI's identical action). Queries live DNS for the TXT challenge, SPF, and DKIM CNAME records and persists the result; three consecutive passing checks move the domain to `verified`, two consecutive failures after that demote it back to `verification_lost`.

## Path parameters

- `id` string, uuid, required

## Response `200`

Check run; current state.

- VerifiedDomain
  - `id` string, uuid, required
  - `domain` string, required
  - `status` 'pending' | 'verified' | 'verification_lost', required: `verified` after 3 consecutive passing checks; demoted to `verification_lost` after 2 consecutive failures once verified. Verification only — this status never grants a sending capability.
  - `txt_ok` boolean, required: Ownership TXT challenge record found and matching.
  - `spf_state` 'ok' | 'conflict' | 'missing' | 'null', nullable, required
  - `spf_suggestion` string, nullable, required: Suggested SPF record text. Null iff `spf_state` is `ok`.
  - `dkim_cname_ok` boolean, required: DKIM selector CNAME found and matching.
  - `last_checked_at` integer, nullable, required: Unix seconds.
  - `created_at` integer, required: Unix seconds.
  - `verified_at` integer, nullable, required: Unix seconds of the transition into `verified`. A re-check that keeps the domain verified, or one that fails without demoting it, never clears this. It IS cleared back to null if the domain is demoted to `pending` (e.g. by rotating its verify token) — it re-marks the transition on the next fresh verification.
  - `dns_records` object, required: The DNS records to publish at your registrar. `txt.value` is not a secret — it is meant to be published in public DNS, and (unlike a webhook's signing secret) is returned on every response, not just at creation.
    - `txt` object, required
      - `host` string, required
      - `value` string, required
    - `spf` object, nullable, required: Null once `spf_state` is `ok` — nothing left to change.
      - `host` string
      - `value` string, nullable
    - `dkim` object, required
      - `host` string, required
      - `type` 'CNAME', required
      - `value` string, required

## Other responses

- `403`: Token lacks the required scope.
- `404`: No matching resource owned by the caller.
- `429`: Rate limit hit — at most one verify-now check per domain per 60 s.

---

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