Overview
The flow has three steps: connect a domain (we register its zone and copy over its existing public records), switch nameservers at your registrar to the three we return, and once delegation is verified the domain goes active and every record change you make takes effect on our nameservers within minutes. Records can be managed from the dashboard or this API interchangeably.
Once a domain is connected, two more APIs build on it: Email Forwarding creates addresses on the domain that deliver to any inbox, and Domain Health runs live checks on delegation, reachability, and mail posture.
Base URL: https://api.reinterface.com/api/v1. All responses are JSON. Last updated: 2026-08-08.
Authentication
Requests carry a short-lived access token, not your API key. POST your personal key to /api/v1/token once, then send the token it returns in the Authorization header for the next hour. Find your key under Dashboard → Settings → API keys. Domains are scoped to your account; you can only see and manage domains you connected.
curl -X POST https://api.reinterface.com/api/v1/token \
-H "x-api-key: <YOUR_API_KEY>"
# {"access_token":"eyJ...","token_type":"Bearer","expires_in":3600}-H "Authorization: Bearer <ACCESS_TOKEN>"Connect a domain
/api/v1/dns/domainsRegister a domain's zone on Reinterface nameservers
Registers the zone and scans the domain’s current public DNS (apex A/AAAA/MX/TXT and www) to import existing records, so switching nameservers doesn’t take your site or mail down. The response lists the nameservers to set at your registrar and everything that was imported. The domain starts as pending.
curl -X POST https://api.reinterface.com/api/v1/dns/domains \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-H "content-type: application/json" \
-d '{ "domain": "company.com" }'{
"domain": "company.com",
"status": "pending",
"nameservers": [
"ns1.reinterfacens.com",
"ns2.reinterfacens.com",
"ns3.reinterfacens.com"
],
"imported_records": [
{ "id": "", "type": "A", "name": "@", "value": "203.0.113.10", "ttl": 3600 },
{ "id": "", "type": "MX", "name": "@", "value": "mx1.company.com", "ttl": 3600, "priority": 10 }
]
}409 domain_taken.List domains
/api/v1/dns/domainsList your connected domains and our nameservers
curl https://api.reinterface.com/api/v1/dns/domains \
-H "Authorization: Bearer <ACCESS_TOKEN>"{
"domains": [
{
"domain": "company.com",
"status": "active",
"last_checked_at": "2026-07-30T10:41:00Z",
"created_at": "2026-07-29T08:12:00Z"
}
],
"nameservers": [
"ns1.reinterfacens.com",
"ns2.reinterfacens.com",
"ns3.reinterfacens.com"
]
}Check delegation
/api/v1/dns/domains/{domain}Live nameserver check; updates the stored status
Looks up the domain’s nameservers on the public DNS tree and compares them with ours. When all expected nameservers are present, the domain flips to active. Nameserver changes can take up to 24-48 hours to propagate, so keep polling this endpoint after switching.
curl https://api.reinterface.com/api/v1/dns/domains/company.com \
-H "Authorization: Bearer <ACCESS_TOKEN>"{
"domain": "company.com",
"status": "active",
"expected_nameservers": [
"ns1.reinterfacens.com",
"ns2.reinterfacens.com",
"ns3.reinterfacens.com"
],
"current_nameservers": [
"ns1.reinterfacens.com",
"ns2.reinterfacens.com",
"ns3.reinterfacens.com"
]
}Remove a domain
/api/v1/dns/domains/{domain}Delete the zone and disconnect the domain
Deletes the zone from our nameservers and releases the domain from your account. If its nameservers still point at us afterwards, the domain stops resolving, so switch them back at your registrar first.
curl -X DELETE https://api.reinterface.com/api/v1/dns/domains/company.com \
-H "Authorization: Bearer <ACCESS_TOKEN>"{
"success": true,
"domain": "company.com",
"status": "deleted"
}List records
/api/v1/dns/recordsList a domain's DNS records
Required query param: domain. name uses @ for the zone apex. NS records appear in listings but are managed by Reinterface; attempts to modify or delete them return 403 protected_record.
curl "https://api.reinterface.com/api/v1/dns/records?domain=company.com" \
-H "Authorization: Bearer <ACCESS_TOKEN>"{
"domain": "company.com",
"records": [
{ "id": "856390610", "type": "NS", "name": "@", "value": "ns1.reinterfacens.com", "ttl": 3600 },
{ "id": "856390654", "type": "A", "name": "@", "value": "203.0.113.10", "ttl": 300 },
{ "id": "856390662", "type": "MX", "name": "@", "value": "mx1.company.com", "ttl": 3600, "priority": 10 }
]
}Create a record
/api/v1/dns/recordsCreate a DNS record on a connected domain
Required: domain, type (A, AAAA, CNAME, MX, TXT), name (@ for apex) and value. Optional: ttl in seconds (60, 300, 900, 1800, 3600, 21600, 43200 or 86400; defaults to 3600, other values round up) and priority (MX only, defaults to 10). Values are validated per type; an A record value must be an IPv4 address, AAAA an IPv6 address, and so on.
curl -X POST https://api.reinterface.com/api/v1/dns/records \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-H "content-type: application/json" \
-d '{
"domain": "company.com",
"type": "MX",
"name": "@",
"value": "mx1.company.com",
"priority": 10,
"ttl": 3600
}'{
"id": "856390662",
"type": "MX",
"name": "@",
"value": "mx1.company.com",
"ttl": 3600,
"priority": 10
}Update a record
/api/v1/dns/records/{id}Update a record's name, value, TTL or priority
Required: domain and value. Optional: name, ttl and priority (each keeps its current value when omitted). A record’s type cannot change; delete and recreate instead.
curl -X PUT https://api.reinterface.com/api/v1/dns/records/856390654 \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-H "content-type: application/json" \
-d '{
"domain": "company.com",
"value": "203.0.113.20",
"ttl": 300
}'{
"id": "856390654",
"type": "A",
"name": "@",
"value": "203.0.113.20",
"ttl": 300
}Delete a record
/api/v1/dns/records/{id}Delete a DNS record
Required query param: domain.
curl -X DELETE "https://api.reinterface.com/api/v1/dns/records/856390654?domain=company.com" \
-H "Authorization: Bearer <ACCESS_TOKEN>"{
"success": true,
"id": "856390654",
"status": "deleted"
}Deliverability records
Sending domains still get their SPF, DKIM, and DMARC records generated and verified automatically when you register them for email; those flows live in the Email Connectors API. The DNS API is for the rest of your zone.
Errors
Errors return { "success": false, "error": { "code", "message" } }.
| Status | Code | Meaning |
|---|---|---|
| 401 | unauthorized | Missing, invalid or expired access token |
| 400 | invalid_request | Missing or invalid fields |
| 404 | domain_not_found | Domain is not attached to your account |
| 404 | record_not_found | Record id does not exist on this domain |
| 403 | protected_record | NS records are managed by Reinterface |
| 409 | domain_taken | Domain is already connected to an account |
| 409 | record_conflict | A conflicting record already exists |
| 502 | cloudns_error | Upstream DNS provider unreachable |
| 503 | dns_not_configured | DNS management is disabled on this server |
Endpoint summary
| Method | Path | Purpose |
|---|---|---|
| GET | /api/v1/dns/domains | List your connected domains |
| POST | /api/v1/dns/domains | Connect a domain (registers its zone) |
| GET | /api/v1/dns/domains/{domain} | Live delegation check |
| DELETE | /api/v1/dns/domains/{domain} | Remove a domain and its zone |
| GET | /api/v1/dns/records | List a domain's records |
| POST | /api/v1/dns/records | Create a record |
| PUT | /api/v1/dns/records/{id} | Update a record |
| DELETE | /api/v1/dns/records/{id} | Delete a record |