---
title: "Get DNS records for a domain you own"
method: GET
path: "/api/domains/{domain}/dns"
tags: ["DNS"]
---

# Get DNS records for a domain you own

`GET /api/domains/{domain}/dns`

## Request

- Base URL: `https://domani.run`
- URL: `https://domani.run/api/domains/{domain}/dns`
- Auth: HTTP bearer

Returns all DNS records configured for a domain you own (A, AAAA, CNAME, MX, TXT, NS, ...), each with a stable `id`, plus a `zone_version` token (also sent as the ETag header). Pass `zone_version` back on PUT to detect concurrent zone changes.

## Path parameters

- `domain` string, required

## Response `200`

DNS records for the domain

- object
  - `domain` string
  - `records` DnsRecord[]
    - `type` 'A' | 'AAAA' | 'CNAME' | 'MX' | 'TXT' | 'NS' | 'SRV' | 'CAA' | 'TLSA', required: DNS record type. TLSA publishes a DANE record; its value is the rdata 'usage selector matching-type hex-data'.
    - `name` string, required: Record name (@ for root, or subdomain, e.g. _443._tcp for TLSA)
    - `value` string, required: Record value (IP address, hostname, or TLSA rdata like '3 1 1 abc123...')
    - `ttl` integer, required: Time to live in seconds
    - `priority` integer: Priority value (required for MX records)
    - `required` boolean: False when the zone Domani manages for the domain cannot hold the record (a TXT longer than the registrar accepts); such a record is shown but not needed for mail to work. Absent on plain zone records.
  - `zone_version` string: Optimistic-concurrency token for the whole zone. Pass it back on PUT (body zone_version or If-Match header) to fail with 409 DNS_VERSION_CONFLICT instead of clobbering a concurrent change.

## Other responses

- `401`: Missing or invalid API key
- `404`: Domain not found
- `429`: Rate limit exceeded - wait and retry

---

[API](https://skmtc.dev/domani/apis/domani-run-api.md) · [All operations](https://skmtc.dev/domani/apis/domani-run-api/llms.txt) · [OpenAPI document](https://skmtc.dev/domani/apis/domani-run-api/revisions/7679f8159533?raw)
