Added
Contact Verification:- Added new webhook:
contact.verification.status_changethat fires when a contact verification status changes. - Added
POST /core/v1/contacts/verify/{verificationId}:resendendpoint to resend the verification email for a pending verification record.
Changed
- Blocked TLD Filtering: API endpoints now reject or filter out all .in TLDs (including co.in, firm.in, gen.in, ind.in, net.in, org.in) as these are not supported in the Reseller API. API requests using unsupported TLDs will return
422 Unprocessable Entityerrors or be excluded from results.
Fixed
- Requirements: Both original and V2 Requirements endpoints now return
422 Unprocessable Entitywhen blocked or unsupported tlds are requested instead of500 Internal Server Error.
Changed
- No functional changes. Schema updates to ensure no broken URLs between docs pages due to doumentation restructuring.
Added
- Domain Info v2 API: New
GET /core/v1/domaininfo/requirementsV2/{tld}endpoint that returns TLD registration requirements in JSON Schema Draft-07 format.- Automatic Form Generation: The JSON Schema Draft-07 format enables direct integration with form generation libraries (e.g., react-jsonschema-form, jsonforms, Form.io), allowing developers to automatically generate dynamic registration forms without manual schema parsing or custom form logic.
- Conditional Validation: The schema uses
if/then/elsestructures to express complex conditional requirements (e.g., “if entity type is X, then require field Y”), making it easier to understand and implement TLD-specific registration rules that vary based on user selections. - Standardized Validation: JSON Schema Draft-07 is a widely-supported standard, enabling developers to leverage existing validation libraries and tooling instead of building custom validation logic for each TLD’s unique requirements.
- Structured Data: The schema clearly separates TLD information (
tldInfo), contact requirements (contacts), and TLD-specific fields (tldRequirements), providing a consistent structure that simplifies form rendering and data collection workflows.
Fixed
Get Order The Get Order API was incorrectly returning the response object wrapped in an extraneousorder object. This has been fixed, and the response now matches the specification.Added
- Refunds Endpoint: New
POST /core/v1/refundendpoint to delete eligible domains and privacy products during the Add Grace Period (AGP) and automatically issue refunds for the associated order items.- Accepts
orderIdandorderItemIdsarray in the request body - Supports
registrationandwhois_privacyproduct types only - Includes idempotency support via
X-Idempotency-Keyheader for safe request retries - Returns detailed refund results including individual item status and total refund amount
- Refunds are issued to the original payment method on file, with fallback to account credit
- Access Restriction: This endpoint is only available to select approved large API resellers. Contact name.com support to request access.
- Accepts
- OrderItem
isRefundableProperty: New boolean field onOrderItemindicating whether the item is currently eligible for refund through the Refunds endpoint based on name.com’s refund rules. - List Orders Endpoint: Updated request has new optional filters to narrow response by domainName, tld, createDate, type and orderStatus.
Fixed
- Purchase Privacy: Now returns
409 Conflictwhen privacy protection already exists on a domain instead of500 Internal Server Error.
Added
- Domain Transfer Out Status Change Webhook: New
domain.transfer_out.status_changewebhook that fires when a domain transfer out from name.com to another registrar has completed and the domain has been removed from the account.
Changed
- Domain Transfer Status Change Webhook: Clarified that
domain.transfer.status_changerepresents transfer IN to name.com (where name.com is the gaining registrar), and updated webhook descriptions to reflect this.
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.