# Register Domains (https://developer.godaddy.com/en/docs/references/rest/domains/v2/register-domains)

***

title: Register Domains
description: >-
Register new domains, retrieve registration schemas by TLD, and validate
registration requests.
full: true
\_openapi:
toc: \[]
structuredData:
headings: \[]
contents:

* content: >-
  Registers the specified domain. Requires a consent object with TLD
  agreement keys from the schema endpoint. Charges the account's billing
  method. Returns 202 - poll GET .../actions/REGISTER until the action
  reaches a terminal state.
* content: >-
  Returns the JSON schema for the registration request body for the
  specified TLD. Fetch before registering to identify required fields
  and TLD-specific constraints.
* content: >-
  Validates the registration request body against the TLD schema with no
  side effects and no charge. Returns 204 on success.

***

## POST /v2/customers/{customerId}/domains/register

Purchase and register the specified Domain

Registers the specified domain. Requires a consent object with TLD agreement keys from the schema endpoint. Charges the account's billing method. Returns 202 - poll GET .../actions/REGISTER until the action reaches a terminal state.

### Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `customerId` | string | yes | The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of. |

### Header parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `X-Request-Id` | string | no | A client provided identifier for tracking this request. |

### Request body (required)

An instance document expected to match the JSON schema returned by `./schema/{tld}`

Content-Type: `application/json`

Schema:

- object
  - `domain` (required): string <domain> — For internationalized domain names with non-ascii characters, the domain name is converted to punycode before format and pattern validation rules are checked
  - `consent` (required): object
      - `agreementKeys` (required): array — Unique identifiers of the legal agreements to which the end-user has agreed, as returned from the/domains/agreements endpoint
          - items:
      - `price` (required): integer <currency-micro-unit> — Price of the domain excluding taxes or fees. Please use GET /v1/domains/available to retrieve the price and currency for the domain
      - `currency` (required): string <iso-currency-code> — Currency in which the `price` is listed
      - `registryPremiumPricing`: boolean — Only required for hosted registrar if domain is premium. If true indicates that the `price` and `currency` listed are the registry premium price and currency for the domain
      - `agreedBy` (required): string — Originating client IP address of the end-user's computer when they consented to these legal agreements
      - `agreedAt` (required): string <iso-datetime> — Timestamp indicating when the end-user consented to these legal agreements
      - `claimToken`: string — The trademark claim token, only needed if the domain has an active trademark claim
  - `period`: integer <integer-positive>
  - `nameServers`: array
      - items:
  - `renewAuto`: boolean
  - `privacy`: boolean
  - `contacts`: object
      - `admin`: object
          - `encoding` (required): string — The encoding of the contact data
            - enum: "ASCII", "UTF-8"
          - `nameFirst` (required): string <person-name>
          - `nameMiddle`: string
          - `nameLast` (required): string <person-name>
          - `organization`: string <organization-name>
          - `jobTitle`: string
          - `email` (required): string <email>
          - `phone` (required): string <phone>
          - `fax`: string <phone>
          - `addressMailing` (required): object
              - `address1` (required): string <street-address>
              - `address2`: string <street-address2>
              - `city` (required): string <city-name>
              - `country` (required): string <iso-country-code> — Two-letter ISO country code to be used as a hint for target region.
                - enum: "AC", "AD", "AE", "AF", "AG", "AI", "AL", "AM", "AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BM", "BN", "BO", "BQ", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CA", "CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", "CV", "CW", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG", "EH", "ER", "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", "GA", "GB", "GD", "GE", "GF", "GG", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IM", "IN", "IO", "IQ", "IS", "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM", "KN", "KR", "KV", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS", "LT", "LU", "LV", "LY", "MA", "MC", "MD", "ME", "MG", "MH", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW", "SA", "SB", "SC", "SE", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SR", "ST", "SV", "SX", "SZ", "TC", "TD", "TF", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TO", "TP", "TR", "TT", "TV", "TW", "TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", "WS", "YE", "YT", "ZA", "ZM", "ZW"
              - `postalCode` (required): string <postal-code> — Postal or zip code
              - `state` (required): string <state-province-territory> — State or province or territory
          - `metadata`: object — The contact eligibility data fields as specified by GET /v2/customers/{customerId}/domains/contacts/schema/{tld}
      - `adminId`: string — Unique identifier of the contact that the user wants to use for the domain admin contact. This can be specified instead of the `admin` property.
      - `billing`: object
          - `encoding` (required): string — The encoding of the contact data
            - enum: "ASCII", "UTF-8"
          - `nameFirst` (required): string <person-name>
          - `nameMiddle`: string
          - `nameLast` (required): string <person-name>
          - `organization`: string <organization-name>
          - `jobTitle`: string
          - `email` (required): string <email>
          - `phone` (required): string <phone>
          - `fax`: string <phone>
          - `addressMailing` (required): object
          - `metadata`: object — The contact eligibility data fields as specified by GET /v2/customers/{customerId}/domains/contacts/schema/{tld}
      - `billingId`: string — Unique identifier of the contact that the user wants to use for the domain billing contact. This can be specified instead of the `billing` property.
      - `registrant`: object
          - `encoding` (required): string — The encoding of the contact data
            - enum: "ASCII", "UTF-8"
          - `nameFirst` (required): string <person-name>
          - `nameMiddle`: string
          - `nameLast` (required): string <person-name>
          - `organization`: string <organization-name>
          - `jobTitle`: string
          - `email` (required): string <email>
          - `phone` (required): string <phone>
          - `fax`: string <phone>
          - `addressMailing` (required): object
          - `metadata`: object — The contact eligibility data fields as specified by GET /v2/customers/{customerId}/domains/contacts/schema/{tld}
      - `registrantId`: string — Unique identifier of the contact that the user wants to use for the domain registrant contact. This can be specified instead of the `registrant` property.
      - `tech`: object
          - `encoding` (required): string — The encoding of the contact data
            - enum: "ASCII", "UTF-8"
          - `nameFirst` (required): string <person-name>
          - `nameMiddle`: string
          - `nameLast` (required): string <person-name>
          - `organization`: string <organization-name>
          - `jobTitle`: string
          - `email` (required): string <email>
          - `phone` (required): string <phone>
          - `fax`: string <phone>
          - `addressMailing` (required): object
          - `metadata`: object — The contact eligibility data fields as specified by GET /v2/customers/{customerId}/domains/contacts/schema/{tld}
      - `techId`: string — Unique identifier of the contact that the user wants to use for the domain tech contact. This can be specified instead of the `tech` property.
  - `metadata`: object — The domain eligibility data fields as specified by GET /v2/customers/{customerId}/domains/register/schema/{tld}

