# Create Domain Registers a new domain under your account. You must provide the at a bare minimum to register. For premium or special-priced domains, the purchase_price must also be included to confirm cost. This endpoint is commonly used to programmatically onboard new domains through user signup flows or checkout experiences. If no contacts are passed in this request, the default contacts for your name.com account will be used. ### Best Practices For Domain Creates In general, you should check that a domain is available prior to attempting to purchase a domain. You can use either the checkAvailability endpoint, or the Search endpoint to confirm that a domain is purchasable. #### Important Note on Dropcatching and Abuse Prevention _The createDomain endpoint is designed for standard domain registrations and is not intended for automated dropcatching (i.e., mass or high-frequency attempts to register domains the moment they become available after expiration). The use of drop-catching tools or services to acquire expired domains is strictly prohibited. All domain acquisitions must go through approved channels to ensure fair and transparent access._ #### Contact Verification When a new domain registration is created and a contact is submitted, name.com may need to validate the contact's email address in accordance with ICANN policy. This validation involves sending an email to the provided address, prompting the recipient to click a link to verify their email address. Endpoint: POST /core/v1/domains Version: 1.3.1 Security: BasicAuth ## Header parameters: - `X-Idempotency-Key` (string) A unique string (e.g., a UUID v4) to make the request idempotent. This key ensures that if the request is retried, the operation will not be performed multiple times. Subsequent requests with the same key will return the original result. Example: "083910ef-04e4-4bd1-a0bf-3737fe005ca8" ## Request fields (application/json): - `domain` (object, required) The payload to be sent for when making a request to purchase a domain. - `domain.domainName` (string, required) The punycode-encoded value of the domain name. Example: "example.com" - `domain.autorenewEnabled` (boolean) Indicates whether the domain is set to renew automatically before expiration. Example: true - `domain.locked` (boolean) Indicates if the domain is locked, preventing transfers to another registrar. Example: true - `domain.privacyEnabled` (boolean) Indicates if Whois Privacy is enabled for this domain. Example: true - `domain.contacts` (object) Contacts stores the contact information for the roles related to domains. - `domain.contacts.admin` (object) Contact contains all relevant contact data for a domain registrant. - `domain.contacts.admin.firstName` (string, required) First name of the contact. Example: "John" - `domain.contacts.admin.lastName` (string, required) Last name of the contact. Example: "Doe" - `domain.contacts.admin.companyName` (string,null) Company name of the contact. Leave blank if the contact is an individual, as some registries may assume it is a corporate entity otherwise. Example: "Example Inc." - `domain.contacts.admin.address1` (string, required) The first line of the contact's address. Example: "123 Main Street" - `domain.contacts.admin.address2` (string,null) The second line of the contact's address (optional). Example: "Suite 400" - `domain.contacts.admin.city` (string, required) City of the contact's address. Example: "New York" - `domain.contacts.admin.state` (string, required) State or Province of the contact's address. Example: "NY" - `domain.contacts.admin.zip` (string, required) ZIP or Postal Code of the contact's address. Example: "10001" - `domain.contacts.admin.country` (string, required) Country code for the contact's address. Must be an ISO 3166-1 alpha-2 country code. Example: "US" - `domain.contacts.admin.email` (string, required) Email address of the contact. Must be a valid email format. The validation is performed against the syntax in [RFC 822](https://datatracker.ietf.org/doc/html/rfc822) Example: "john.doe@example.com" - `domain.contacts.admin.phone` (string, required) Phone number of the contact. Should follow the E.164 international format: "+[country code][number]". Example: "+15551234567" - `domain.contacts.admin.fax` (string,null) Fax number of the contact. Should follow the E.164 international format: "+[country code][number]". Example: "+15557654321" - `domain.contacts.billing` (object) Contact contains all relevant contact data for a domain registrant. - `domain.contacts.registrant` (object) Contact contains all relevant contact data for a domain registrant. - `domain.contacts.registrant.companyName` (string,null) Company name of the contact. Leave blank if the contact is an individual. Please be advised that ICANN policy links the "Company Name" field (Organization) in your domain's contact details to its legal ownership. If this field contains information, the listed organization is considered the legal "Registered Name Holder" (domain owner). Example: "Example Inc." - `domain.contacts.tech` (object) Contact contains all relevant contact data for a domain registrant. - `domain.nameservers` (array) The list of nameservers assigned to this domain. If unspecified, it defaults to the account's default nameservers. Example: ["ns1.example.com","ns2.example.com"] - `purchasePrice` (number) PurchasePrice is the price in USD for purchasing this domain for the minimum time period (typically 1 year). PurchasePrice is required if purchaseType is not "registration" or if it is a premium domain. If privacyEnabled is set, the regular price for Whois Privacy protection will be added automatically. If VAT tax applies, it will also be added automatically. - `purchaseType` (string) PurchaseType defaults to "registration" but should be copied from the result of either a [Search](#operation/Search) or [checkAvailability](#operation/CheckAvailability) request. - `tldRequirements` (object) TLDRequirements is a way to pass additional data that is required by some registries. You can check before registration by using the [Domain Info](#operation/GetRequirement) API. As these requirements vary wildly between registries and TLDs, we are not attempting to document them here. #### IDN Domains This parameter is required for registering domains that contain non-ASCII characters. The value should be the specific code for the character set, such as for Spanish, or for Cyrillic. These abbreviations can vary between TLDs, and it is highly recommended that you use [Domain Info](#operation/GetRequirement) API to ensure that the TLD allows for the specific IDN table, as well as the correct abbreviation. - `years` (integer) Years specifies how many years to register the domain for. Years defaults to the minimum time period (typically 1 year) if not passed and cannot be more than 10. Some TLDs default to longer initial periods (e.g. .AI requires a 2 year registration). If passing purchasePrice make sure to adjust it accordingly. Example: 1 ## Response 200 fields (application/json): - `domain` (object, required) The response format for a domain. - `domain.domainName` (string, required) The punycode-encoded value of the domain name. Example: "example.com" - `domain.createDate` (string, required) The date and time when the domain was created at the registry. Example: "2023-01-15T14:30:00Z" - `domain.expireDate` (string, required) The date and time when the domain will expire. Example: "2025-01-15T14:30:00Z" - `domain.autorenewEnabled` (boolean, required) Indicates whether the domain is set to renew automatically before expiration. Example: true - `domain.locked` (boolean, required) Indicates if the domain is locked, preventing transfers to another registrar. Example: true - `domain.privacyEnabled` (boolean, required) Indicates if Whois Privacy is enabled for this domain. Example: true - `domain.contacts` (object, required) Contacts stores the contact information for the roles related to domains. - `domain.contacts.admin` (object) Contact contains all relevant contact data for a domain registrant. - `domain.contacts.admin.firstName` (string, required) First name of the contact. Example: "John" - `domain.contacts.admin.lastName` (string, required) Last name of the contact. Example: "Doe" - `domain.contacts.admin.companyName` (string,null) Company name of the contact. Leave blank if the contact is an individual, as some registries may assume it is a corporate entity otherwise. Example: "Example Inc." - `domain.contacts.admin.address1` (string, required) The first line of the contact's address. Example: "123 Main Street" - `domain.contacts.admin.address2` (string,null) The second line of the contact's address (optional). Example: "Suite 400" - `domain.contacts.admin.city` (string, required) City of the contact's address. Example: "New York" - `domain.contacts.admin.state` (string, required) State or Province of the contact's address. Example: "NY" - `domain.contacts.admin.zip` (string, required) ZIP or Postal Code of the contact's address. Example: "10001" - `domain.contacts.admin.country` (string, required) Country code for the contact's address. Must be an ISO 3166-1 alpha-2 country code. Example: "US" - `domain.contacts.admin.email` (string, required) Email address of the contact. Must be a valid email format. The validation is performed against the syntax in [RFC 822](https://datatracker.ietf.org/doc/html/rfc822) Example: "john.doe@example.com" - `domain.contacts.admin.phone` (string, required) Phone number of the contact. Should follow the E.164 international format: "+[country code][number]". Example: "+15551234567" - `domain.contacts.admin.fax` (string,null) Fax number of the contact. Should follow the E.164 international format: "+[country code][number]". Example: "+15557654321" - `domain.contacts.billing` (object) Contact contains all relevant contact data for a domain registrant. - `domain.contacts.registrant` (object) Contact contains all relevant contact data for a domain registrant. - `domain.contacts.registrant.companyName` (string,null) Company name of the contact. Leave blank if the contact is an individual. Please be advised that ICANN policy links the "Company Name" field (Organization) in your domain's contact details to its legal ownership. If this field contains information, the listed organization is considered the legal "Registered Name Holder" (domain owner). Example: "Example Inc." - `domain.contacts.tech` (object) Contact contains all relevant contact data for a domain registrant. - `domain.nameservers` (array, required) The list of nameservers assigned to this domain. If unspecified, it defaults to the account's default nameservers. Example: ["ns1.example.com","ns2.example.com"] - `domain.renewalPrice` (number, required) The cost to renew the domain. This may be required for the RenewDomain operation. Example: 12.99 - `order` (integer, required) Order is an identifier for this purchase. - `totalPaid` (number, required) TotalPaid is the total amount paid, including VAT and Whois privacy protection. ## Response 400 fields (application/json): - `message` (string) A human-readable message providing more details about the error Example: "Bad Request" - `details` (string,null) Additional context or information about the error Example: "'domainName' cannot be null" ## Response 401 fields (application/json): - `message` (string, required) A human-readable message providing more details about the error Example: "Unauthorized" ## Response 402 fields (application/json): - `message` (string, required) A human-readable message providing more details about the error Example: "Payment failed" - `details` (string,null) Additional context or information about the error Example: "Insufficient Funds" ## Response 404 fields (application/json): - `message` (string, required) A human-readable message providing more details about the error Example: "Not Found" - `details` (string,null) Additional context or information about the error Example: "The requested domain does not exist." ## Response 409 fields (application/json): - `message` (string) Example: "Idempotency key has been reused for a different request" ## Response 415 fields (application/json): - `message` (string, required) A human-readable message providing more details about the error Example: "The 'Content-Type' header must be 'application/json' for this request." ## Response 429 fields (application/json): - `message` (string) A human-readable message providing more details about the error Example: "Rate Limit Exceeded" ## Response 500 fields (application/json): - `message` (string, required) A human-readable message providing more details about the error. Example: "Internal Server Error" - `details` (string,null) Additional context or information about the error. Example: "Something went wrong." ## Response 501 fields (application/json): - `message` (string, required) A human-readable message providing more details about the error Example: "Unimplemented" - `details` (string,null) Additional context or information about the error Example: "Requested feature is not yet implemented"