Skip to content

Error Codes

All API errors return a consistent JSON format:

{
"error": "Human-readable error title",
"message": "Detailed description of what went wrong",
"code": "ERROR_CODE"
}
CodeHTTP StatusDescriptionAction
VALIDATION_ERROR400Request body or params failed validationCheck request format against the API reference
TLD_NOT_SUPPORTED400TLD is not in our supported listUse GET /domains/pricing to see supported TLDs
DOMAIN_TOO_EXPENSIVE400Domain price exceeds internal safety limitContact support or try a different domain
AUTH_REQUIRED401Missing or invalid Authorization headerAuthenticate with SIWE first
TOKEN_EXPIRED401JWT access token has expiredRefresh your token
TOKEN_INVALID401JWT is malformed or signature is invalidRe-authenticate with SIWE
PAYMENT_REQUIRED402Endpoint requires x402 paymentSee x402 Payment Flow
PAYMENT_INVALID402Payment signature is malformed or invalidCheck your x402 payment implementation
PAYMENT_INSUFFICIENT402Wallet doesn’t have enough USDCFund your wallet on Base with USDC
OWNERSHIP_DENIED403You don’t own this domainDNS operations require the registering wallet
NOT_FOUND404Domain, record, or resource not foundVerify the domain name or record ID
DOMAIN_UNAVAILABLE409Domain is already registeredSearch for alternative domains
RATE_LIMITED429Too many requestsWait and retry. See Rate Limits
CodeHTTP StatusDescriptionAction
REGISTRATION_FAILED500Domain registration failed at the registryRetry or contact support
DNS_ERROR500DNS operation failed at the registryRetry or contact support
SERVICE_UNAVAILABLE503Dependent service is down (DB, Redis, registrar)Check GET /health and retry later

When rate limited, the response includes:

HTTP/1.1 429 Too Many Requests
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1708531200
{
"error": "Too many requests",
"message": "Rate limit exceeded. Try again in 45 seconds.",
"code": "RATE_LIMITED"
}