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/apiEvery 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.
| Problem | Status | code |
|---|---|---|
No Authorization header | 401 | NO_API_KEY |
| Unknown or revoked key | 401 | INVALID_API_KEY |
| Expired key | 401 | API_KEY_EXPIRED |
| Key without the Domain API product | 403 | SCOPE_NOT_ALLOWED |
| Key limited to one project | 403 | ACCOUNT_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": true, "data": { "...": "..." } }{ "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=trueto 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_BALANCEand 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_protectionin 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.