Platform
ScaiWave ScaiGrid ScaiCore ScaiBot ScaiDrive ScaiKey Models Tools & Services
Solutions
Organisations Developers Internet Service Providers Managed Service Providers AI-in-a-Box
Resources
Support Documentation Blog Downloads
Company
About Research Careers Investment Opportunities Contact
Log in

Records Reference

DNS record endpoints. All are nested under a specific domain ID. For the conceptual model, see Zones and Records. For task walkthroughs, see Managing Records.

Base path: /api/v1/domains/{domain_id}/records Required permission: records:read, records:create, records:update, records:delete

GET /api/v1/domains/{domain_id}/records#

List records for a zone.

Query parameters:

Param Type Notes
type string Filter by record type
name string Substring match
include_system boolean Include SOA and NS (default false)

Response:

json
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
{
  "data": [
    {
      "id": "r_abc123",
      "name": "www.example.com",
      "display_name": "www",
      "type": "A",
      "content": "192.0.2.10",
      "ttl": 300,
      "disabled": false,
      "domain_id": "d_xyz789",
      "created_at": "2026-04-01T10:00:00Z"
    }
  ],
  "total": 17,
  "domain_id": "d_xyz789",
  "domain_name": "example.com"
}

POST /api/v1/domains/{domain_id}/records#

Create a record.

Request:

Field Type Required Notes
name string Yes @ for apex, or relative hostname
type string Yes Uppercase DNS type
content string Yes Zone-file formatted content
ttl integer No Defaults to zone's default_ttl
disabled boolean No Default false

Response: Created record.

GET /api/v1/domains/{domain_id}/records/{record_id}#

Get a specific record by ID.

PATCH /api/v1/domains/{domain_id}/records/{record_id}#

Update a record. Only content, ttl, and disabled are editable.

Request:

Field Type
content string
ttl integer
disabled boolean

Response: Updated record.

DELETE /api/v1/domains/{domain_id}/records/{record_id}#

Delete a record. Immediate and not recoverable.

Response: 204 No Content.

POST /api/v1/domains/{domain_id}/records/bulk#

Bulk create records.

Request:

json
1
2
3
4
5
6
7
{
  "records": [
    {"name": "app1", "type": "A", "content": "192.0.2.10", "ttl": 300},
    {"name": "app2", "type": "A", "content": "192.0.2.11", "ttl": 300}
  ],
  "continue_on_error": false
}

Response:

json
1
2
3
4
5
6
{
  "created": [...],
  "errors": [{"index": 1, "name": "app2", "error": "..."}],
  "total_created": 1,
  "total_errors": 1
}

See Bulk Operations for semantics.

POST /api/v1/domains/{domain_id}/records/bulk-delete#

Bulk delete records by ID.

Request:

json
1
{"record_ids": ["r_abc", "r_def"]}

Response:

json
1
{"deleted": 2, "errors": [], "total_deleted": 2, "total_errors": 0}

POST /api/v1/domains/{domain_id}/records/search#

Search records by query string. Matches against name and content.

Request:

json
1
{"query": "mail", "limit": 50}

Response: Same as list response shape.

GET /api/v1/domains/types#

List supported DNS record types with descriptions and example content. Public (no auth required).

Response:

json
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
{
  "types": [
    {"type": "A", "description": "IPv4 address", "example": "192.0.2.1"},
    {"type": "AAAA", "description": "IPv6 address", "example": "2001:db8::1"},
    {"type": "CNAME", "description": "Canonical name", "example": "target.example.com."},
    {"type": "MX", "description": "Mail exchanger", "example": "10 mail.example.com."},
    {"type": "NS", "description": "Nameserver", "example": "ns1.example.com."},
    {"type": "TXT", "description": "Text", "example": "\"v=spf1 -all\""},
    {"type": "SRV", "description": "Service locator", "example": "10 5 5060 sipserver.example.com."},
    {"type": "PTR", "description": "Reverse pointer", "example": "host.example.com."},
    {"type": "CAA", "description": "CA authorization", "example": "0 issue \"letsencrypt.org\""},
    {"type": "SSHFP", "description": "SSH fingerprint", "example": "1 1 <hex>"},
    {"type": "TLSA", "description": "DANE TLS binding", "example": "3 1 1 <hex>"},
    {"type": "DNAME", "description": "Subtree alias", "example": "target.example.com."},
    {"type": "ALIAS", "description": "Apex-compatible alias", "example": "target.example.com."}
  ]
}

Schemas#

Record#

Field Type
id string (UUID)
name string — FQDN
display_name string — relative to zone
type string
content string
ttl integer
disabled boolean
domain_id string (UUID)
created_at ISO 8601 timestamp

Error codes#

Status Meaning
400 Invalid content for the record type
403 Caller lacks records:* permission on this domain
404 Domain or record not found
409 Duplicate record, or type conflicts (CNAME + A, DNAME coexistence)
422 Schema validation failed
Updated 2026-05-17 02:38:19 View source (.md) rev 1