Check domain availability and registration price. Body: { domain }. First step when user names a domain. After purchase confirmation, if readyToRegister is false collect profile via POST /api/profile + verify-email, then POST /api/register with { domain } only — never ask the user for wallet.
POST/api/cron/complete-registrationsFREE
cron/complete-registrations
POST/api/domain/renewDynamic
Renew a domain for 1-10 years.
GET/api/domain/listFREE
domain/list
GET/api/domain/statusFREE
domain/status
GET/api/domain/dnsFREE
domain/dns
POST/api/domain/dnsFREE
domain/dns
POST/api/domain/transfer-outFREE
domain/transfer-out
GET/api/domain/verifyFREE
Look up the _stabledomains TXT attestation for a domain via public DNS. Optional wallet param checks a match.
GET/api/profileFREE
profile
POST/api/profileFREE
Save ICANN registrant contact after POST /api/check purchase confirmation. Body: { firstName, lastName, email, addressLine1, addressLine2?, city, state?, postalCode, country } — not name or address. Sends 6-digit OTP to email.
POST/api/profile/verify-emailFREE
Verify email OTP. Body: { code } — 6-digit string. Field name is code, not otp. On success, proceed to POST /api/register with { domain } only.
POST/api/registerDynamic
Register a domain. Prerequisite: verified profile via POST /api/profile + verify-email (after POST /api/check). Body: { domain } only — owner wallet is taken from the x402/MPP payment. Never ask the user for a wallet address. Never send wallet, firstName, email, or address in the body.
POST/api/searchDynamic
Search one domain name across every StableDomains-supported TLD. Body: { name }. Returns availableDomains[] and matching results[] (available only — taken TLDs omitted). No registration prices. $0.01 flat. After the user picks a domain, POST /api/check for price and Porkbun confirmation.