### Responses

**202** — Request Accepted. You may use GET /v2/customers/{customerId}/domains/{domain}/actions/REGISTER to poll status

**400** — Request was malformed

Content-Type: `application/json`

Schema:

- object
  - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
  - `fields`: array — List of the specific fields, and the errors found with their contents
      - items:
          - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
          - `message`: string — Human-readable, English description of the problem with the contents of the field
          - `path` (required): string <json-path> — JSONPath referring to a field containing an error, or a field that refers to an
          - `pathRelated`: string <json-path> — JSONPath referring to a field containing an error, which is referenced by `path`
  - `message`: string — Human-readable, English description of the error

**401** — Authentication info not sent or invalid

Content-Type: `application/json`

Schema:

- object
  - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
  - `fields`: array — List of the specific fields, and the errors found with their contents
      - items:
          - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
          - `message`: string — Human-readable, English description of the problem with the contents of the field
          - `path` (required): string <json-path> — JSONPath referring to a field containing an error, or a field that refers to an
          - `pathRelated`: string <json-path> — JSONPath referring to a field containing an error, which is referenced by `path`
  - `message`: string — Human-readable, English description of the error

**403** — Authenticated user is not allowed access

Content-Type: `application/json`

Schema:

- object
  - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
  - `fields`: array — List of the specific fields, and the errors found with their contents
      - items:
          - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
          - `message`: string — Human-readable, English description of the problem with the contents of the field
          - `path` (required): string <json-path> — JSONPath referring to a field containing an error, or a field that refers to an
          - `pathRelated`: string <json-path> — JSONPath referring to a field containing an error, which is referenced by `path`
  - `message`: string — Human-readable, English description of the error

