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

# Verify a domain

> POST /v1/domains/{id}/verify — force a live DNS re-check and return the domain's fresh status and records.

Force a live DNS re-check now. Unlike retrieve — which returns the last background-polled status — this queries your DNS in the moment and returns the fresh result.

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

Call this after publishing the records returned by [add domain](/api-reference/domains/create). DNS can take minutes to hours to propagate; if the domain is still `pending`, inspect each record's `verified` flag to see what hasn't resolved yet, then retry. The body is empty.

## Path parameters

<ParamField body="id" type="string" required>
  The domain id to re-check, for example `dom_01HZ8K3M9P`.
</ParamField>

## Request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.drin.run/v1/domains/dom_01HZ8K3M9P/verify \
    -H "Authorization: Bearer $DRIN_API_KEY"
  ```

  ```typescript Node.js theme={null}
  import { DrinClient } from "@drin00/sdk";

  const drin = new DrinClient({ apiKey: process.env.DRIN_API_KEY });

  const domain = await drin.domains.verify("dom_01HZ8K3M9P");

  if (domain.status === "verified") {
    console.log("Ready to send from", domain.domain);
  }
  ```
</CodeGroup>

## Response

`200 OK` — the domain with its freshly re-checked `status`, per-record `verified` flags, and `authHealth`.

```json theme={null}
{
  "id": "dom_01HZ8K3M9P",
  "domain": "mail.acme.com",
  "status": "verified",
  "records": [
    {
      "type": "CNAME",
      "name": "abcd1234._domainkey.mail.acme.com",
      "value": "abcd1234.dkim.drin.run",
      "purpose": "dkim",
      "verified": true
    },
    {
      "type": "TXT",
      "name": "mail.acme.com",
      "value": "v=spf1 include:drin.run ~all",
      "purpose": "spf",
      "verified": true
    }
  ],
  "authHealth": { "dkim": "verified", "spf": "verified", "dmarc": "verified" }
}
```

<Note>
  **Verification runs in the background too.** You don't have to poll. Drin re-checks pending domains automatically — calling verify just makes it happen immediately instead of waiting for the next sweep.
</Note>
