Added
- TLD Pricing Response Enhancement: The TLD Price List endpoint now includes retail pricing information in addition to account-level pricing, which applies to registration, renewal, domain restoration, and transfer purchase types. Each pricing entry now provides three price tiers:
- Account-level price (includes account discounts)
- Retail price (includes rebates/promotions/sales, but no account discounts)
- Original/MSRP price (before any discounts)
Changed
- Contact Schema Validation: Contact schemas have been refactored to separate validation requirements between request and response operations:
- GET Operations (Responses): The
ContactandRegistrantContactschemas used in API responses now allow nullable fields to accommodate legacy data that may contain null or empty values. This ensures GET operations can successfully return domains with legacy contact information without validation errors. - POST/PUT Operations (Requests): The
ContactRequestandRegistrantContactRequestschemas used for creating and updating contacts enforce all validation requirements including:- Required fields (firstName, lastName, address1, city, state, zip, country, email, phone)
- Minimum length constraints (minLength: 1)
- Format validation (email format, phone/fax E.164 pattern, country code pattern)
- This separation ensures that while GET operations can handle legacy data gracefully, all contact creation and update operations continue to enforce proper data validation and formatting requirements.
- GET Operations (Responses): The
Fixed
- Get Domain Pricing: Fixed validation order in
getPricingForDomainendpoint to check TLD support before year validation. Unsupported TLDs now return422 Unprocessable Entitywith the message “TLD not supported” instead of400 Bad Requestwith a misleading “Invalid value for years for this domain” message. - Create Domain: Added TLD privacy support check before adding WhoIs Privacy to orders. Privacy is only added when the TLD supports it, preventing failed order items for unsupported TLDs.
- Purchase Privacy: Added TLD privacy support validation. Returns
422 Unprocessable Entitywith message “TLD does not support WhoIs Privacy” when attempting to purchase privacy for unsupported TLDs.
Changed
- Cancel Transfer endpoint now returns a 409 conflict if an existing transfer is in a state that cannot be canceled.
Fixed
- A handful of new contact schemas were missing updates to separate Request vs Response. This has been fixed.
Added
- Create Transfer: Added
504 Gateway Timeoutresponse when domain status cannot be retrieved due to blocked-hostname. - Create Transfer: Added optional
warningsobject toCreateTransferResponsewithmessageandstatusesto surface non-blocking registry status advisories. - Domain Lock Status Change Webhook: Added
ExpirationClientHoldto thelockTypeenum. This lock type is applied to expired domains of configured API Reseller accounts.
Fixed
- Create Transfer: Fixed issue where a
400 Bad Requestwas returned for Insufficient Funds instead of the correct402 Payment Requiredstatus. - Get Domain: Fixed intermittent
500 Server Errorcaused by legacy contact data by updating API definitions to allow legacy contacts to be returned while still enforcing correct formatting in requests.
Added
- Domain Claims Period Support: Register domains during trademark claims period.
- New endpoint:
GET /core/v1/domaininfo/claims/{domain}returns claim identifiers and validity dates.
Changed
- TLD Requirements:
GET /core/v1/domaininfo/requirements/{tld}now returnsclaimsCheckRequired. - Domain Create:
POST /core/v1/domainsnow accepts optionalclaimsobject (claimId,notBefore,notAfter) when required by the TLD.
Added
- List Domains: New
includeRenewalPricequery parameter.true(default) includes renewal pricing in responses.falseomits renewal pricing for better performance.
Changed
renewalPricefield is optional whenincludeRenewalPrice=false.- Default pagination for List Domains changed from 1000 to 250.
- Removed access restriction on
GET /core/v1/contacts/unverified(now available to all reseller accounts). .atTLD requirement now enforces data acknowledgement.
Fixed
- Create Transfer: Block transfers for domains registered less than 60 days; returns
409 Conflictwith clearmessageanddetails.
Changed
- Webhook documentation: standardized response code capitalization from
4xx/5xxto4XX/5XX.
Fixed
- Create Domain: Now correctly honors
privacyEnabled=falseinstead of overriding with account default when provided.
Fixed
- Get Specific TLD Requirements: Clarified that punycode is expected (not URL-encoded params).
Added
- Contact model: Added verification status fields.
- Create Domain: Returns
451 Unavailable for Legal Reasonswhere restricted by law. - Create Domain: Returns detailed validation errors for contact creation failures.
- Webhooks: All webhooks now send
X-NAMECOM-SIGNATUREto verify authenticity.
Fixed
- Contact Verification List: Corrected
createDateandverifyByvalues for some contacts.
Added
- New webhook:
domain.lock.status_changewithregistryStatusesin payload. - New contact verification APIs (account-restricted):
- List Unverified Contacts
- Verify Contact
Changed
- TLD Pricing: Clarified that null pricing indicates unavailability for specific TLD/duration combinations.
- DNS Record Update: Duplicate record DB errors now return
409 Conflictinstead of a generic server error.
Added
- Domain Info: New capabilities returned per TLD:
supportsPrivacyrequiresPreDelegation
Added
- Get Specific TLD Requirements: Added
hsts,minDomainLength,minIdnDomainLength. - Subscribe to Notifications: Documented
409 Conflictresponse when already subscribed. - Zone Check API: Documented existing error responses.
Added
- Download Premium Domain Lists: New account-restricted API endpoint to download premium domain lists.
Added
- Transfers:
GET /transfersandGET /transfers/{id}now include a full list of possible transfer statuses.
Changed
- Transfers: Status field standardized to snake_case; aligned with Domain Transfer Status Change webhook.
Fixed
- Create Domain: Now honors account setting for Automatic Advanced Security for new purchases.
Changed
- Domain Get Pricing: When a pricing category is not available,
purchasePrice,renewalPrice, andtransferPricereturnnullinstead of a422.
Fixed
- Create Transfer: Supports multiple concurrent transfer requests;
429now used solely for rate limiting scenarios. - Pricing error handling: Added
422 Unprocessable Entityfor temporary pricing unavailability across:- Domain Create
- Domain Renew
- Domain Get Pricing
- Domain Get Pricing: Added missing
400 Bad Requestdocumentation for invalid parameters/malformed requests.
Changed
- Error Response Consistency: More descriptive pricing-related error details across domain endpoints.
Fixed
- createDomain: Returns
400 Bad Request(not403 Forbidden) for missing/invalid registration requirements.
Added
- Zone Check API: Fast availability checks via cached zone file data.
- Idempotency: Support for
X-Idempotency-Keyon Create Domain and Purchase Privacy.- Replayed requests respond with header
X-Idempotent-Replay: 1.
- Replayed requests respond with header
- Domain Create docs: Improved examples including IDN domain creation.
Fixed
- TLD Pricing API: Ensured required fields are always present in responses.
- Check Availability: Returns
422 Unprocessable Entitywhen all domains have unsupported TLDs (replacing malformed dual-object JSON).
Changed
- Check Availability: Implementation optimized for speed; no behavioral changes.
- Organization field docs updated due to ICANN policy changes.
429 Rate Limitedresponse in OpenAPI now indicatesmessageis optional.
Changed
- TLD Pricing API:
- Enforced
durationparameter validation. - Filter invalid/unsupported
tlds; if list becomes empty after filtering, return400 Bad Request.
- Enforced
Fixed
- Domain Info: Return empty objects
{}instead of empty arrays[]for relevant parameters.
Added
- Domain Info API: Returns general TLD info and any additional registration requirements; formatted for dynamic form generation.
Changed
- OpenAPI: Adjusted several descriptions to use v3.0-compatible structures (no functional changes).
- Webhook docs: DomainTransferStatusChange updated with list of triggering statuses.
Fixed
- List Domains: Optional filters no longer cause
500 Internal Server Erroror incorrect result sets; filters are applied reliably.
Fixed
- Create Domain: Missing required contact phone number returns
400 Bad Requestinstead of500. - Validation Enforcement:
- Contact
phoneandfaxfields strictly validate E.164 format (^\+[1-9]\d{7,14}$); examples updated. - All email fields validated per RFC 822
addr-spec(with common practical exceptions). - Appropriate enums added; empty strings rejected for fields like
first_name.
- Contact
Fixed
- Authentication failures return
401 Unauthorizedinstead of500. - Pagination:
perPage=0now defaults toperPage=1000instead of returning500.
Fixed
- Create Transfer: Intermittent
500replaced with409 Conflictwhen a transfer is already in process.- Message:
A transfer is already processing for this domain.
- Message:
name.com is launching a new Core API — a modern, RESTful API for managing domains, DNS records, and related services. It is the successor to the legacy v4 API.
Changed
- Documentation format upgraded to OpenAPI 3.1 for better tooling and interactivity.
- Internal implementation rebuilt for faster iteration, better error handling, and consistent endpoint behavior.
- Error messaging:
- Authentication errors now return
401 Unauthorized(previously conflated with403 Forbiddenwhich is now reserved for actual permission issues). - Insufficient account credit returns
402 Payment Requiredinstead of500.
- Authentication errors now return
- Consistent default values in responses (e.g.,
false,0,"") instead of omitting them. - Correct
Content-Typeheaders for JSON responses (application/json). Content-Type: application/jsonstrictly required for allPUT,POST, andPATCHrequests (including body-lessPOSTactions due to server behavior).
Removed
- SearchStream endpoint (may return in a future version with a revised implementation).
Added
- Domain Update endpoint for autorenew, WHOIS Privacy, and locking. See DomainUpdate docs.