API referenceDomains

Recheck a domain's DNS records

Re-checks the DNS records for a pending domain and updates both the domain's status and each record's status to match what is currently published.

Endpoint
POST https://api.dairo.app/v1/domains/{domain}/verify

Re-checks the DNS records for a pending domain and updates both the domain's status and each record's status to match what is currently published. When all required records resolve, the domain flips to verified, verifiedAt is set, and Dairo emits a domain.verified webhook event — but only on the transition into verified, so re-checking an already-verified domain is a no-op that never re-fires the event. Returns the single updated domain object with its refreshed records. Publish the records described in verify a domain before calling this; DNS can take time to propagate, so a first recheck often still reports pending. Requires domains:write and is rate-limited to 5 rechecks per 15 minutes; the included dairo.app domain always reports verified.

Scope: domains:write. Send the API key as a bearer token; Scopes lists what each one reaches.

Request

cURL
curl -X POST "https://api.dairo.app/v1/domains/yourapp.com/verify" \
  -H "Authorization: Bearer $DAIRO_API_KEY"

Path parameters

NameTypeRequiredDescription
domainstringyesThe domain name, such as yourapp.com.

Response

200 Success. Body: application/json, Domain.

FieldTypeRequiredDescription
object"domain"yes
idstring (uuid)yes
domainstringyes
status"pending", "verified", "failed"yes
verifiedAtstring (date-time) or nullno
regionstringyes
recordsarray of DnsRecordyes
type"custom", "included", "system"no
isIncludedbooleanno
isDeletablebooleanno
isSystembooleannoOnly on the shared dairo.app system domain.
isReadOnlybooleannoOnly on the shared dairo.app system domain.
receiving"active", "pending"noOnly on the verify response: whether the domain receives mail (it does exactly when verified).
200
{
  "object": "domain",
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "domain": "orin-ai.app",
  "status": "pending",
  "verifiedAt": "2026-10-19T09:30:00Z",
  "region": "eu-north-1",
  "records": [
    {
      "type": "CNAME",
      "host": "string",
      "value": "string",
      "priority": null,
      "status": "pending"
    }
  ],
  "type": "custom",
  "isIncluded": true,
  "isDeletable": true,
  "isSystem": true,
  "isReadOnly": true,
  "receiving": "active"
}

Errors

Every error has the same body, {"error": {"type", "code", "message", "param"}}; branch on code. Errors lists every code.

StatusMeaning
400The request is malformed or a value is invalid (invalid_request, invalid_domain, idempotency_key_mismatch).
401The API key is missing or invalid.
403The key lacks the scope this endpoint needs (scope_missing) or may not do this (not_permitted).
404No such resource in this account (resource_not_found).
422The request is well-formed but a field failed validation (validation_failed).
429Rate limit, plan limit, budget or spend cap reached (rate_limited, plan_limit_reached, budget_exceeded, spend_cap_reached).
500An unexpected error; retry with backoff, then contact support (internal_error).

On this page