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.

6registrar adapters
7,100+zones priced
10webhook events
most / apiv1 · REST
$ curl -X POST https://api.most.ac/v1/orders \
-H "Authorization: Bearer bk_live_…" \
-d '{"domain":"example.com", "years":1}'
 
# 201 Created
{
"id": "ord_9f2a",
"domain": "example.com",
"registrar": "auto",
"status": "registered",
"expires": "2027-09-03"
}
§ 02  ·  CAPABILITIES

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.

01 · SEARCH

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.

02 · ORDERS

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.

03 · PRICING

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.

04 · CLIENTS

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.

05 · BULK OPS

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.

06 · WEBHOOKS

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.

§ 03  ·  COVERAGE

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
View all 45 in the documentation
§ 04  ·  API

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.

you api.most.acPOST /v1/domains/search
Authorization: Bearer bk_••••
Content-Type: application/json
{
"domains": ["example.com", "mybrand.io"],
"registrar": "SPACESHIP"
}
api.most.ac you200 OK284 ms
{
"success": true,
"data": {
"results": [
{
"domain": "example.com",
"status": "taken",
"premium": false,
"pricing": {
"registrar": "SPACESHIP",
"register1Y": "8.99",
"renew1Y": "10.99",
"transfer": "7.99",
"currency": "USD"
}
},
{
"domain": "mybrand.io",
"status": "available",
"premium": false,
"pricing": {
"registrar": "SPACESHIP",
"register1Y": "32.00",
"renew1Y": "45.00",
"transfer": "32.00",
"currency": "USD"
}
}
]
}
}
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/s by default, and nothing is dropped silently: past it you get a typed 429, not a closed socket.
Errors
Eight typed codes, BAD_REQUEST to INTERNAL_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.
§ 05  ·  GET STARTED

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.