The control plane for domains
Orchestrate everyregistrar from one API.
Search, register, renew and manage domains across every registrar you work with — batch operations, webhook events, bearer-token auth. Total control, one control plane.
Every operation is a typed endpoint.
No plugins, no scripts. Each capability has an OpenAPI 3.0 entry, a consistent JSON envelope and predictable error codes.
Domain availability
POST /domains/search — check a batch of names against any connected registrar in one call. Returns availability, register and renew pricing, premium flags and currency.
Batch registration
POST /orders — register a batch in one call. Two-stage pipeline: register first, then set nameservers, so a failed delegation never leaves an unregistered domain. Track the batch via batchId.
Live TLD pricing
GET /tlds — real-time pricing across all registrars. Filter by mode (best/all), abuse tolerance, verification type, TLD tier. Compare register, renew and transfer costs.
Clients & contacts
Full CRUD for clients and WHOIS contacts. Four contact types per client: registrant, administrator, technical, billing. Reassign domains between clients with automatic contact remapping.
Renew, NS, EPP codes
Renew, re-delegate, pull EPP codes or refresh WHOIS contacts across a whole list at once — from the console’s bulk editor or the API. Every run is queued and reports per-domain results, so one registrar refusal never sinks the batch.
10 event types, one attempt
orders.created, orders.registered, orders.completed, task.completed, balance.low, balance.proxyline, domain.expiring, domain.deleting, domain.blocked, domain.complaint. Delivered once and the outcome recorded — whether your endpoint was up is yours to know, not ours to keep guessing at.
Every registrar, one schema.
Each registrar adapter normalizes availability, pricing, registration and renewal into the same JSON shape. New adapters land regularly.
Registrars — live
- Dynadot
- WebNIC
- GName
- NiceNIC
- Spaceship
- Openprovider
In progress
- Namecheapsoon
- NicNamessoon
- DomainNameAPIsoon
Endpoints — 45 routes
- POST /domains/search
- GET /tlds
- POST /orders
- GET /orders/batch/{batchId}
- GET /orders/{id}
- GET /domains
- POST /domains/renew
- POST /domains/nameservers
- POST /domains/auth-info
- GET /clients
- POST /clients
- GET /tasks/{id}
- GET /webhooks/events
- POST /trademarks/check
Consistent envelope, every endpoint.
Bearer tokens (bk_ + 64 hex) with a per-token IP allow-list, a per-token rate limit, typed error codes and one JSON envelope for everything: { success, data } or { success, error }. Click through a real batch below.
- Auth
Authorization: Bearer bk_…64 hex chars. Optional IP allow-list per token, single IPs or CIDR, v4 and v6.- Limits
- Per-token rate limit,
10 req/sby default, and nothing is dropped silently: past it you get a typed429, not a closed socket. - Errors
- Eight typed codes,
BAD_REQUESTtoINTERNAL_ERROR, each pinned to one HTTP status. The message names the item and the field to fix. - Lists
- Every collection pages with
?limit=20&offset=0, up to 100 per page. Batches take up to 50 items per call.
Stop switching between registrar dashboards. Ship one integration.
Sign in, generate a bk_ token, restrict it to your IP, and hit /v1/domains/search. The first 1,000 domains are free.