Verify Domain
Re-run or poll DNS verification for a custom sending domain.
Overview
POST /api/email/domains/{id}/verify (verifyEmailDomain) has two modes:
- Trigger mode (default). Pre-marks the domain
verifying, kicks off an async DNS check, reads the live status back, and persists it along with the latest expected DNS records. If the post-call status is stillverifying, thedomain-verify-pollerbackground task is scheduled (idempotency keyed per domain) so the DB converges even if the user closes the page. - Poll mode (
?poll=true). Skip the verify trigger and just read the live status. Use this on every polling tick — re-triggering verification on each tick restarts the async DNS checker and can cause visible flicker betweenverifying,failed, and back toverifying.
AI agent notes
createEmailDomain auto-syncs these records when Puffle can manage the zone; otherwise the user must add the records manually at their DNS provider before calling this endpoint.Polling recipe. Use verifyEmailDomain (no flag) once to start the verification, then hit it with ?poll=true every 30–60 seconds until status is verified or failed. The background domain-verify-poller will keep re-checking on exponential backoff (10m, 20m, 40m, 80m, 160m, 320m) for up to 12 hours even without client-side polling.Idempotency is enforced. Repeated trigger calls collapse into the original poller chain via a per-domain idempotency key.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Email domain (email_domains.id) UUID.
1Query Parameters
If true, skip triggering a verification check and only read the current live status. Use this on every polling tick so the async DNS checker is not restarted repeatedly, which can cause flicker verifying → failed → verifying.
true, false Response
Domain verification state after this call. status is verified on success, verifying if DNS is still propagating, or failed if the verification service rejected the records. dns_records is always refreshed with the live expected values.
Verified email domain row.