Records
Records live inside a zone. On an active zone, every create, update and delete is pushed to the authoritative nameservers as part of the request: when the API answers, the change is already being served.
The record object
| Field | Type | Description |
|---|---|---|
id | integer | Unique identifier of the record. |
zone_id | integer | Zone the record belongs to. |
name | string | Always stored and returned as the FQDN (e.g. www.example.com). |
type | enum | A · AAAA · CNAME · MX · TXT · SRV · CAA · NS · PTR · ALIAS. |
content | string | The record value: an IP, hostname, text, etc., depending on the type. |
ttl | integer | Time to live in seconds, 60–86400. |
priority | integer | null | Priority (0–65535). Required for MX and SRV. |
disabled | boolean | A disabled record stays stored but is not served by the nameservers. |
created_at | datetime | Creation timestamp (UTC). |
Supported types
A, AAAA, CNAME, MX, TXT, SRV, CAA, NS, PTR and ALIAS. ALIAS behaves like a CNAME but is allowed at the zone apex.
Validation rules
Content is validated per type before anything is stored or published:
- A requires a valid IPv4 address; AAAA a valid IPv6 (each rejects the other family).
- CNAME, NS, PTR, ALIAS, MX require a valid hostname; an IP address is rejected.
- MX and SRV require
priority. - TTL must be between 60 and 86400 seconds (default 3600).
- CNAME coexistence: a CNAME cannot share its name with any other record, in either direction. A CNAME at the apex is rejected; use
ALIASinstead. - Plan limit: the Free plan allows 500 records per organization across all zones. Exceeding it returns
422.
Violations return 422 with the reason in detail and no X-Error-Code: see Errors.
Create a record
/orgs/{org_id}/zones/{zone_id}/recordsThe name may be relative (www), @ for the apex, or a full FQDN; the response always carries the FQDN. Returns 201 with the record. On a pending zone the record is stored and published when the zone activates.
Body parameters
| Parameter | Type | Description |
|---|---|---|
name required | string | Relative name ('www'), '@' or empty for the apex, or the full FQDN. |
type required | enum | One of the supported types (case-insensitive, normalized to uppercase). |
content required | string | The record value. Validated per type: see the validation rules. |
ttl | integer | 60–86400 seconds. Defaults to 3600. |
priority | integer | 0–65535. Required for MX and SRV; ignored by other types. |
Example
curl -X POST "https://api.monitor.quathos.com/v1/orgs/$ORG_ID/zones/42/records" \
-H "Authorization: Bearer $QUATHOS_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "www",
"type": "A",
"content": "203.0.113.10",
"ttl": 3600
}'{
"id": 1001,
"zone_id": 42,
"name": "www.example.com",
"type": "A",
"content": "203.0.113.10",
"ttl": 3600,
"priority": null,
"disabled": false,
"created_at": "2026-07-22T15:12:40.660215"
}An MX record with its required priority:
curl -X POST "https://api.monitor.quathos.com/v1/orgs/$ORG_ID/zones/42/records" \
-H "Authorization: Bearer $QUATHOS_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "@",
"type": "MX",
"content": "mail.example.com",
"priority": 10
}'List records
/orgs/{org_id}/zones/{zone_id}/recordsLists all records of the zone, ordered by name and type.
Update a record
/orgs/{org_id}/zones/{zone_id}/records/{record_id}Partial update: send only the fields you want to change. name and type are immutable; delete and recreate to change them. New content is re-validated against the record's type.
Body parameters
| Parameter | Type | Description |
|---|---|---|
content | string | New value, re-validated against the record type. |
ttl | integer | 60–86400 seconds. |
priority | integer | 0–65535. |
disabled | boolean | Set true to stop serving the record without deleting it. |
Example
curl -X PUT "https://api.monitor.quathos.com/v1/orgs/$ORG_ID/zones/42/records/1001" \
-H "Authorization: Bearer $QUATHOS_KEY" \
-H "Content-Type: application/json" \
-d '{ "content": "203.0.113.20", "ttl": 300 }'Pause instead of delete
"disabled": true to stop serving a record while keeping it stored, handy for maintenance windows or staged cutovers. Set it back to false to resume.Delete a record
/orgs/{org_id}/zones/{zone_id}/records/{record_id}Removes the record and updates the nameservers in the same request. Returns 204 No Content.
curl -X DELETE "https://api.monitor.quathos.com/v1/orgs/$ORG_ID/zones/42/records/1001" \
-H "Authorization: Bearer $QUATHOS_KEY"