**409** — There is already a similar action processing

Content-Type: `application/json`

Schema:

- object
  - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
  - `fields`: array — List of the specific fields, and the errors found with their contents
      - items:
          - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
          - `message`: string — Human-readable, English description of the problem with the contents of the field
          - `path` (required): string <json-path> — JSONPath referring to a field containing an error, or a field that refers to an
          - `pathRelated`: string <json-path> — JSONPath referring to a field containing an error, which is referenced by `path`
  - `message`: string — Human-readable, English description of the error

**422** — Based on restrictions declared in JSON schema returned by `./schema/{tld}`

Content-Type: `application/json`

Schema:

- object
  - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
  - `fields`: array — List of the specific fields, and the errors found with their contents
      - items:
          - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
          - `message`: string — Human-readable, English description of the problem with the contents of the field
          - `path` (required): string <json-path> — JSONPath referring to a field containing an error, or a field that refers to an
          - `pathRelated`: string <json-path> — JSONPath referring to a field containing an error, which is referenced by `path`
  - `message`: string — Human-readable, English description of the error

**429** — Too many requests received within interval

Content-Type: `application/json`

Schema:

- object
  - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
  - `fields`: array — List of the specific fields, and the errors found with their contents
      - items:
          - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
          - `message`: string — Human-readable, English description of the problem with the contents of the field
          - `path` (required): string <json-path> — JSONPath referring to a field containing an error, or a field that refers to an
          - `pathRelated`: string <json-path> — JSONPath referring to a field containing an error, which is referenced by `path`
  - `message`: string — Human-readable, English description of the error
  - `retryAfterSec` (required): integer <integer-positive> — Number of seconds to wait before attempting a similar request

**500** — Internal server error

Content-Type: `application/json`

Schema:

- object
  - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
  - `fields`: array — List of the specific fields, and the errors found with their contents
      - items:
          - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
          - `message`: string — Human-readable, English description of the problem with the contents of the field
          - `path` (required): string <json-path> — JSONPath referring to a field containing an error, or a field that refers to an
          - `pathRelated`: string <json-path> — JSONPath referring to a field containing an error, which is referenced by `path`
  - `message`: string — Human-readable, English description of the error

**Security:** requires `bearerAuth`.

## GET /v2/customers/{customerId}/domains/register/schema/{tld}

Retrieve the schema to be submitted when registering a Domain for the specified TLD

Returns the JSON schema for the registration request body for the specified TLD. Fetch before registering to identify required fields and TLD-specific constraints.

### Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `customerId` | string | yes | The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of. |
| `tld` | string | yes | The Top-Level Domain whose schema should be retrieved |

### Header parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `X-Request-Id` | string | no | A client provided identifier for tracking this request. |

### Responses

**200** — Request was successful

Content-Type: `application/json`

Schema:

- object
  - `id` (required): string
  - `models` (required): array
      - items:
  - `properties` (required): array
      - items:
          - `defaultValue`: string
          - `format`: string
          - `items`: array
              - items:
                  - `format`: string
                  - `pattern`: string
                  - `type` (required): string
          - `maxItems`: integer
          - `maximum`: integer
          - `minItems`: integer
          - `minimum`: integer
          - `pattern`: string
          - `required` (required): boolean
          - `type` (required): string
  - `required` (required): array
      - items:
  - `type`: unknown

**401** — Authentication info not sent or invalid

Content-Type: `application/json`

Schema:

- object
  - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
  - `fields`: array — List of the specific fields, and the errors found with their contents
      - items:
          - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
          - `message`: string — Human-readable, English description of the problem with the contents of the field
          - `path` (required): string <json-path> — JSONPath referring to a field containing an error, or a field that refers to an
          - `pathRelated`: string <json-path> — JSONPath referring to a field containing an error, which is referenced by `path`
  - `message`: string — Human-readable, English description of the error

**403** — Authenticated user is not allowed access

Content-Type: `application/json`

Schema:

