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

FieldTypeDescription
id integerUnique identifier of the record.
zone_id integerZone the record belongs to.
name stringAlways stored and returned as the FQDN (e.g. www.example.com).
type enumA · AAAA · CNAME · MX · TXT · SRV · CAA · NS · PTR · ALIAS.
content stringThe record value: an IP, hostname, text, etc., depending on the type.
ttl integerTime to live in seconds, 60–86400.
priority integer | nullPriority (0–65535). Required for MX and SRV.
disabled booleanA disabled record stays stored but is not served by the nameservers.
created_at datetimeCreation 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 ALIAS instead.
  • 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

POST /orgs/{org_id}/zones/{zone_id}/records

The 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

ParameterTypeDescription
name requiredstringRelative name ('www'), '@' or empty for the apex, or the full FQDN.
type requiredenumOne of the supported types (case-insensitive, normalized to uppercase).
content requiredstringThe record value. Validated per type: see the validation rules.
ttl integer60–86400 seconds. Defaults to 3600.
priority integer0–65535. Required for MX and SRV; ignored by other types.

Example

cURL
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
  }'
response · 201 Created
{
  "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
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

GET /orgs/{org_id}/zones/{zone_id}/records

Lists all records of the zone, ordered by name and type.

Update a record

PUT /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

ParameterTypeDescription
content stringNew value, re-validated against the record type.
ttl integer60–86400 seconds.
priority integer0–65535.
disabled booleanSet true to stop serving the record without deleting it.

Example

cURL
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

Set "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

DELETE /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
curl -X DELETE "https://api.monitor.quathos.com/v1/orgs/$ORG_ID/zones/42/records/1001" \
  -H "Authorization: Bearer $QUATHOS_KEY"