Void API — your domains, servers and hosting, over REST.
Register and renew domains, put them behind Cloudflare and manage DNS, order and run VPS servers and web hosting — from your own code, on the same account and balance as the bot.
Objects & statuses
Domain
{
"id": "0a797218-8ec5-45d5-aa23-cb85c28a7d3b",
"domainName": "example.org",
"status": "ACTIVE", // PENDING · ACTIVE · EXPIRED · FAILED
"nameservers": ["ns1.voidhosting.org", "ns2.voidhosting.org"],
"price": "16.00", // paid for the current term
"renewalPrice": "16.00", "renewalYears": 1,
"autoRenew": false,
"expiresAt": "2027-08-28T17:04:38.000Z",
"createdAt": "2026-08-28T17:04:40.113Z",
"blockFlags": [] // "google" · "metamask" · "blockaid" · "registrar"
}Domain status
PENDING | registration in flight (seconds) |
ACTIVE | yours, resolving |
EXPIRED | past expiry; renewable for 30 days |
FAILED | registry refused; refunded |
Zone status
none | not connected |
pending | waiting for the nameserver switch |
active | Cloudflare is serving the zone |
moved | nameservers point elsewhere — reconnect or disconnect |
Server
{
"id": "3b0c6f1e-9d2a-4c55-8e0b-2f7a9c1d4e60",
"label": "vm-4f2a9c", // our name; also the default hostname
"alias": "api-prod", // yours, or null
"hostname": "vm-4f2a9c",
"status": "ACTIVE", // PENDING · PROVISIONING · ACTIVE · SUSPENDED · FAILED
"power": "RUNNING", // RUNNING · STOPPED · UNKNOWN
"ip": "203.0.113.25",
"os": "Ubuntu 24.04", "osCode": "ubuntu-24",
"specs": { "vcpu": 2, "ramMb": 4096, "diskGb": 80 },
"region": "PL",
"period": "MONTH", "periodPrice": "13.50", // renewal term and what each renewal costs
"autoRenew": false,
"expiresAt": "2026-12-01T10:00:00.000Z",
"graceEndsAt": null, // set while SUSPENDED: the server is deleted after it
"createdAt": "2026-11-01T10:00:00.000Z",
"proxy": { "enabled": false, "address": null }, // front-proxy add-on and its address
"sshKeys": 1, // keys installed at first boot
"passwordLogin": true,
"app": null // or { code, name, state, url?, note? }; secrets via /credentials
}Hosting
{
"id": "c41e2a7b-5f30-4d8e-9a61-0b7d3e9f2c18",
"label": "wh3f9a1c",
"status": "ACTIVE", // PENDING · ACTIVE · SUSPENDED · FAILED
"primaryDomain": "example.org",
"panelUrl": "https://…", "login": "wh3f9a1c",
"ip": "…", // for A records and FTP
"nameservers": ["…", "…"],
"specs": { "sites": 1, "diskMb": 3072, "bandwidthGb": 0 },
"planId": "8d2f…", // catalogue plans[].id
"period": "MONTH", "periodPrice": "10.00",
"autoRenew": false,
"expiresAt": "2026-12-01T10:00:00.000Z",
"graceEndsAt": null,
"createdAt": "2026-11-01T10:00:00.000Z"
}Server status
PENDING | paid, waiting in the provisioning queue |
PROVISIONING | being created (Windows: password being set) |
ACTIVE | yours, manageable |
SUSPENDED | expired unpaid: stopped, data kept until graceEndsAt; renew to resume |
FAILED | provisioning gave up; first term refunded |
Hosting status
PENDING | being created (seconds) |
ACTIVE | yours, panel open |
SUSPENDED | expired unpaid: panel user suspended until graceEndsAt; renew to resume |
FAILED | the panel refused; refunded |
After graceEndsAt an unpaid server or hosting account is deleted and drops out of the lists.
Notifications
Events that concern a domain — registration, renewal (manual or automatic), expiry reminders at 7/3/1 days, blocklist hits — are delivered to the account in the Telegram bot regardless of which client caused them, and to your webhooks if you registered any. Server and hosting events — ready, renewed, upgraded, expiry reminders, suspended — reach the bot; webhooks carry domain events only for now.
Scope & changes
v1 covers domains, Cloudflare, servers and web hosting. A few things stay in the bot for now: topping up the balance, deleting a server or a hosting account, managing saved SSH keys and switching the proxy add-on on an existing server. Additive changes (new fields, new endpoints) happen without notice; anything breaking ships as /v2 with v1 kept alive.
Machine-readable description: openapi.json (OpenAPI 3.0). Questions and bugs — @void_sup_bot.