- object
  - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
  - `fields`: array — List of the specific fields, and the errors found with their contents
      - items:
          - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
          - `message`: string — Human-readable, English description of the problem with the contents of the field
          - `path` (required): string <json-path> — JSONPath referring to a field containing an error, or a field that refers to an
          - `pathRelated`: string <json-path> — JSONPath referring to a field containing an error, which is referenced by `path`
  - `message`: string — Human-readable, English description of the error

**404** — The tld does not exist

Content-Type: `application/json`

Schema:

- object
  - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
  - `fields`: array — List of the specific fields, and the errors found with their contents
      - items:
          - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
          - `message`: string — Human-readable, English description of the problem with the contents of the field
          - `path` (required): string <json-path> — JSONPath referring to a field containing an error, or a field that refers to an
          - `pathRelated`: string <json-path> — JSONPath referring to a field containing an error, which is referenced by `path`
  - `message`: string — Human-readable, English description of the error

**422** — `tld` must be specified

Content-Type: `application/json`

Schema:

- object
  - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
  - `fields`: array — List of the specific fields, and the errors found with their contents
      - items:
          - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
          - `message`: string — Human-readable, English description of the problem with the contents of the field
          - `path` (required): string <json-path> — JSONPath referring to a field containing an error, or a field that refers to an
          - `pathRelated`: string <json-path> — JSONPath referring to a field containing an error, which is referenced by `path`
  - `message`: string — Human-readable, English description of the error

**429** — Too many requests received within interval

Content-Type: `application/json`

Schema:

- object
  - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
  - `fields`: array — List of the specific fields, and the errors found with their contents
      - items:
          - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
          - `message`: string — Human-readable, English description of the problem with the contents of the field
          - `path` (required): string <json-path> — JSONPath referring to a field containing an error, or a field that refers to an
          - `pathRelated`: string <json-path> — JSONPath referring to a field containing an error, which is referenced by `path`
  - `message`: string — Human-readable, English description of the error
  - `retryAfterSec` (required): integer <integer-positive> — Number of seconds to wait before attempting a similar request

**500** — Internal server error

Content-Type: `application/json`

Schema:

- object
  - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
  - `fields`: array — List of the specific fields, and the errors found with their contents
      - items:
          - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
          - `message`: string — Human-readable, English description of the problem with the contents of the field
          - `path` (required): string <json-path> — JSONPath referring to a field containing an error, or a field that refers to an
          - `pathRelated`: string <json-path> — JSONPath referring to a field containing an error, which is referenced by `path`
  - `message`: string — Human-readable, English description of the error

**Security:** requires `bearerAuth`.

## POST /v2/customers/{customerId}/domains/register/validate

Validate the request body using the Domain Registration Schema for the specified TLD

Validates the registration request body against the TLD schema with no side effects and no charge. Returns 204 on success.

### Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `customerId` | string | yes | The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of. |

### Header parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `X-Request-Id` | string | no | A client provided identifier for tracking this request. |

### Request body (required)

An instance document expected to match the JSON schema returned by `./schema/{tld}`

Content-Type: `application/json`

Schema:

