Prerequisites
Before you call the registration endpoints, make sure you have:- A Bizzy API key with
domains:readanddomains:write. - A default Stripe payment method saved on the Bizzy account.
- The registrant contact details required by the domain registry.
- A maximum price, in cents, that you are willing to pay for the registration.
Step 1: Search availability
Search the exact domain you want to register.data:
registrationPriceCents is the all-in first-year price and renewalPriceCents
is the all-in per-year renewal price, both in USD cents. They can differ —
premium domains in particular often renew at a different price than they
register at. Both are null when the domain is unavailable.
Only continue if available is true.
Step 2: Get a live quote
Request a quote for the domain and registration period.periodYears is
optional and defaults to 1; it can be any integer from 1 to 10.
amountCents as the minimum value for maxAmountCents in the
registration request.
amountCents is the all-in total you’ll be charged: the first year at
registrationPriceCents plus each additional year at renewalPriceCents.
There are no other fees — WHOIS privacy is included at no extra cost.
Quotes are live. The registration request re-checks availability and price
before charging. If the current price is higher than
maxAmountCents, the
API rejects the request instead of charging you.Step 3: Register the domain
Submit the registration request with the domain, price guardrail, registration settings, and registrant contact details. Registration moves money, so it requires anIdempotency-Key header. Generate a
unique value per registration attempt and send the same value if you retry
that attempt.
202 Accepted with an operation ID:
402.
Idempotency
TheIdempotency-Key header is required and makes the charge safe to retry:
- Reuse the same key to retry a request that may already have succeeded (a
timeout or dropped connection before you saw the
202). The API replays the original operation and never charges twice. - Use a new key for a genuinely new registration attempt — for example, after a previous attempt failed and was refunded.
400. The same header is
required on domain renewal (POST /v1/domains/{id}/registration/renew).
Required registration inputs
Transfer lock is enabled automatically after a domain is registered. Manage it
afterwards with
PATCH /v1/domains/{id}/registration.
The contact object requires:
These contact fields are optional:
label, organizationName, jobTitle, and
address2. If you provide organizationName, jobTitle is also required — the
domain registry rejects a company contact without a job title. label is stored
only in Bizzy; changing it later does not update the registrar contact.
After registration, update registrar-backed contact fields with
PATCH /v1/domains/{id}/registration/contact. Changing the registrant’s name,
organization, or email resets Bizzy’s 15-day ICANN verification window and shows
the registrant verification notice again. Changing only the local label does
not contact the registrar or reset verification.
Registered Bizzy-managed domains can be deleted with DELETE /v1/domains/{id}
only after the registration has fully lapsed: the domain’s status must be
expired, and its DNS zone must hold no records beyond the zone’s built-in
ones (the apex NS set and SOA). Disable email for the domain first so Bizzy
removes the email records it manages, and delete any remaining records with the
DNS record endpoints. A renewal that is already queued or running also blocks
the deletion until it finishes. A blocked deletion returns 409 with code
REGISTERED_DOMAIN_NOT_EXPIRED, REGISTERED_DOMAIN_RENEWAL_IN_FLIGHT, or
REGISTERED_DOMAIN_DNS_NOT_EMPTY — the last lists the blocking records in the
error details. This keeps a paid, still-active registration from being hidden
from Bizzy while the registrar continues to renew it.
Step 4: Poll the operation
Registration is asynchronous because it depends on payment, registrar, DNS, and email setup work. Poll the operation until it reachessucceeded or failed.
When the operation succeeds,
resourceType is domain and resourceId is the
new Bizzy domain ID.
Step 5: Read the domain
After the operation succeeds, fetch the new domain usingresourceId.
Common failures
Next steps
After registration succeeds:- Create an email address on the domain from Bizzy-hosted email addresses.
- Manage records with the
/v1/domains/{id}/dns-recordsendpoints. - Review setup and renewal history in Domain Events.