---
title: "Purchase Privacy"
method: POST
path: "/core/v1/domains/{domainName}:purchasePrivacy"
tags: ["Domains"]
---

# Purchase Privacy

`POST /core/v1/domains/{domainName}:purchasePrivacy`

Adds or renews WHOIS privacy protection for a domain. This is used to ensure personal contact details remain hidden from public WHOIS lookups.  If WHOIS privacy is already enabled, this will extend the protection. If it’s not yet active, this will both purchase and enable the service.  This is a billable action unless covered by a bundled privacy plan.

## Path parameters

- `domainName` string, required

## Headers

- `X-Idempotency-Key` string

## Request body

- DomainsPurchasePrivacyBody — PrivacyRequest passes the domain name as well as the purchase parameters to the PurchasePrivacy function.
  - `purchasePrice` number, double — PurchasePrice is the (prorated) amount you expect to pay.
  - `years` integer — Years is the number of years you wish to purchase Whois Privacy for. Years defaults to 1 and cannot be more then the domain expiration date.

## Response `200`

A successful response.

- PrivacyResponse — PrivacyResponse contains the updated domain info as well as the order info for the newly purchased Whois Privacy.
  - `domain` DomainResponsePayload — Domain contains all relevant data for a domain.
    - `domainName` string, required — The punycode-encoded value of the domain name.
    - `createDate` string, date-time, required — The date and time when the domain was created at the registry.
    - `expireDate` string, date-time, required — The date and time when the domain will expire.
    - `autorenewEnabled` boolean, required — Indicates whether the domain is set to renew automatically before expiration.
    - `locked` boolean, required — Indicates if the domain is **transfer locked**, preventing transfers to another registrar.
    - `locks` string[] — List of all registry locking statuses currently applied to the domain. Use this to see which locks are active (e.g. clientTransferProhibited, clientHold). Empty when the domain has no locks applied.
    - `transferLockExpiresAt` string, date-time — When present, the domain has an active ICANN-mandated transfer lock (new registration, transfer-in, or material registrant contact change) that blocks client unlock via the API until this time. When omitted, there is no active policy transfer lock with a known expiry — the domain may still be locked (`locked: true`) due to a voluntary user lock. Does not represent RegistrarLock, AccountLock, verification holds, trademark-claim locks, or admin TransferLock with no expiry date.
    - `privacyEnabled` boolean, required — Indicates if Whois Privacy is enabled for this domain.
    - `contacts` Contacts, required — Contacts stores the contact information for the roles related to domains.
      - `admin` Contact — Contact contains all relevant contact data for a domain registrant. This schema is used for API responses and may contain null values for legacy data. For creating or updating contacts, use ContactRequest which enforces all validation requirements.
        - `firstName` string, nullable — First name of the contact.
        - `lastName` string, nullable — Last name of the contact.
        - `companyName` string, nullable — Company name of the contact. Leave blank if the contact is an individual, as some registries may assume it is a corporate entity otherwise.
        - `address1` string, nullable — The first line of the contact's address.
        - `address2` string, nullable — The second line of the contact's address (optional).
        - `city` string, nullable — City of the contact's address.
        - `state` string, nullable — State or Province of the contact's address.
        - `zip` string, nullable — ZIP or Postal Code of the contact's address.
        - `country` string, nullable — Country code for the contact's address. Must be an ISO 3166-1 alpha-2 country code.
        - `email` string, nullable — Email address of the contact. Must be a valid email format. The validation is performed against the `addr-spec` syntax in [RFC 822](https://datatracker.ietf.org/doc/html/rfc822)
        - `phone` string, nullable — Phone number of the contact. Should follow the E.164 international format: "+[country code][number]".
        - `fax` string, nullable — Fax number of the contact. Should follow the E.164 international format: "+[country code][number]".
        - `isVerified` boolean — Indicates if the contact has been verified as per ICANN requirements. If the value is `false` it indicates that the contact has not completed the required verification process. This property is read-only and will be included in responses but should not be included in requests.
        - `verificationId` integer, nullable — When the contact is unverified, this is the ID of the pending verification record. Use this ID with the resend verification email and verify contact endpoints. Omitted or null when the contact is verified.
      - `billing` Contact — Contact contains all relevant contact data for a domain registrant. This schema is used for API responses and may contain null values for legacy data. For creating or updating contacts, use ContactRequest which enforces all validation requirements.
        - `firstName` string, nullable — First name of the contact.
        - `lastName` string, nullable — Last name of the contact.
        - `companyName` string, nullable — Company name of the contact. Leave blank if the contact is an individual, as some registries may assume it is a corporate entity otherwise.
        - `address1` string, nullable — The first line of the contact's address.
        - `address2` string, nullable — The second line of the contact's address (optional).
        - `city` string, nullable — City of the contact's address.
        - `state` string, nullable — State or Province of the contact's address.
        - `zip` string, nullable — ZIP or Postal Code of the contact's address.
        - `country` string, nullable — Country code for the contact's address. Must be an ISO 3166-1 alpha-2 country code.
        - `email` string, nullable — Email address of the contact. Must be a valid email format. The validation is performed against the `addr-spec` syntax in [RFC 822](https://datatracker.ietf.org/doc/html/rfc822)
        - `phone` string, nullable — Phone number of the contact. Should follow the E.164 international format: "+[country code][number]".
        - `fax` string, nullable — Fax number of the contact. Should follow the E.164 international format: "+[country code][number]".
        - `isVerified` boolean — Indicates if the contact has been verified as per ICANN requirements. If the value is `false` it indicates that the contact has not completed the required verification process. This property is read-only and will be included in responses but should not be included in requests.
        - `verificationId` integer, nullable — When the contact is unverified, this is the ID of the pending verification record. Use this ID with the resend verification email and verify contact endpoints. Omitted or null when the contact is verified.
      - `registrant` RegistrantContact — Contact contains all relevant contact data for a domain registrant. This schema is used for API responses and may contain null values for legacy data. For creating or updating contacts, use RegistrantContactRequest which enforces all validation requirements.
        - `firstName` string, nullable — First name of the contact.
        - `lastName` string, nullable — Last name of the contact.
        - `companyName` string, nullable — 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).
        - `address1` string, nullable — The first line of the contact's address.
        - `address2` string, nullable — The second line of the contact's address (optional).
        - `city` string, nullable — City of the contact's address.
        - `state` string, nullable — State or Province of the contact's address.
        - `zip` string, nullable — ZIP or Postal Code of the contact's address.
        - `country` string, nullable — Country code for the contact's address. Must be an ISO 3166-1 alpha-2 country code.
        - `email` string, nullable — Email address of the contact. Must be a valid email format. The validation is performed against the `addr-spec` syntax in [RFC 822](https://datatracker.ietf.org/doc/html/rfc822)
        - `phone` string, nullable — Phone number of the contact. Should follow the E.164 international format: "+[country code][number]".
        - `fax` string, nullable — Fax number of the contact. Should follow the E.164 international format: "+[country code][number]".
        - `isVerified` boolean — Indicates if the contact has been verified as per ICANN requirements. If the value is `false` it indicates that the contact has not completed the required verification process. This property is read-only and will be included in responses but should not be included in requests.
        - `verificationId` integer, nullable — When the contact is unverified, this is the ID of the pending verification record. Use this ID with the resend verification email and verify contact endpoints. Omitted or null when the contact is verified.
      - `tech` Contact — Contact contains all relevant contact data for a domain registrant. This schema is used for API responses and may contain null values for legacy data. For creating or updating contacts, use ContactRequest which enforces all validation requirements.
        - `firstName` string, nullable — First name of the contact.
        - `lastName` string, nullable — Last name of the contact.
        - `companyName` string, nullable — Company name of the contact. Leave blank if the contact is an individual, as some registries may assume it is a corporate entity otherwise.
        - `address1` string, nullable — The first line of the contact's address.
        - `address2` string, nullable — The second line of the contact's address (optional).
        - `city` string, nullable — City of the contact's address.
        - `state` string, nullable — State or Province of the contact's address.
        - `zip` string, nullable — ZIP or Postal Code of the contact's address.
        - `country` string, nullable — Country code for the contact's address. Must be an ISO 3166-1 alpha-2 country code.
        - `email` string, nullable — Email address of the contact. Must be a valid email format. The validation is performed against the `addr-spec` syntax in [RFC 822](https://datatracker.ietf.org/doc/html/rfc822)
        - `phone` string, nullable — Phone number of the contact. Should follow the E.164 international format: "+[country code][number]".
        - `fax` string, nullable — Fax number of the contact. Should follow the E.164 international format: "+[country code][number]".
        - `isVerified` boolean — Indicates if the contact has been verified as per ICANN requirements. If the value is `false` it indicates that the contact has not completed the required verification process. This property is read-only and will be included in responses but should not be included in requests.
        - `verificationId` integer, nullable — When the contact is unverified, this is the ID of the pending verification record. Use this ID with the resend verification email and verify contact endpoints. Omitted or null when the contact is verified.
    - `nameservers` string[], required — The list of nameservers assigned to this domain. If unspecified, it defaults to the account's default nameservers.
    - `renewalPrice` number, double — The cost to renew the domain. This may be required for the RenewDomain operation.
  - `order` integer, required — Order is an identifier for this purchase.
  - `totalPaid` number, double, required — TotalPaid is the total amount paid, including VAT.

## Other responses

- `401` — Unauthorized.
- `402` — Payment has failed for this transaction.
- `403` — Forbidden - you do not have permission to perform this action.
- `404` — The requested domain could not be located.
- `405` — Method not allowed.
- `409` — Conflict - Idempotency key reused for a different request, or privacy protection already exists for this domain.
- `415` — All POST, PUT, PATCH requests for this API must include the `Content-Type: application/json` header in the requests.
- `422` — TLD not supported.
- `429` — Rate limit has been exceeded.
- `500` — Internal server error.
- `502` — Bad Gateway
- `504` — Gateway Timeout

---

[API](https://skmtc.dev/name/apis/name-com-core-api.md) · [All operations](https://skmtc.dev/name/apis/name-com-core-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/name/name-com-core-api/revisions/a37d4cbd3991/schema)
