Diagnose a domain's DNS
GET/api/v1/email/domains/{id}/diagnose
GET /email/domains/{id}/diagnose
curl -X GET 'https://www.unitpost.com/api/v1/email/domains/dom_123/diagnose' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'User-Agent: my-app/1.0'Response · 200
{
"object": "domain_diagnosis",
"domain_id": "domain_123",
"domain": "string",
"status": "queued",
"checked_at": "2026-01-01T00:00:00.000Z",
"last_checked_at": "2026-01-01T00:00:00.000Z",
"would_verify": false,
"zone": "string",
"nameservers": [
{
"host": "string",
"ips": [
"string"
]
}
],
"provider": {
"configured": false,
"identity_exists": false,
"dkim_status": "string",
"mail_from_status": "string",
"error": "string"
},
"records": [
{}
],
"findings": [
{
"code": "string",
"severity": "blocking",
"title": "string",
"detail": "string",
"fix": "string"
}
]
}Explain why a domain is not verified, or what could break it. Every authoritative nameserver is asked about every expected record, the email provider's view of the identity is read, and findings list what is wrong, most serious first, each with the concrete fix. Read-only: it never changes the domain; Verify a domain does. Shares verify's per-workspace DNS rate limit. Requires the domains:read capability.
Parameters1 field
| Field | Type | Description |
|---|---|---|
idrequired | string · path | — |
Response · 200 fields12 fields
| Field | Type | Description |
|---|---|---|
objectrequired | enumdomain_diagnosis | — |
domain_idrequired | string | — |
domainrequired | string | — |
statusrequired | string | The domain's stored status, next to the live diagnosis. |
checked_atrequired | string | — |
last_checked_at | string | The last verify check, which this call does not change. |
would_verifyrequired | boolean | Whether a verify run now would mark the domain verified. |
zone | string | The zone whose nameservers were asked; null when none was found. |
nameservers | object[] | — |
provider | object | The email provider's view of the sending identity. |
recordsrequired | object[] | Every expected record, with each nameserver's answer and a `verdict` (`ok`, `partial`, `wrong`, `missing`, `unknown`). |
findingsrequired | object[] | What is wrong, most serious first, each with the concrete `fix`. |
200401403404429502