Verify a domain

Check a domain's DNS records now.

POST /organizations/{org}/domains/{domainId}/verify

Looks up the domain’s TXT and routing records right away and returns the domain along with what was found, so you can see which record is missing.

Authorization

Org owner. Anyone else gets 403 forbidden.

Path parameters

NameTypeDescription
orgstringThe organization: its id (org_…) or its slug. It has to be an org your token can manage (see Who can call it)
domainIdstringThe domain, dom_…

No body.

Response

200 OK with the domain plus a check object.

{
  "id": "dom_65f1c2a9e4b0d3f7a1c8e907",
  "hostname": "login.acme.com",
  "status": "pending",
  "verified_at": null,
  "created_at": "2026-10-18T09:12:00.000Z",
  "records": {
    "txt": { "name": "…", "value": "…" },
    "cname": { "name": "login.acme.com", "value": "…" }
  },
  "check": {
    "txt_found": [],
    "routing": { "ok": false, "expected": ["…"], "found": [] }
  }
}
FieldTypeDescription
idstringdom_…
hostnamestring
statuspending | verified
verified_atISO date | null
created_atISO date
recordsobject{ txt: { name, value }, cname: { name, value } }: the two DNS records to create
check.txt_foundstring[]The TXT values found
check.routingobject{ ok, expected: string[], found: string[] }

Errors

StatuserrorWhen
403forbiddenYou are not an owner of the org
404not_foundNo such domain in this org, or the id is not a dom_ id
409conflictAnother org has already verified that domain
404not_foundThe org does not exist, or your token cannot manage it

Example

curl -X POST https://loginwith.loginwith.dev/organizations/acme/domains/dom_65f1c2a9e4b0d3f7a1c8e907/verify \
  -H "Authorization: Bearer $TOKEN"