List DNS Records
GET
/v1/domains/self/{uuid}/dns-records
Proxy DNS records from your domain's configured provider. The platform calls the provider's API live (Cloudflare, DigitalOcean, Route53, cPanel, Webmin, Namecheap) using the credentials you stored at domain creation, normalises the result into a common shape, and returns it.
This is a read-through view — there's no DNS-record cache. Every call hits the upstream provider, so DNS-provider rate limits apply. Pagination is in-memory: providers return all records, the platform slices to your page_size.
Behaviour depends on the domain's provisioning_mode. auto (provider credentials stored) returns the live, editable record list described here. manual domains (you manage DNS at your own provider) instead return a read-only payload — { "read_only": true, "required_records": [ { "type", "name", "host", "value" } ], "records": [] } — listing the records you must add (the wildcard *.<domain> CNAME, plus an apex A row when configured). For manual domains the create / update / delete record endpoints return 409.
Path parameters
Domain UUID. Must belong to the calling user (or admin).
Query parameters
1-indexed page. Default 1.
Records per page. Default 50, max 200.
Response (200 OK)
DNS records from the provider, normalised to the schema below.
A | AAAA | CNAME | TXT | MX | NS | SRV | CAA.
Subdomain part. "@" for the apex; otherwise the relative subdomain ("api", "www").
Record value. For A: IPv4 address. CNAME: target hostname. TXT: text payload. MX: mail server hostname (priority via priority).
MX priority (lower = preferred). Only set on MX records.
Cloudflare-only: whether the record is "orange-cloud" proxied through CF. Always false on non-CF providers.
Errors
Domain has no DNS provider configured (provider: "none") or provider credentials are missing required fields.
Domain doesn't exist or doesn't belong to the calling user.
DNS provider call failed (network, auth, or provider-side error). The error message includes the provider's response.
curl "https://api.ngris.com/v1/domains/self/<uuid>/dns-records?page=1&page_size=50" \
-H "X-API-KEY: <your_api_key>"
from ngris import Ngris
client = Ngris(api_key="<your_api_key>")
for r in client.domains.list_dns_records("<domain_uuid>"):
print(f"{r['type']:<6} {r['name']:<20} -> {r['content']}")
{
"records": [
{"type": "A", "name": "@", "content": "203.0.113.10", "ttl": 3600},
{"type": "CNAME", "name": "www", "content": "@", "ttl": 3600, "proxied": true},
{"type": "MX", "name": "@", "content": "mx1.example.com", "ttl": 3600, "priority": 10}
],
"total": 3,
"page": 1,
"page_size": 50
}
{
"read_only": true,
"provisioning_mode": "manual",
"message": "This domain's DNS is managed at your own provider. Add the records below, then validate the domain.",
"required_records": [
{"type": "CNAME", "name": "*", "host": "*.example.com", "value": "cname.ngris.io"}
],
"records": []
}
# The apex "A" row (name "@", host "example.com") is included only when an
# apex fallback IP is configured for the platform.