Uptimeify Docs
Whitelabel

Domain Diagnostics

Live DNS and certificate check of one custom app domain: authoritative nameservers, TXT record seen, propagation, certificate state, last failed verification. Requires the admin role.

GET /api/organization/whitelabel/domains/{id}/diagnostics

Runs the checks live on every call and writes nothing. Use it when a domain does not verify or does not serve HTTPS.

Access

Organization admins only, as for Get Domain.

Example (cURL)

BASE_URL="https://uptimeify.io"
TOKEN="<your-api-token>"

curl -X GET "$BASE_URL/api/organization/whitelabel/domains/12/diagnostics" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"

Response

200 OK

{
  "domainId": 12,
  "hostname": "status.acme.example",
  "status": "active",
  "checkedAt": "2026-10-29T09:30:00.000Z",
  "verification": {
    "recordFound": true,
    "recordName": "_verify-status.status.acme.example",
    "expected": "uptimeify-verify-abc123",
    "lookup": "records",
    "observed": ["uptimeify-verify-abc123"],
    "nameservers": { "zone": "acme.example", "hosts": ["ns1.dns-provider.example", "ns2.dns-provider.example"] },
    "authoritative": { "nameserver": "ns1.dns-provider.example", "lookup": "records", "observed": ["uptimeify-verify-abc123"] },
    "propagation": "propagated"
  },
  "certificate": {
    "state": "valid",
    "errorCode": null,
    "errorMessage": null,
    "issuer": "Let's Encrypt",
    "validFrom": "2026-10-01T00:00:00.000Z",
    "validTo": "2026-12-30T00:00:00.000Z",
    "daysUntilExpiry": 62
  },
  "lastVerificationError": null,
  "lastVerificationErrorAt": null
}
FieldDescription
verificationThe live TXT check, null when the domain has no verification token. Same fields as the domainVerificationFailed error data of the verify endpoint, plus recordFound (true: the token is published, verify would succeed).
verification.nameserversThe zone the hostname is delegated in and its authoritative nameservers; null if that could not be determined.
verification.authoritativeWhat one of those nameservers answered when asked directly, bypassing every cache; null if none could be asked. Only public nameserver addresses are queried.
verification.propagationpropagated (our resolver sees the token), propagating (your nameserver has it, our resolver not yet; retry after the TTL), not_published (not even your nameserver has it), unknown (no nameserver could be asked).
certificate.stateWhat a browser gets on https://<hostname>: valid, invalid (a certificate is served but fails verification, reason in errorCode), handshake_failed (no TLS handshake: the certificate may still be issuing, or the CNAME does not point to us yet), unreachable (errorCode not_resolved or private_address), not_active (the domain is not activated yet, no certificate is issued before that, nothing was probed).
certificate.errorCodeexpired, not_yet_valid, hostname_mismatch, untrusted, not_resolved, private_address or null.
lastVerificationError, lastVerificationErrorAtThe last failed verification as stored on the domain, null after a successful one.

Common errors

  • 400 Bad Request (invalidDomainId) when the id is not a positive number
  • 401 Unauthorized when you are not logged in
  • 403 Forbidden when you are not an organization admin
  • 404 Not Found (domainNotFound) when the domain does not exist or belongs to another organization

On this page