§ 01 · Control plane
One API, every registrar.
A single REST API to search, register, renew and manage domains across every registrar you work with. Bearer-token auth, batch operations, webhook events — no dashboard juggling.
Search, order, track, get notified.
Every domain operation follows the same four-step pipeline. Typed JSON in, typed JSON out, webhooks on completion.
Search
POST /domains/search checks availability and pricing across your chosen registrar. Up to 35 domains per call. Returns status, register/renew pricing and premium flags.
Order
POST /orders creates a batch of up to 50 registrations. Each item specifies domain, registrar, term and nameservers. Returns a batchId for tracking the whole set.
Track
GET /orders/batch/{batchId} returns real-time progress. Two-stage pipeline: first register the domain, then configure nameservers. Status moves through PENDING → REGISTERING → REGISTERED → SETTING_NS → COMPLETED.
Notify
Webhooks fire on orders.registered, orders.completed, task.completed and five more event types. Exponential backoff retry with four attempts. Inspect past deliveries via the Webhooks API.
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
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 token auth (bk_ + 64 hex), IP allow-list per token, 10 req/s rate limit, limit/offset pagination. All responses wrap in {"success", "data"} or {"success", "error"} envelope.
{
"domains": [
"rocket.ac",
"rocket.io",
"rocket.dev"
],
"registrar": "SPACESHIP"
}{
"success": true,
"data": {
"results": [
{
"domain": "rocket.ac",
"status": "available",
"pricing": {
"register1Y": "39.00",
"renew1Y": "42.00",
"currency": "USD"
}
}
]
}
}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.