- object
  - `domain` (required): string <domain> — For internationalized domain names with non-ascii characters, the domain name is converted to punycode before format and pattern validation rules are checked
  - `consent` (required): object
      - `agreementKeys` (required): array — Unique identifiers of the legal agreements to which the end-user has agreed, as returned from the/domains/agreements endpoint
          - items:
      - `price` (required): integer <currency-micro-unit> — Price of the domain excluding taxes or fees. Please use GET /v1/domains/available to retrieve the price and currency for the domain
      - `currency` (required): string <iso-currency-code> — Currency in which the `price` is listed
      - `registryPremiumPricing`: boolean — Only required for hosted registrar if domain is premium. If true indicates that the `price` and `currency` listed are the registry premium price and currency for the domain
      - `agreedBy` (required): string — Originating client IP address of the end-user's computer when they consented to these legal agreements
      - `agreedAt` (required): string <iso-datetime> — Timestamp indicating when the end-user consented to these legal agreements
      - `claimToken`: string — The trademark claim token, only needed if the domain has an active trademark claim
  - `period`: integer <integer-positive>
  - `nameServers`: array
      - items:
  - `renewAuto`: boolean
  - `privacy`: boolean
  - `contacts`: object
      - `admin`: object
          - `encoding` (required): string — The encoding of the contact data
            - enum: "ASCII", "UTF-8"
          - `nameFirst` (required): string <person-name>
          - `nameMiddle`: string
          - `nameLast` (required): string <person-name>
          - `organization`: string <organization-name>
          - `jobTitle`: string
          - `email` (required): string <email>
          - `phone` (required): string <phone>
          - `fax`: string <phone>
          - `addressMailing` (required): object
              - `address1` (required): string <street-address>
              - `address2`: string <street-address2>
              - `city` (required): string <city-name>
              - `country` (required): string <iso-country-code> — Two-letter ISO country code to be used as a hint for target region.
                - enum: "AC", "AD", "AE", "AF", "AG", "AI", "AL", "AM", "AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BM", "BN", "BO", "BQ", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CA", "CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", "CV", "CW", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG", "EH", "ER", "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", "GA", "GB", "GD", "GE", "GF", "GG", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IM", "IN", "IO", "IQ", "IS", "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM", "KN", "KR", "KV", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS", "LT", "LU", "LV", "LY", "MA", "MC", "MD", "ME", "MG", "MH", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW", "SA", "SB", "SC", "SE", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SR", "ST", "SV", "SX", "SZ", "TC", "TD", "TF", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TO", "TP", "TR", "TT", "TV", "TW", "TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", "WS", "YE", "YT", "ZA", "ZM", "ZW"
              - `postalCode` (required): string <postal-code> — Postal or zip code
              - `state` (required): string <state-province-territory> — State or province or territory
          - `metadata`: object — The contact eligibility data fields as specified by GET /v2/customers/{customerId}/domains/contacts/schema/{tld}
      - `adminId`: string — Unique identifier of the contact that the user wants to use for the domain admin contact. This can be specified instead of the `admin` property.
      - `billing`: object
          - `encoding` (required): string — The encoding of the contact data
            - enum: "ASCII", "UTF-8"
          - `nameFirst` (required): string <person-name>
          - `nameMiddle`: string
          - `nameLast` (required): string <person-name>
          - `organization`: string <organization-name>
          - `jobTitle`: string
          - `email` (required): string <email>
          - `phone` (required): string <phone>
          - `fax`: string <phone>
          - `addressMailing` (required): object
          - `metadata`: object — The contact eligibility data fields as specified by GET /v2/customers/{customerId}/domains/contacts/schema/{tld}
      - `billingId`: string — Unique identifier of the contact that the user wants to use for the domain billing contact. This can be specified instead of the `billing` property.
      - `registrant`: object
          - `encoding` (required): string — The encoding of the contact data
            - enum: "ASCII", "UTF-8"
          - `nameFirst` (required): string <person-name>
          - `nameMiddle`: string
          - `nameLast` (required): string <person-name>
          - `organization`: string <organization-name>
          - `jobTitle`: string
          - `email` (required): string <email>
          - `phone` (required): string <phone>
          - `fax`: string <phone>
          - `addressMailing` (required): object
          - `metadata`: object — The contact eligibility data fields as specified by GET /v2/customers/{customerId}/domains/contacts/schema/{tld}
      - `registrantId`: string — Unique identifier of the contact that the user wants to use for the domain registrant contact. This can be specified instead of the `registrant` property.
      - `tech`: object
          - `encoding` (required): string — The encoding of the contact data
            - enum: "ASCII", "UTF-8"
          - `nameFirst` (required): string <person-name>
          - `nameMiddle`: string
          - `nameLast` (required): string <person-name>
          - `organization`: string <organization-name>
          - `jobTitle`: string
          - `email` (required): string <email>
          - `phone` (required): string <phone>
          - `fax`: string <phone>
          - `addressMailing` (required): object
          - `metadata`: object — The contact eligibility data fields as specified by GET /v2/customers/{customerId}/domains/contacts/schema/{tld}
      - `techId`: string — Unique identifier of the contact that the user wants to use for the domain tech contact. This can be specified instead of the `tech` property.
  - `metadata`: object — The domain eligibility data fields as specified by GET /v2/customers/{customerId}/domains/register/schema/{tld}

