Manage DNS records
Add, update, and delete A, AAAA, CNAME, MX, TXT, and other records on a managed zone.
DNS for managed domains lives on Cloudflare. The zone is created when you enable managed DNS — either at registration time or via POST /v1/orgs/{org_oid}/domains/{domain}/dns/enable.
List records
curl "https://api.domaingenius.com.au/api/v1/orgs/$DG_ORG/domains/example.com.au/dns" \
-H "Authorization: Bearer $DG_KEY"Add a record
curl -X POST "https://api.domaingenius.com.au/api/v1/orgs/$DG_ORG/domains/example.com.au/dns" \
-H "Authorization: Bearer $DG_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "A",
"name": "example.com.au",
"content": "203.0.113.10",
"ttl": 1,
"proxied": true
}'ttl: 1 means “auto” (Cloudflare-managed). Set a real TTL only if you need a specific value — the default is fine for most cases.
proxied: true runs the record through Cloudflare’s proxy (CDN, DDoS, free TLS). Set to false for records that need to expose the origin IP (mail servers, certain SaaS integrations).
Common record types
| Type | What it points to | Notes |
|---|---|---|
A | IPv4 address | The default for web traffic |
AAAA | IPv6 address | Pair with A for dual-stack |
CNAME | Another hostname | Cannot be used at the apex on most providers; use ALIAS or flattening |
MX | Mail server hostname | Set priority (lower = preferred) |
TXT | Arbitrary string | SPF, DKIM, domain verification |
NS | Nameserver | Only set on subdomain delegations |
SRV | Service host:port | Set priority and weight |
CNAME at the apex
You can’t have a CNAME at example.com.au because the apex must answer authoritatively. Cloudflare flattens CNAMEs at the apex by resolving them at request time — so a CNAME example.com.au → cname.vercel-dns.com actually works on a managed zone, even though it’s technically a flattened A. If the receiving provider doesn’t support flattening, use the Vercel preset or set explicit A records.
Verify
dig example.com.au @1.1.1.1Cloudflare propagates DNS changes globally in seconds. If dig shows stale data, your local resolver is caching — try dig +short @1.1.1.1 to bypass.