Domains

Verify domain

Trigger DNS/HTTP verification for a pending domain. For a VERIFIED domain whose proof has expired or expires within 30 days, re-verifies it — from the published record or a saved DNS provider connection — and renews the proof (renewed: true); a failed re-check answers verified: false and leaves the domain verified. A live proof outside that window gets the idempotent answer.

post/api/v1/me/domains/{id}/verify

Request

  • Base URL: https://api.proof.holdings
  • URL: https://api.proof.holdings/api/v1/me/domains/{id}/verify
  • Auth: API key in cookie auth_token

Path parameters

idstring required

MongoDB ObjectId

Example:507f1f77bcf86cd799439011

Response

Verification result. Carries verified plus the domain under data, including the control proof's identity. A verification that actually ran and succeeded NEVER fails on the proof lookup — it degrades to null proof fields, because the domain is already saved and its proof already minted by then.

idstring required

MongoDB ObjectId

domainstring required
status'pending' | 'verified' | 'failed' required

Domain verification status

verification_methodstring
providerstring
email_sending_enabledboolean
profile_idstring

MongoDB ObjectId

created_atstring date-time required
updated_atstring date-time required
verified_atstring date-time
proof_idstring nullable

Public handle of the control proof backing this domain (ph_ctl_<32 hex>), resolved through the domain's mirroring asset — the same source GET /me/assets reads, so the two surfaces cannot disagree. Null when the domain has no proof, or when its proof predates the registry.

proof_status'active' | 'revoked' | 'expired' | 'suspended' | 'null' nullable

Registry status of that proof. A domain row can read verified while its proof is revoked — the row records that control was once shown, the proof records whether it still stands — so a client showing domain control must render THIS. Null means no registry record, which is NOT a revocation.

proof_revoked_reasonstring nullable

Reason the registry recorded, present only while proof_status is revoked.

proof_expires_atstring date-time nullable

When that proof expires — the signed token's own exp. proof_status stays active after this instant (nothing rewrites it), so a client must compare against the clock to tell a live proof from an expired one. Proofs inside 30 days of expiry are renewed automatically while control can still be confirmed. Carried even when proof_id is null (a proof that predates the registry still has a signed expiry); null when the domain has no proof, or its proof never stored one.

Example response

{
  "id": "507f1f77bcf86cd799439011",
  "domain": "example.com",
  "status": "verified",
  "provider": "cloudflare",
  "profile_id": "507f1f77bcf86cd799439011",
  "proof_id": "ph_ctl_0123456789abcdef0123456789abcdef",
  "proof_status": "active",
  "proof_revoked_reason": "key_compromise",
  "proof_expires_at": "2027-10-08T10:29:21.000Z"
}

Changes

No recorded changes to this operation across all 1 revision of this API.