### Responses

**204** — Request was successful

**400** — Request was malformed

Content-Type: `application/json`

Schema:

- object
  - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
  - `fields`: array — List of the specific fields, and the errors found with their contents
      - items:
          - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
          - `message`: string — Human-readable, English description of the problem with the contents of the field
          - `path` (required): string <json-path> — JSONPath referring to a field containing an error, or a field that refers to an
          - `pathRelated`: string <json-path> — JSONPath referring to a field containing an error, which is referenced by `path`
  - `message`: string — Human-readable, English description of the error

**401** — Authentication info not sent or invalid

Content-Type: `application/json`

Schema:

- object
  - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
  - `fields`: array — List of the specific fields, and the errors found with their contents
      - items:
          - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
          - `message`: string — Human-readable, English description of the problem with the contents of the field
          - `path` (required): string <json-path> — JSONPath referring to a field containing an error, or a field that refers to an
          - `pathRelated`: string <json-path> — JSONPath referring to a field containing an error, which is referenced by `path`
  - `message`: string — Human-readable, English description of the error

**403** — Authenticated user is not allowed access

Content-Type: `application/json`

Schema:

- object
  - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
  - `fields`: array — List of the specific fields, and the errors found with their contents
      - items:
          - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
          - `message`: string — Human-readable, English description of the problem with the contents of the field
          - `path` (required): string <json-path> — JSONPath referring to a field containing an error, or a field that refers to an
          - `pathRelated`: string <json-path> — JSONPath referring to a field containing an error, which is referenced by `path`
  - `message`: string — Human-readable, English description of the error

**404** — The customer does not exist

Content-Type: `application/json`

Schema:

- object
  - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
  - `fields`: array — List of the specific fields, and the errors found with their contents
      - items:
          - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
          - `message`: string — Human-readable, English description of the problem with the contents of the field
          - `path` (required): string <json-path> — JSONPath referring to a field containing an error, or a field that refers to an
          - `pathRelated`: string <json-path> — JSONPath referring to a field containing an error, which is referenced by `path`
  - `message`: string — Human-readable, English description of the error

**422** — Based on restrictions declared in JSON schema returned by `./schema/{tld}`

Content-Type: `application/json`

Schema:

- object
  - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
  - `fields`: array — List of the specific fields, and the errors found with their contents
      - items:
          - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
          - `message`: string — Human-readable, English description of the problem with the contents of the field
          - `path` (required): string <json-path> — JSONPath referring to a field containing an error, or a field that refers to an
          - `pathRelated`: string <json-path> — JSONPath referring to a field containing an error, which is referenced by `path`
  - `message`: string — Human-readable, English description of the error

**429** — Too many requests received within interval

Content-Type: `application/json`

Schema:

- object
  - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
  - `fields`: array — List of the specific fields, and the errors found with their contents
      - items:
          - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
          - `message`: string — Human-readable, English description of the problem with the contents of the field
          - `path` (required): string <json-path> — JSONPath referring to a field containing an error, or a field that refers to an
          - `pathRelated`: string <json-path> — JSONPath referring to a field containing an error, which is referenced by `path`
  - `message`: string — Human-readable, English description of the error
  - `retryAfterSec` (required): integer <integer-positive> — Number of seconds to wait before attempting a similar request

**500** — Internal server error

Content-Type: `application/json`

Schema:

- object
  - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
  - `fields`: array — List of the specific fields, and the errors found with their contents
      - items:
          - `code` (required): string <constant> — Short identifier for the error, suitable for indicating the specific error within client code
          - `message`: string — Human-readable, English description of the problem with the contents of the field
          - `path` (required): string <json-path> — JSONPath referring to a field containing an error, or a field that refers to an
          - `pathRelated`: string <json-path> — JSONPath referring to a field containing an error, which is referenced by `path`
  - `message`: string — Human-readable, English description of the error

**Security:** requires `bearerAuth`.
