URL: /guides/dns-records

---
title: Manage DNS records
description: 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`](/api/org-domains).

## List records

```bash
curl "https://api.domaingenius.com.au/api/v1/orgs/$DG_ORG/domains/example.com.au/dns" \
  -H "Authorization: Bearer $DG_KEY"
```

## Add a record

```bash
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](/guides/dns-presets) or set explicit A records.

## Verify

```bash
dig example.com.au @1.1.1.1
```

Cloudflare 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.
