HelipodDocs

DNS records

Read and change the DNS records of a domain.

These endpoints manage the DNS zone hosted by the registry for your domain. The records are served only while the domain uses the registry's default nameservers. If you point the domain to other nameservers, manage its DNS with that provider instead.

{id} is the domain id from GET /domains/mine. A domain with status pending_profile returns 409 DOMAIN_PENDING_PROFILE.

Record types

Typecontent
AIPv4 address, for example 203.0.113.10
AAAAIPv6 address, for example 2001:db8::10
CNAMETarget hostname, for example example.com
MXMail server hostname
MXEMail record type specific to the registry's DNS. Use MX unless you know you need it.
TXTText, for example v=spf1 include:_spf.example.net ~all
SPFSPF text (most setups publish SPF as TXT instead)

List records

GET/domains/{id}/dns
All DNS records of the domain.
curl https://api.helipod.io/api/domains/42/dns \
  -H "Authorization: Bearer hel_your_key"
Response
{
  "success": true,
  "data": [
    { "prefix": "@",   "name": "example.com",     "type": "A",     "content": "203.0.113.10", "ttl": 3600 },
    { "prefix": "www", "name": "www.example.com", "type": "CNAME", "content": "example.com",  "ttl": 3600 }
  ]
}
FieldDescription
prefixThe record name relative to the domain (@ for the domain itself, www, mail, ...).
nameThe full record name.
typeRecord type.
contentRecord value.
ttlTime to live in seconds.

When you write records, the name field takes the prefix (@, www), not the full name.

Set records

POST/domains/{id}/dns
Write the domain's record set.

This call replaces all existing records with the ones you send. To add one record, read the current list, append the new record and send the full list (using each record's prefix as name).

Prop

Type

curl -X POST https://api.helipod.io/api/domains/42/dns \
  -H "Authorization: Bearer hel_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "records": [
      { "name": "@",    "type": "A",     "content": "203.0.113.10" },
      { "name": "www",  "type": "CNAME", "content": "example.com" },
      { "name": "@",    "type": "MX",    "content": "mail.example.com", "ttl": 3600 },
      { "name": "@",    "type": "TXT",   "content": "v=spf1 include:_spf.example.net ~all" }
    ]
  }'
Response (201)
{ "success": true, "message": "DNS records created" }

If the registry rejects the set (for example a CNAME on a name that already has other records), the response is 422 with code REGISTRAR_REJECTED. Read the records again to see the current state.

Update a record

PUT/domains/{id}/dns
Send one changed record.

Prop

Type

curl -X PUT https://api.helipod.io/api/domains/42/dns \
  -H "Authorization: Bearer hel_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "name": "@", "type": "A", "content": "203.0.113.11", "ttl": 600 }'
Response
{ "success": true, "message": "DNS record updated" }

Use this for a name that has a single record of the given type. When a name has several records of the same type (for example two MX records), use Set records with the full list instead.

Delete a record

DELETE/domains/{id}/dns
Delete one record.

The record to delete goes in the JSON body. name, type and content must match the record exactly.

Prop

Type

curl -X DELETE https://api.helipod.io/api/domains/42/dns \
  -H "Authorization: Bearer hel_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "name": "www", "type": "CNAME", "content": "example.com" }'
Response
{ "success": true, "message": "DNS record deleted" }

Errors

StatuscodeWhen
404DOMAIN_NOT_FOUNDUnknown or non-numeric domain id, or the domain is not registered at the registry yet.
409DOMAIN_PENDING_PROFILEThe domain waits for owner details.
422VALIDATION_ERRORMissing field or unsupported record type.
422REGISTRAR_REJECTEDThe registry refused the change, for example an invalid record.
502REGISTRAR_ERRORThe registry could not be reached. Retry later.

On this page