Questions · Updated 2026-09-23

How do I verify a sending domain on Cloudflare?

To verify a sending domain on Cloudflare, publish every required row from GET /domains/{id}/setup on the DNS Records page, then call POST /domains/{id}/verify. The dashboard steps below are Cloudflare's, as of September 2026.

To verify a sending domain on Cloudflare, publish every required row from GET /domains/{id}/setup on the DNS Records page, then call POST /domains/{id}/verify. The steps in the next section are the ones Cloudflare documents, as of September 2026.

The records to publish

POST /domains registers the name. GET /domains/{id}/setup returns one row per record, with record, host, type, value, priority, and required. A TXT row also has value_strings and value_bind. Paste those. The DKIM value is the one on the row.

A new domain sends once the required rows resolve. Domains and DNS names them: the DKIM TXT, and the return-path MX and TXT. Root SPF and DMARC are recommended. A tracking CNAME is on the sheet only when tracking is available, and it never blocks verification. If host is @, that row is the apex. If the apex already has an SPF TXT, merge the sheet's value into that one record. A second SPF TXT on the same name invalidates both.

The same response includes commands.cloudflare, the request bodies for Cloudflare's DNS API, and provider_hints.cloudflare, which says to paste the zone-relative host, that the apex is @, and not to paste the full name.

curl -sS -X GET https://api.agentisend.com/domains/9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42/setup \
  -H "Authorization: Bearer $AGENTISEND_API_KEY"
200
{
  "commands": "string",
  "deep_link": "string",
  "detected": true,
  "domain": "string",
  "nameservers": [],
  "provider": "string",
  "provider_hints": "string",
  "records": []
}
Response

Cloudflare's dashboard, as of September 2026

Manage DNS records (updated May 6, 2026) says: open the DNS Records page, select Add record, choose a Type, complete the required fields, and select Save. The fields vary by type. Proxy status (updated April 21, 2026) names the columns Type, Name, and Content, and says only A, AAAA, and CNAME records can be proxied. MX and TXT are always DNS-only. The same page says DNS-only is recommended for records that do not serve web traffic, such as email records and domain-verification records. For a tracking CNAME, choose DNS-only on that proxy control.

Put the row's host in Name and the row's value in Content. Do not append the domain to host. For an MX, commands.cloudflare includes priority from the row; the create-record page says the required fields vary by type.

If the domain was added to Cloudflare by a hosting partner, that same article says to manage the records at the hosting partner.

Read it back

POST /domains/{id}/verify reports which required rows resolved. GET /domains/{id} is the sheet with each row's status.

Other registrars