Monitor
Sign in

Records

Records live inside a 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 — 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.

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 validation rules.
ttl integer60–86400 seconds. Defaults to 3600.
priority integer0–65535. Required for MX and SRV; ignored by other types.

Example

curl -X POST \
  'https://api.qflaryx.com/v1/orgs/$ORG_ID/zones/42/records' \
  -H 'Authorization: Bearer $QFLARYX_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "www",
    "type": "A",
    "content": "203.0.113.10",
    "ttl": 3600
  }'

An MX record with its required priority:

cURL
curl -X POST \
  'https://api.qflaryx.com/v1/orgs/$ORG_ID/zones/42/records' \
  -H 'Authorization: Bearer $QFLARYX_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.qflaryx.com/v1/orgs/$ORG_ID/zones/42/records/1001' \
  -H 'Authorization: Bearer $QFLARYX_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.qflaryx.com/v1/orgs/$ORG_ID/zones/42/records/1001' \
  -H 'Authorization: Bearer $QFLARYX_KEY'