Void API — your domains, over REST.

Check availability, register and renew, switch nameservers, put a domain behind Cloudflare and manage its DNS, security switches and redirects — from your own code, on the same account and balance as the bot.

https://api.voidhosting.org/v1 Bearer void_… JSON · UTC · USD strings

Account

who am I, what can I spend
GET/mekey

Account id and available balance. Handy as a key-validity probe.

{ "ok": true, "data": { "id": "2c576de1-…", "balance": "25.07", "currency": "USD", "createdAt": "2026-08-26T12:59:46.538Z" } }

Availability & prices

before you buy
GET/domains/tlds

Every zone we sell with its first-year registration price. Renewal prices can differ — see Renewal.

{ "ok": true, "data": [ { "tld": "com", "price": "14.50", "currency": "USD", "years": 1 }, { "tld": "xyz", "price": "5.50", … }, … ] }
GET/domains/check?domain={name}

One exact name. We verify at the registry (RDAP / DNS delegation / whois), not just the registrar's word, so "available" here means you can actually buy it.

querytype
domainrequiredstringfull name, e.g. example.xyz
{ "ok": true, "data": { "domain": "example.xyz", "available": true,  "price": "5.50" } }
{ "ok": true, "data": { "domain": "taken.com",   "available": false, "price": null } }
{ "ok": true, "data": { "domain": "x.co.uk",     "available": false, "price": null, "reason": "UNSUPPORTED_TLD" } }
// "reason": "UNCERTAIN" — the registry could not be reached; try again shortly

Domains

the things you own
GET/domains?offset=0&limit=20

Your domains, newest first. Includes ACTIVE, EXPIRED (still renewable) and PENDING (registration in flight).

{ "ok": true, "data": { "items": [ Domain, … ], "total": 3, "offset": 0, "limit": 20 } }
POST/domains201 · charges balance

Registers the name for one term (two years for zones that require it) and returns the domain. It comes up on ns1/ns2.voidhosting.org with a parking page until you point it elsewhere.

bodytype
domainrequiredstringthe name to register
curl -X POST https://api.voidhosting.org/v1/domains \
  -H "Authorization: Bearer $VOID_KEY" -H "Content-Type: application/json" \
  -d '{"domain":"example.xyz"}'
409 DOMAIN_UNAVAILABLE taken / premium / unsupported zone402 INSUFFICIENT_FUNDS502 REGISTRAR_ERROR refunded
GET/domains/{id}

One domain by id. blockFlags lists blocklists the name currently appears on (google, metamask, registrar) — checked every 10 minutes.

PATCH/domains/{id}

Change nameservers and/or the auto-renew flag. Send only what you change; at least one field is required.

bodytype
nameserversstring[2..4]applied at the registry immediately; propagation follows the zone's TTL
autoRenewbooleanrenew from the balance 7 days before expiry
{ "nameservers": ["ns1.example.net", "ns2.example.net"], "autoRenew": true }

A domain connected to Cloudflare must keep Cloudflare's nameservers — disconnect first (DELETE /cloudflare) if you want your own.

Renewal

quote first, then pay
GET/domains/{id}/renew-quote

What a renewal costs right now and when the domain would expire afterwards. Always read this before renewing: promo zones (.xyz, .live, …) renew above their registration price because the registry charges more.

{ "ok": true, "data": { "domainId": "0a79…", "domainName": "example.org", "price": "16.00", "years": 1, "expiresAfter": "2028-08-28T17:04:38.000Z" } }
POST/domains/{id}/renewcharges balance

Renews for one term at the quoted price and returns the updated domain. Works for ACTIVE domains and for EXPIRED ones within 30 days of expiry.

402 INSUFFICIENT_FUNDS502 REGISTRAR_ERROR refunded
support news voidhosting.org Void · api v1