Endpoint roles
| Endpoint | Role | Pricing data | purchaseType? |
|---|---|---|---|
| Zone Check | Fast DNS signal for bulk browse UI | No — available only | No |
| Check Availability | Discovery at checkout | Yes — purchasePrice, premium, purchaseType | Yes |
| Search | Discovery for keyword/suggestion flows | Yes — purchasePrice, premium, purchaseType | Yes |
| Get Pricing | Registry reg/renew/transfer calculator | purchasePrice, renewalPrice, transferPrice | No |
| TLD Pricing | TLD-level list prices (non-premium) | TLD tables only | No |
purchaseType. It only indicates whether a name appears free in DNS. Use Check Availability or Search to gather information needed to complete a purchase.
Two pricing sources for Create Domain
-
Registry pricing (
purchaseType: registration) — standard + registry premium- Get Pricing returns authoritative totals for a given
years - Standard non-premium: omit
purchasePriceon create - Registry premium: required
purchasePricefrom Get Pricing with matchingyears
- Get Pricing returns authoritative totals for a given
-
Acquisition pricing (
aftermarket_s,aftermarket_b,aftermarket_i,expiring,backorder) — advanced; only if you support non-registration inventory- Search or Check Availability returns the flat acquisition
purchasePrice - Always required on create; does not multiply by
years
- Search or Check Availability returns the flat acquisition
Create Domain: purchasePrice and years
| Scenario | purchaseType | premium | purchasePrice | years |
|---|---|---|---|---|
| Standard registration | registration | false | Omit (optional quote from Get Pricing) | Set term |
| Registry premium | registration | true | Yes — from Get Pricing | Set term — same value on Get Pricing |
| Aftermarket | aftermarket_s, aftermarket_b, aftermarket_i | often true | Yes — from Search or Check Availability | Omit or TLD default — does not affect price or registration length |
| Expiring | expiring | varies | Yes — from Search or Check Availability | Omit or TLD default — does not affect price or registration length |
| Backorder | backorder | varies | Yes — from Search or Check Availability | Omit or TLD default — does not affect price or registration length |
purchaseType: registration, premium determines whether purchasePrice is required; years sets the registration term. When using Get Pricing to preview or validate, pass the same years. For any other purchaseType, purchasePrice is always required — regardless of premium.
purchasePrice is the domain fee only; Whois Privacy is charged separately when privacyEnabled is true.
If you send purchasePrice, it must match exactly to the cent or the request will fail.
Getting the price for Create Domain
-
Call Search or Check Availability (not Zone Check, not Get Pricing alone). Copy
purchaseType,premium, and notepurchasePrice. -
Branch on
purchaseType:registration+premium: false- Optional: call Get Pricing with the same
yearsto quote the total. - On create: omit
purchasePrice, setyears(no prior Get Pricing call required).
registration+premium: true(registry premium)- Call Get Pricing with same
years→ passpurchasePriceexactly to the cent on create.
aftermarket_s|aftermarket_b|aftermarket_i|expiring|backorder- Use Search or Check Availability
purchasePrice(flat acquisition fee). - Re-check discovery immediately before create — price can change.
- Do not use Get Pricing for create price.
yearsdoes not multiply price or guarantee multi-year registration.
- Optional: call Get Pricing with the same
- Renew and Transfer use Get Pricing separately — see sections below.
Integrator workflow patterns
Pick the path that matches your UX. Every path should re-run Check Availability right before Create Domain as pricing and availability can change.Pattern A: Registration only (recommended default)
Standard reseller checkout: fresh registrations and registry premiums only. PasspurchaseType: registration on discovery calls.
- Discover: Search with
purchaseType: registration— show suggestions,purchasePrice,renewalPrice; mark premiums. - Checkout: Check Availability with
purchaseType: registration— confirmpurchasable,premium, andpurchasePrice. - Price:
premium: false→ omitpurchasePrice, setyears.premium: true→ Get Pricing with sameyears→ passpurchasePriceon create. - Purchase: Create Domain with
purchaseType: registration.
purchasable: false; Search omits them. If checkout still surfaces a non-registration purchaseType, treat it as unsupported in your UI.
Pattern B: Zone Check + Check Availability combination
For bulk browse UIs powered by Zone Check. No Search required — still registration-only.- Browse: Zone Check →
availablehint for UI only (no pricing orpurchaseType). - Checkout → purchase: Follow steps 2–4 of Registration only above (
purchaseType: registrationon Check Availability).
Pattern C: All purchase types (advanced)
Only if you explicitly support aftermarket, expiring, or backorder. Omit thepurchaseType: registration filter.
- Discover: Search or Check Availability without a filter — acquisition types may appear alongside registration.
- Checkout: Re-run Check Availability without a filter — confirm
purchaseType,premium, andpurchasePrice(see Getting the price for Create Domain; acquisition types use flat discovery fees, not Get Pricing). - Purchase: Create Domain with matching
purchaseTypeandpurchasePricewhen required.
Renew Domain
| Scenario | Price source | purchasePrice on renew |
|---|---|---|
| Standard renewal | Get Pricing (optional quote) | Omit |
| Premium renewal | Get Pricing renewalPrice with matching years | Yes — pass renewalPrice as purchasePrice |
renewalPrice for premium renewals.
Transfers
| Scenario | Price source | purchasePrice on transfer |
|---|---|---|
| Standard transfer | Get Pricing (optional quote) | Omit |
| Premium transfer | Get Pricing transferPrice | Yes — pass transferPrice as purchasePrice |
transferPrice is not affected by the years query parameter. purchasePrice is the domain transfer fee only; Whois Privacy is charged separately when privacyEnabled is true. If you send purchasePrice, it must match Get Pricing transferPrice exactly to the cent or Create Transfer returns 400 and "Invalid Price". Premium transfers without purchasePrice return "PurchasePrice is required if the domain to transfer is a premium domain".
Registry premium vs acquisition
Skip this section if you scope discovery topurchaseType: registration only.
Both can show premium: true in discovery results, but pricing works differently.
Registry premium
purchaseType: registration with premium: true. Call Get Pricing with matching years; pass purchasePrice on create.
Aftermarket, expiring, and backorder
Flat acquisition fee from Search or Check Availability —years: 5 with purchasePrice: 5000 still charges $5,000. Omit years or pass the TLD default.
domain.expireDate after create; renew to extend registration.
Standard registration (non-premium)
purchasePrice on create. Optionally call Get Pricing with matching years to quote the total.
What not to do
- Do not use Zone Check for
purchaseType,purchasePrice, or checkout pricing - Do not use Get Pricing alone to discover how a domain is acquired
- Do not use Get Pricing
purchasePricefor aftermarket, expiring, or backorder create - Do not multiply discovery
purchasePrice×yearsfor acquisition types - Do not use discovery
renewalPricefor create or premium renew totals - Do not include VAT in
purchasePriceor derive it fromtotalPaid