HelipodDocs

Domain API

Search, register, transfer and renew domains, set owner details, and manage DNS, nameservers and WHOIS protection with an API key.

The Domain API gives your code the same domain features as the Helipod dashboard: search for a name, check prices, register or transfer it, renew it, and manage its DNS records, nameservers, child nameservers and WHOIS protection.

Base URL

https://api.helipod.io/api

Every route lives under /domains, for example https://api.helipod.io/api/domains/mine.

Authentication

Send your API key as a Bearer token:

curl https://api.helipod.io/api/domains/mine \
  -H "Authorization: Bearer hel_your_key"

Domains belong to your account, not to a project, so the key must:

  • have the Domain API product enabled, and
  • not be limited to one project.

To create one, open the dashboard, go to Project → Settings → API keys, choose Whole account access and enable Domain API. Copy the key when it is shown: it starts with hel_ and is not shown again.

ProblemStatuscode
No Authorization header401NO_API_KEY
Unknown or revoked key401INVALID_API_KEY
Expired key401API_KEY_EXPIRED
Key without the Domain API product403SCOPE_NOT_ALLOWED
Key limited to one project403ACCOUNT_KEY_REQUIRED

Two endpoints are public and need no key: domain search and the price list.

Keep your key secret. Paid endpoints charge your wallet, so anyone with a Domain API key can spend your balance on domains.

Response format

Every response is JSON with the same envelope.

Success
{ "success": true, "data": { "...": "..." } }
Error
{ "success": false, "error": "Domain not found", "code": "NOT_FOUND" }

Some endpoints that change something return a message instead of data, and paid endpoints add a billing object. Every error carries a stable code.

Some messages are in Indonesian (for example Saldo tidak cukup or the owner details message). Treat error as text for humans. Your code should rely on the HTTP status and the code. See Errors.

Prices and payment

  • All prices are in Indonesian Rupiah (IDR) and include 11% VAT (PPN). The price you see in the price list is the price you pay.
  • Register, transfer, renew and enabling WHOIS protection charge your Helipod wallet (the deposit balance). Top up in the dashboard before calling them.
  • Add ?dryRun=true to register, transfer or renew to see the exact price and your wallet after it, without paying. See Check the price first.
  • The wallet is checked before anything is sent to the registry. If the balance is too low you get 402 INSUFFICIENT_BALANCE and nothing is charged.
  • If the registry rejects the request after the charge (422 REGISTRAR_REJECTED) or cannot be reached (502 REGISTRAR_ERROR), the amount is refunded to your wallet automatically.
  • WHOIS protection has one price, shown as whois_protection in the price list (currently Rp 20,000 per year). It is the same at register, renew and when you enable it later.
  • Domains with auto-renew on are renewed from your wallet shortly before they expire. See Auto-renew.

Paid endpoints are marked with a charges your wallet badge in this reference.

Rate limits

Requests made with an API key are limited to 10 requests per second per key. Responses carry x-ratelimit-limit and x-ratelimit-remaining headers. Over the limit you get 429 with code RATE_LIMITED and a retry-after header (seconds).

Quick start

Search for a name

curl "https://api.helipod.io/api/domains/search?domain=example.com"

"available": 1 means the name can be registered. See Search and prices.

Check the price

curl "https://api.helipod.io/api/domains/prices?extension=.com"

registration["1"] is the one-year registration price, VAT included.

Complete the owner details

The registry needs the domain owner's name, phone number and address. Fill them in once with PATCH /domains/registrant (or in the Helipod dashboard), then check them:

curl https://api.helipod.io/api/domains/registrant \
  -H "Authorization: Bearer hel_your_key"

Continue when data.complete is true. See Owner details.

Register the domain

curl -X POST https://api.helipod.io/api/domains/register \
  -H "Authorization: Bearer hel_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "name": "example.com", "period": 1 }'

The price is charged to your wallet. See Registration.

Set DNS records

Find the domain's id with GET /domains/mine, then create its records:

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" }
      ] }'

See DNS records.

Reference

On this page