Skip to content

Latest commit

Β 

History

History
5359 lines (3801 loc) Β· 91.8 KB

File metadata and controls

5359 lines (3801 loc) Β· 91.8 KB

Reference

$client->hello() -> ?HelloResponse

πŸ“ Description

Returns basic information about the API server (useful for testing connectivity and version checks).

πŸ”Œ Usage

$client->hello();

Account Info

$client->accountInfo->checkAccountBalance() -> ?CheckAccountBalanceResponse

πŸ“ Description

Returns the current account credit balance for the authenticated user.

πŸ”Œ Usage

$client->accountInfo->checkAccountBalance();

Accounts

$client->accounts->createAccount($request) -> ?CreateAccountResponse

πŸ“ Description

Creates a new sub-account under your authenticated reseller account and returns API credentials for the new account. This endpoint is only available to approved reseller accounts. Contact name.com support to request access.

πŸ”Œ Usage

$client->accounts->createAccount(
    new CreateAccountRequest([
        'account' => new AccountRequest([
            'contacts' => new ContactsRequest([
                'registrant' => new RegistrantContactRequest([
                    'firstName' => 'Jane',
                    'lastName' => 'Doe',
                    'address1' => '123 Main St.',
                    'city' => 'Denver',
                    'state' => 'CO',
                    'zip' => '12345',
                    'country' => 'US',
                    'email' => 'admin@example.net',
                    'phone' => '+13035551212',
                ]),
            ]),
            'accountName' => 'reseller_subaccount',
            'password' => 'SecureP4ss!',
        ]),
        'apiTos' => true,
        'tos' => true,
    ]),
);

βš™οΈ Parameters

$account: AccountRequest β€” The account details for the new account being created.

$apiTos: bool β€” Must be set to true to indicate acceptance of the API Terms of Service.

$tos: bool β€” Must be set to true to indicate acceptance of the general Terms of Service.

Domains

$client->domains->listDomains($request) -> ?ListDomainsResponse

πŸ“ Description

Lists all domains in your account (basic details for each domain).

πŸ”Œ Usage

$client->domains->listDomains(
    new ListDomainsRequest([]),
);

βš™οΈ Parameters

$perPage: ?int β€” Per Page is the number of records to return per request. Per Page defaults to 250.

$page: ?int β€” Page is which page to return.

$sort: ?string β€” Sort specifies which domain property to order by.

$dir: ?string β€” Dir indicates direction of sort. Possible values are 'asc' (default) or 'desc'.

$domainName: ?string β€” DomainName filters domains by exact domain name or wildcard (starts with '*').

$tld: ?string β€” Tld filters on specific tld.

$locked: ?bool β€” Locked filters on locked domains.

$createDate: ?string β€” CreateDate filters domains created on this date.

$createDateStart: ?string β€” CreateDateStart filters domains created on or after this date.

$createDateEnd: ?string β€” CreateDateEnd filters domains created on or before this date.

$expireDate: ?string β€” ExpireDate filters domains expiring on this date.

$expireDateStart: ?string β€” ExpireDateStart filters domains with expire date on or after this date.

$expireDateEnd: ?string β€” ExpireDateEnd filters domains with expire date on or before this date.

$privacyEnabled: ?bool β€” PrivacyEnabled indicates whether there is a privacy product associated with the domain.

$isPremium: ?bool β€” IsPremium indicates whether the domain is a premium domain.

$autorenewEnabled: ?bool β€” AutorenewEnabled indicates if the domain will attempt to renew automatically before expiration.

$orderId: ?int β€” OrderId specifies the order number of a domain purchase.

$includeRenewalPrice: ?bool β€” IncludeRenewalPrice indicates whether to include renewal pricing information in the response.

$client->domains->createDomain($request) -> ?CreateDomainResponse

πŸ“ Description

Registers a new domain under your account. You must provide domain.domainName at minimum. 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.

Create Domain pricing

See the Domain purchase pricing guide for the full reference. Recommendation: For most integrations, scope discovery to purchaseType: registration. Other purchase types are supported but add complexity β€” details in the guide above.

Discovery (required before create): Call Search or Check Availability, not Get Pricing alone. Both return the same SearchResult fields (purchaseType, purchasePrice, premium, purchasable). Zone Check is designed for rapid availability checks only; it is not sufficient to complete a purchase.

Getting the price for Create Domain

  1. Search or Check Availability β†’ copy purchaseType, premium, note purchasePrice.

  2. Branch on purchaseType:

    • registration + premium: false β€” omit purchasePrice on create, set years. Optional: Get Pricing with same years to preview the total.
    • registration + premium: true β€” Get Pricing with same years β†’ pass purchasePrice exactly.
    • aftermarket / expiring / backorder β€” use discovery purchasePrice (flat fee). Re-check discovery before create. Do not use Get Pricing for create price. years does not multiply price or guarantee registration length.
  3. If purchasePrice is sent, it must match exactly or the request fails with 400 and "Purchase price does not match".

Years on acquisition types: For aftermarket_s, aftermarket_b, aftermarket_i, expiring, and backorder: omit years or pass the TLD default. Check domain.expireDate in the response; Renew to extend registration.

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.

πŸ”Œ Usage

$client->domains->createDomain(
    new CreateDomainRequest([
        'domain' => new DomainCreatePayload([
            'domainName' => 'example.com',
        ]),
    ]),
);

βš™οΈ Parameters

$domain: DomainCreatePayload

$purchasePrice: ?float β€” 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 indicates what kind of purchase this domain create is for. Defaults to registration if omitted. Recommended: Use registration unless you support acquisition types (aftermarket, expiring, backorder) β€” see the Domain purchase pricing guide. This value should be copied from the Search or Check Availability result. The value registration covers both standard and registry premium domains β€” use the premium flag from the discovery result to tell them apart. Aftermarket, expiring, and backorder types use flat acquisition fees from Search or Check Availability; see the Domain pricing guide.

$tldRequirements: ?array

TLDRequirements is a way to pass additional data that is required by some registries. You can check before registration by using the Domain Info 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 ES for Spanish, or CYRL for Cyrillic. These abbreviations can vary between TLDs, and it is highly recommended that you use Domain Info API to ensure that the TLD allows for the specific IDN table, as well as the correct abbreviation.

$claims: ?DomainClaimsInfo

$years: ?int β€” Years specifies the registration term in years. Only affects price and registration length for purchaseType: registration. Defaults to each TLD's minimum if omitted (usually 1; 2 for .ai). Must be a supported registration term for the TLD when purchaseType is registration (commonly 1–10 years). For purchaseType: registration when purchasePrice is required, call Get Pricing with the same years value. For aftermarket, expiring, and backorder types: pass the TLD default β€” it does not multiply purchasePrice and does not guarantee a multi-year registration. Check domain.expireDate in the create response for actual expiry. To add registration time after acquisition, use Renew Domain.

$promoCode: ?string β€” PromoCode is an optional promotional code to apply to the domain purchase. Only one promo code can be applied per request.

$client->domains->getDomain($domainName) -> ?DomainResponsePayload

πŸ“ Description

Retrieves detailed information for a specific domain in your account.

πŸ”Œ Usage

$client->domains->getDomain(
    'example.com',
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain to retrieve.

$client->domains->updateDomain($domainName, $request) -> ?DomainResponsePayload

πŸ“ Description

Allows updating of the autorenew, WhoIs Privacy and lock status of the specified domain. The request requires one, or any combination of the parameters in order to pass validation. If any of the requested updates failed, the domain will be returned to it's original state.

πŸ”Œ Usage

$client->domains->updateDomain(
    'domainName',
    new UpdateDomainRequest([
        'body' => new UpdateDomainRequestBodyAutorenewEnabled([
            'autorenewEnabled' => true,
        ]),
    ]),
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain to update.

$request: UpdateDomainRequestBodyAutorenewEnabled|UpdateDomainRequestBodyPrivacyEnabled|UpdateDomainRequestBodyLocked

$client->domains->disableAutorenew($domainName, $request) -> ?Domain

πŸ“ Description

Turns off automatic renewal for a domain. DEPRECATED This endpoint is deprecated in favor of the new UpdateDomain API. This will be removed in a future release.

πŸ”Œ Usage

$client->domains->disableAutorenew(
    'example.com',
    new DisableAutorenewRequest([
        'body' => new EmptyObject([]),
    ]),
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain name to disable autorenew for.

$request: EmptyObject

$client->domains->disableWhoisPrivacy($domainName, $request) -> ?Domain

πŸ“ Description

Disables WHOIS privacy protection on a domain. DEPRECATED This endpoint is deprecated in favor of the new UpdateDomain API. This will be removed in a future release.

πŸ”Œ Usage

$client->domains->disableWhoisPrivacy(
    'example.com',
    new DisableWhoisPrivacyRequest([
        'body' => new EmptyObject([]),
    ]),
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain name to disable whoisprivacy for.

$request: EmptyObject

$client->domains->enableAutorenew($domainName, $request) -> ?Domain

πŸ“ Description

Turns on automatic renewal for a domain. DEPRECATED This endpoint is deprecated in favor of the new UpdateDomain API. This will be removed in a future release.

πŸ”Œ Usage

$client->domains->enableAutorenew(
    'example.com',
    new EnableAutorenewRequest([
        'body' => new EmptyObject([]),
    ]),
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain name to enable autorenew for.

$request: EmptyObject

$client->domains->enableWhoisPrivacy($domainName, $request) -> ?Domain

πŸ“ Description

Enables WHOIS privacy protection on a domain. DEPRECATED This endpoint is deprecated in favor of the new UpdateDomain API. This will be removed in a future release.

πŸ”Œ Usage

$client->domains->enableWhoisPrivacy(
    'domainName',
    new EnableWhoisPrivacyRequest([
        'body' => new EmptyObject([]),
    ]),
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain name to enable whoisprivacy for.

$request: EmptyObject

$client->domains->getAuthCodeForDomain($domainName) -> ?AuthCodeResponse

πŸ“ Description

Retrieves the transfer authorization code (EPP code) for a domain.

πŸ”Œ Usage

$client->domains->getAuthCodeForDomain(
    'domainName',
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain name to retrieve the authorization code for.

$client->domains->getPricingForDomain($domainName, $request) -> ?PricingResponse

πŸ“ Description

Returns registration, renewal, and transfer pricing for a domain and term.

Not a discovery endpoint: Does not return purchaseType. Cannot determine whether a domain is acquired via registration vs aftermarket/expiring/backorder β€” call Search or Check Availability first.

Scope: purchasePrice and premium reflect standard and registry-premium registration only. They do not return aftermarket, expiring, or backorder acquisition prices. For those types, use purchasePrice from Search or Check Availability.

Registration create (purchaseType: registration): When create requires purchasePrice (registry premium), call with the same years you will send on create. Pass purchasePrice directly β€” it is the total for that term, not a per-year component.

Renew: Pass renewalPrice as purchasePrice on Renew Domain for premium renewals β€” not for computing Create Domain totals.

Transfer: Pass transferPrice as purchasePrice on Create Transfer for premium transfers. The years query parameter does not affect transferPrice.

See the Domain pricing guide for the full workflow.

πŸ”Œ Usage

$client->domains->getPricingForDomain(
    'domainName',
    new GetPricingForDomainRequest([
        'years' => 2,
    ]),
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain to retrieve.

$years: ?int β€” Years specifies the registration term to price in years. Defaults to each TLD's minimum registration term if omitted β€” usually 1 year (2 for .ai). Must be a supported registration term for the TLD (commonly 1–10 years). Use the same value on Create Domain when passing purchasePrice for purchaseType: registration.

$client->domains->lockDomain($domainName, $request) -> ?Domain

πŸ“ Description

Locks a domain to prevent it from being transferred. DEPRECATED This endpoint is deprecated in favor of the new UpdateDomain API. This will be removed in a future release.

πŸ”Œ Usage

$client->domains->lockDomain(
    'example.com',
    new LockDomainRequest([
        'body' => new EmptyObject([]),
    ]),
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain name to lock.

$request: EmptyObject

$client->domains->purchasePrivacy($domainName, $request) -> ?PrivacyResponse

πŸ“ Description

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.

πŸ”Œ Usage

$client->domains->purchasePrivacy(
    'domainName',
    new DomainsPurchasePrivacyBody([]),
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain to purchase Whois Privacy for.

$purchasePrice: ?float β€” PurchasePrice is the (prorated) amount you expect to pay.

$years: ?int β€” 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.

$client->domains->renewDomain($domainName, $request) -> ?RenewDomainResponse

πŸ“ Description

Renews an existing domain for an additional registration period. Include the domain name and renewal term. Omit purchasePrice for standard (non-premium) renewals. For premium renewals, pass renewalPrice from Get Pricing with matching years as purchasePrice. Renewal pricing is separate from Create Domain registration/acquisition pricing. This is typically used to extend ownership before a domain’s expiration.

πŸ”Œ Usage

$client->domains->renewDomain(
    'domainName',
    new DomainsRenewDomainBody([]),
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain to renew.

$purchasePrice: ?float β€” PurchasePrice is the total USD renewal cost for the requested years, before VAT. VAT is applied when applicable and must not be included here. If sent, must match Get Pricing renewalPrice exactly. Omit for standard (non-premium) renewals. Required for premium renewals β€” use renewalPrice from Get Pricing with matching years.

$years: ?int β€” Years specifies the renewal term in years. Defaults to each TLD's minimum registration term if omitted β€” usually 1 year (2 for .ai). Must be a supported registration term for the TLD (commonly 1–10 years). For premium renewals, call Get Pricing with the same years value.

$client->domains->setContacts($domainName, $request) -> ?DomainResponsePayload

πŸ“ Description

Updates WHOIS contact information for a domain. This includes the registrant, administrative, technical, and billing contacts. All contact objects must be complete β€” partial updates are not supported. You should fetch the existing contact data first (e.g., via GetDomain and modify only the values you wish to change. This call replaces all four contact sets at once.

Contact Verification

When registrant contact information is updated, validation may be triggered if the new contact information has not been previously validated. This validation is required by ICANN for all TLDs except country-code TLDs (ccTLDs). This validation involves sending an email to the provided address, prompting the recipient to click a link to verify their email address.

πŸ”Œ Usage

$client->domains->setContacts(
    'example.com',
    new DomainsSetContactsBody([]),
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain name to set the contacts for.

$contacts: ?ContactsRequest

$client->domains->setNameservers($domainName, $request) -> ?DomainResponsePayload

πŸ“ Description

SetNameservers will set the nameservers for the Domain. This operation updates the DNS configuration by changing which nameservers are responsible for the domain's zone.

πŸ”Œ Usage

$client->domains->setNameservers(
    'example.com',
    new DomainsSetNameserversBody([
        'nameservers' => [
            'ns1.name.com',
            'ns2.name.com',
        ],
    ]),
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain name to set the nameservers for.

$nameservers: array β€” Nameservers is a list of the nameservers to set. Nameservers should already be set up and hosting the zone properly as some registries will verify before allowing the change.

$client->domains->unlockDomain($domainName, $request) -> ?Domain

πŸ“ Description

Unlocks a domain to allow it to be transferred. DEPRECATED This endpoint is deprecated in favor of the new UpdateDomain API. This will be removed in a future release.

πŸ”Œ Usage

$client->domains->unlockDomain(
    'domainName',
    new UnlockDomainRequest([
        'body' => new EmptyObject([]),
    ]),
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain name to unlock.

$request: EmptyObject

$client->domains->checkAvailability($request) -> ?SearchResponse

πŸ“ Description

Checks whether up to 50 domain names are purchasable and returns discovery pricing for each result.

Discovery endpoint: Returns SearchResult fields β€” purchaseType, purchasePrice, premium, purchasable. Search returns the same fields for keyword/suggestion flows. Use this endpoint to determine what to send on Create Domain.

When results show premium: true or a non-registration purchaseType, follow the Domain pricing guide before calling Create Domain. For non-registration types, re-check Check Availability immediately before create β€” acquisition prices can change.

Recommendation: Set purchaseType to registration. Most resellers restrict results to domains with a purchaseType of registration to ensure predictable pricing and immediate fulfillment. Other purchase types (such as aftermarket variants) can introduce higher costs and non-instant transactions that may be delayed or declined by third parties.

πŸ”Œ Usage

$client->domains->checkAvailability(
    new AvailabilityRequest([
        'domainNames' => [
            'domainNames',
        ],
    ]),
);

βš™οΈ Parameters

$domainNames: array β€” DomainNames is the list of domains to check if they are available.

$purchaseType: ?string β€” Optional filter. Recommended: registration for most integrations β€” omit only if you support acquisition types. Non-matching domains are returned with purchasable: false (Search omits them instead). See the Domain purchase pricing guide.

$client->domains->search($request) -> ?SearchResponse

πŸ“ Description

Searches for domain name suggestions based on a keyword or term. Important: Do not encode the : in the path. Use /core/v1/domains:search, not /core/v1/domains%3Asearch.

Discovery endpoint: Returns SearchResult fields β€” purchaseType, purchasePrice, premium, purchasable.

Recommendation: Set purchaseType to registration. Most resellers restrict results to domains with a purchaseType of registration to ensure predictable pricing and immediate fulfillment. Other purchase types (such as aftermarket) can introduce higher costs and non-instant transactions that may be delayed or declined by third parties. With purchaseType: registration, domains that do not match the filter are omitted from results (unlike Check Availability, which returns them with purchasable: false).

When results show premium: true or a non-registration purchaseType, follow the Domain pricing guide before calling Create Domain. For all types, re-check with Check Availability immediately before create β€” prices and availability can change.

πŸ”Œ Usage

$client->domains->search(
    new SearchRequest([
        'keyword' => 'mydomain',
    ]),
);

βš™οΈ Parameters

$keyword: string β€” Keyword is the search term to search for. It can be just a word, or a whole domain name.

$timeout: ?int

Timeout is a value in milliseconds on how long to perform the search for. Valid timeouts are between 500ms to 12,000ms. If not specified, timeout defaults to 12,000ms. Since some additional processing is performed on the results, a response may take longer then the timeout.

$tldFilter: ?array β€” TLDFilter will limit results to only contain the specified TLDs. There is a maximum of 50 TLDs that can be used in this filter

$purchaseType: ?string β€” Optional. Limits results to the given purchaseType. Recommended: registration for most integrations β€” omit only if you choose to support acquisition types. See the Domain purchase pricing guide.

$client->domains->zoneCheck($request) -> ?ZoneCheckResponse

πŸ“ Description

Zone Check offers a rapid, preliminary check for domain availability by leveraging cached zone file data. Ideal for large-batch queries, it provides a high confidence indication of a domain's availability significantly faster than live registry checks. For definitive, real-time availability and pricing, you can follow up with the standard Check Availability call. The API normalizes and validates each submitted domain string. Domains that fail validation, use an unsupported TLD for this service, or are otherwise not eligible for zone check are removed from the request before the zone file lookup runs. The response includes only a numeric count of removed domains (removed); individual removed strings are not returned. A future API version may extend the contract to include details about removed domains.

For the best results and to avoid 400 Bad Request errors after cleaning, ensure each domain string meets the criteria described for domainNames in the request body schema.

If no valid domains remain after this process, the API returns a 400 Bad Request response. Note: The cached zone files used for this check are refreshed twice daily based on the latest available data from the registries.

πŸ”Œ Usage

$client->domains->zoneCheck(
    new ZoneCheckRequest([
        'domainNames' => [
            'example.com',
            'example.net',
            'example.org',
        ],
    ]),
);

βš™οΈ Parameters

$domainNames: array

Array of domain names to check. Each entry is normalized and validated before zone check runs. Entries that are not valid domain strings, that use unsupported TLDs for this service, or that fail other pre-validation rules are omitted from the check; the response removed field reports how many were omitted (not which values).

Valid domain string (after normalization) β€” for reliable results and to avoid errors once all entries are removed:

  • Allowed characters: ASCII letters (a–z), digits (0–9), and hyphens (-).

  • Hyphen rules: A domain (the part between dots) must not start or end with a hyphen (for example, -test.com and test-.com are invalid).

  • Domain length: Each domain must be between 1 and 63 characters.

  • Internationalized domains (IDNs): Non-ASCII characters (for example ΓΆ or Γ±) should be submitted as Punycode (xn--...) for consistent registry resolution.

DNSSECs

$client->dnsseCs->listDnsseCs($domainName) -> ?ListDnsseCsResponse

πŸ“ Description

Lists all DNSSEC (DS) records configured for a domain.

πŸ”Œ Usage

$client->dnsseCs->listDnsseCs(
    'domainName',
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain name to list keys for.

$client->dnsseCs->createDnssec($domainName, $request) -> ?Dnssec

πŸ“ Description

Adds (registers) a new DNSSEC DS record for a domain.

πŸ”Œ Usage

$client->dnsseCs->createDnssec(
    'domainName',
    new CreateDnssecBody([
        'algorithm' => 1,
        'digest' => 'digest',
        'digestType' => 1,
        'keyTag' => 1,
    ]),
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain name to create keys for.

$algorithm: int

$digest: string β€” Digest is a digest of the DNSKEY RR that is registered with the registry.

$digestType: int

$keyTag: int

$client->dnsseCs->getDnssec($domainName, $digest) -> ?Dnssec

πŸ“ Description

Retrieves details of a specific DNSSEC record for a domain.

πŸ”Œ Usage

$client->dnsseCs->getDnssec(
    'domainName',
    'digest',
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain name.

$digest: string β€” Digest is the digest for the DNSKEY RR to retrieve.

$client->dnsseCs->deleteDnssec($domainName, $digest)

πŸ“ Description

Deletes a DNSSEC record from a domain.

πŸ”Œ Usage

$client->dnsseCs->deleteDnssec(
    'domainName',
    'digest',
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain name the key is registered for.

$digest: string β€” Digest is the digest for the DNSKEY RR to remove from the registry.

Email Forwardings

$client->emailForwardings->listEmailForwardings($domainName, $request) -> ?ListEmailForwardingsResponse

πŸ“ Description

Returns a paginated list of all email forwarding rules for a domain.

πŸ”Œ Usage

$client->emailForwardings->listEmailForwardings(
    'domainName',
    new ListEmailForwardingsRequest([
        'perPage' => 100,
        'page' => 1,
    ]),
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain to list email forwarded boxes for.

$perPage: ?int β€” (optional) Per Page is the number of records to return per request. Per Page defaults to 500 if not set.

$page: ?int β€” (optional) Page is which page to return. Default to page 1 if not set.

$client->emailForwardings->createEmailForwarding($domainName, $request) -> ?EmailForwarding

πŸ“ Description

Creates a new email forwarding rule for a domain, such as redirecting info@example.com to an external inbox. If this is the first email forwarding rule created for the domain, the API may also update your MX records automatically to enable mail routing. The alias must not conflict with existing email services or MX records. To modify a forwarding rule later, use UpdateEmailForwarding.

πŸ”Œ Usage

$client->emailForwardings->createEmailForwarding(
    'example.com',
    new CreateEmailForwardingRequest([
        'emailBox' => 'admin',
        'emailTo' => 'webmaster@example.com',
    ]),
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain part of the email address to forward.

$emailBox: string β€” EmailBox is the user portion of the email address to forward. If your email is "admin@example.com", it would just be "admin"

$emailTo: string β€” EmailTo is the entire email address to forward email to.

$client->emailForwardings->getEmailForwarding($domainName, $emailBox) -> ?EmailForwarding

πŸ“ Description

Retrieves the details of a specific email forwarding entry.

πŸ”Œ Usage

$client->emailForwardings->getEmailForwarding(
    'domainName',
    'emailBox',
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain to list email forwarded box for.

$emailBox: string β€” EmailBox is which email box to retrieve.

$client->emailForwardings->updateEmailForwarding($domainName, $emailBox, $request) -> ?EmailForwarding

πŸ“ Description

Updates the destination email address for an existing forwarding rule.

πŸ”Œ Usage

$client->emailForwardings->updateEmailForwarding(
    'domainName',
    'emailBox',
    new EmailForwardingsUpdateEmailForwardingBody([]),
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain part of the email address to forward.

$emailBox: string β€” EmailBox is the user portion of the email address to forward.

$emailTo: ?string β€” EmailTo is the entire email address to forward email to.

$client->emailForwardings->deleteEmailForwarding($domainName, $emailBox)

πŸ“ Description

Deletes an email forwarding rule from a domain.

πŸ”Œ Usage

$client->emailForwardings->deleteEmailForwarding(
    'domainName',
    'emailBox',
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain to delete the email forwarded box from.

$emailBox: string β€” EmailBox is which email box to delete.

DNS

$client->dns->listRecords($domainName, $request) -> ?ListRecordsResponse

πŸ“ Description

Lists all DNS records for a specified domain.

πŸ”Œ Usage

$client->dns->listRecords(
    'domainName',
    new ListRecordsRequest([]),
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the zone to list the records for.

$perPage: ?int β€” Per Page is the number of records to return per request. Per Page defaults to 500.

$page: ?int β€” Page is which page to return.

$client->dns->createRecord($domainName, $request) -> ?Record

πŸ“ Description

Adds a new DNS record to the specified domain zone. Provide the record type (e.g. A, MX, CNAME), host, value, and TTL. This is used for configuring domain-based services such as email, website hosting, or third-party verifications.

πŸ”Œ Usage

$client->dns->createRecord(
    'domainName',
    new DnsCreateRecordBody([
        'answer' => 'answer',
        'host' => 'host',
        'type' => DnsCreateRecordBodyType::A->value,
    ]),
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the zone that the record belongs to.

$answer: string

Answer is either the IP address for A or AAAA records; the target for ANAME, CNAME, MX, or NS records; the text for TXT records. For SRV records, answer has the following format: "{weight} {port} {target}" e.g. "1 5061 sip.example.org".

$fqdn: ?string β€” FQDN is the Fully Qualified Domain Name. It is the combination of the host and the domain name. It always ends in a ".". FQDN is ignored in CreateRecord, specify via the Host field instead.

$host: string

Host is the hostname relative to the zone: e.g. for a record for blog.example.org, domain would be "example.org" and host would be "blog". An apex record would be specified by either an empty host "" or "@". A SRV record would be specified by "{service}.{protocol}.{host}": e.g. "_sip._tcp.phone" for _sip._tcp.phone.example.org.

$id: ?int β€” Unique record id. Value is ignored on Create, and must match the URI on Update.

$priority: ?int β€” Priority is only required for MX and SRV records, it is ignored for all others.

$ttl: ?int β€” TTL is the time this record can be cached for in seconds. name.com allows a minimum TTL of 300, or 5 minutes.

$type: string β€” Type is one of the following: A, AAAA, ANAME, CNAME, MX, NS, SRV, or TXT.

$client->dns->getRecord($domainName, $id) -> ?Record

πŸ“ Description

Retrieves details of a specific DNS record.

πŸ”Œ Usage

$client->dns->getRecord(
    'domainName',
    1,
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the zone the record exists in.

$id: int β€” ID is the server-assigned unique identifier for this record.

$client->dns->updateRecord($domainName, $id, $request) -> ?Record

πŸ“ Description

Replaces an existing DNS record with new data. This is a full overwrite β€” all required fields (host, type, answer, ttl) must be included in the request body. If you omit a field, the existing value will not be preserved and the request may fail. Use GetRecord beforehand to retrieve the current values if you intend to modify just one field. The record ID must belong to a domain you manage.

πŸ”Œ Usage

$client->dns->updateRecord(
    'domainName',
    1,
    new DnsUpdateRecordBody([
        'answer' => 'answer',
        'type' => DnsUpdateRecordBodyType::A->value,
    ]),
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the zone that the record belongs to.

$id: int β€” Unique record id. Value is ignored on Create, and must match the URI on Update.

$answer: string

Answer is either the IP address for A or AAAA records; the target for ANAME, CNAME, MX, or NS records; the text for TXT records. For SRV records, answer has the following format: "{weight} {port} {target}" e.g. "1 5061 sip.example.org".

$fqdn: ?string β€” FQDN is the Fully Qualified Domain Name. It is the combination of the host and the domain name. It always ends in a ".". FQDN is ignored in CreateRecord, specify via the Host field instead.

$host: ?string

Host is the hostname relative to the zone: e.g. for a record for blog.example.org, domain would be "example.org" and host would be "blog". An apex record would be specified by either an empty host "" or "@". A SRV record would be specified by "{service}.{protocol}.{host}": e.g. "_sip._tcp.phone" for _sip._tcp.phone.example.org.

$priority: ?int β€” Priority is only required for MX and SRV records, it is ignored for all others.

$ttl: ?int β€” TTL is the time this record can be cached for in seconds. name.com allows a minimum TTL of 300, or 5 minutes.

$type: string β€” Type is one of the following: A, AAAA, ANAME, CNAME, MX, NS, SRV, or TXT.

$client->dns->deleteRecord($domainName, $id)

πŸ“ Description

Removes a DNS record by ID. Often used during cleanup operations or when replacing outdated DNS settings with updated records.

πŸ”Œ Usage

$client->dns->deleteRecord(
    'domainName',
    1,
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the zone that the record to be deleted exists in.

$id: int β€” ID is the server-assigned unique identifier for the Record to be deleted. If the Record with that ID does not exist in the specified Domain, an error is returned.

URL Forwardings

$client->urlForwardings->listUrlForwardings($domainName, $request) -> ?ListUrlForwardingsResponse

πŸ“ Description

Returns all URL forwarding settings configured for a domain. Deprecated. Use List URL Forwardings by domain instead, which returns entries with an id for use with by-ID endpoints.

πŸ”Œ Usage

$client->urlForwardings->listUrlForwardings(
    'example.com',
    new ListUrlForwardingsRequest([
        'perPage' => 100,
        'page' => 1,
    ]),
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain to list URL forwarding entries for.

$perPage: ?int β€” Per Page is the number of records to return per request. Per Page defaults to 500.

$page: ?int β€” Page is which page to return. Starts at 1 for first page.

$client->urlForwardings->createUrlForwarding($domainName, $request) -> ?UrlForwardingResponse

πŸ“ Description

Sets up a new URL forwarding (redirect) for a domain or subdomain. If this is the first URL forwarding entry, it may modify the A records for the domain accordingly. Note that changes may take up to 24 hours to fully propagate.

πŸ”Œ Usage

$client->urlForwardings->createUrlForwarding(
    'example.com',
    new CreateUrlForwardingRequest([
        'body' => new UrlForwardingInput([
            'forwardsTo' => 'https://destination-site.com',
            'host' => 'www',
            'type' => UrlForwardingInputType::Masked->value,
        ]),
    ]),
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain part of the hostname to forward.

$request: UrlForwardingInput

$client->urlForwardings->getUrlForwarding($domainName, $host) -> ?UrlForwardingResponse

πŸ“ Description

Retrieves the details of a specific URL forwarding configuration. Deprecated. Use Get URL Forwarding by ID instead.

πŸ”Œ Usage

$client->urlForwardings->getUrlForwarding(
    'example.com',
    'www.example.org',
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain to get the URL forwarding entry for.

$host: string β€” The full hostname, including subdomain.

$client->urlForwardings->updateUrlForwarding($domainName, $host, $request) -> ?UrlForwardingResponse

πŸ“ Description

Modifies an existing URL forwarding rule. Changes may take up to 24 hours to fully propagate. Deprecated. Use Update URL Forwarding by ID instead.

πŸ”Œ Usage

$client->urlForwardings->updateUrlForwarding(
    'example.com',
    'www.example.org',
    new UpdateUrlForwardingRequest([
        'body' => new UrlForwardingInput([
            'forwardsTo' => 'https://destination-site.com',
            'host' => 'www',
            'type' => UrlForwardingInputType::Masked->value,
        ]),
    ]),
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain part of the hostname to forward.

$host: string β€” The full hostname, including subdomain.

$request: UrlForwardingInput

$client->urlForwardings->deleteUrlForwarding($domainName, $host)

πŸ“ Description

Removes a URL forwarding configuration from the domain. This operation cannot be undone. Deprecated. Use Delete URL Forwarding by ID instead.

πŸ”Œ Usage

$client->urlForwardings->deleteUrlForwarding(
    'example.com',
    'www.example.org',
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain to delete the URL forwarding entry from.

$host: string β€” The full hostname, including subdomain.

$client->urlForwardings->listUrlForwardingsByDomain($domainName, $request) -> ?ListUrlForwardingsResponse

πŸ“ Description

Returns all URL forwarding settings configured for a domain. Each entry includes an id that can be used with the URL Forwarding by-ID endpoints to get, update, or delete records.

πŸ”Œ Usage

$client->urlForwardings->listUrlForwardingsByDomain(
    'example.com',
    new ListUrlForwardingsByDomainRequest([
        'perPage' => 100,
        'page' => 1,
    ]),
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain to list URL forwarding entries for. The domain must be owned by the authenticated account.

$perPage: ?int β€” Per Page is the number of records to return per request. Per Page defaults to 500.

$page: ?int β€” Page is which page to return. Starts at 1 for first page.

$client->urlForwardings->getUrlForwardingById($domainName, $id) -> ?UrlForwardingResponse

πŸ“ Description

Retrieves the details of a specific URL forwarding configuration by ID. The domain must be owned by the authenticated account.

πŸ”Œ Usage

$client->urlForwardings->getUrlForwardingById(
    'example.com',
    12345,
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain that owns the URL forwarding entry. Must be owned by the authenticated account.

$id: int β€” ID is the server-assigned unique identifier for the URL forwarding record (returned in list responses).

$client->urlForwardings->deleteUrlForwardingById($domainName, $id)

πŸ“ Description

Removes a URL forwarding configuration by ID. The domain must be owned by the authenticated account. This operation cannot be undone.

πŸ”Œ Usage

$client->urlForwardings->deleteUrlForwardingById(
    'example.com',
    12345,
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain that owns the URL forwarding entry. Must be owned by the authenticated account.

$id: int β€” ID is the server-assigned unique identifier for the URL forwarding record (returned in list responses).

$client->urlForwardings->updateUrlForwardingById($domainName, $id, $request) -> ?UrlForwardingResponse

πŸ“ Description

Modifies an existing URL forwarding rule by ID. The domain must be owned by the authenticated account. Changes may take up to 24 hours to fully propagate.

πŸ”Œ Usage

$client->urlForwardings->updateUrlForwardingById(
    'example.com',
    12345,
    new UpdateUrlForwardingByIdRequest([
        'body' => new UrlForwardingInput([
            'forwardsTo' => 'https://destination-site.com',
            'host' => 'www',
            'type' => UrlForwardingInputType::Masked->value,
        ]),
    ]),
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain that owns the URL forwarding entry. Must be owned by the authenticated account.

$id: int β€” ID is the server-assigned unique identifier for the URL forwarding record (returned in list responses).

$request: UrlForwardingInput

Vanity Nameservers

$client->vanityNameservers->listVanityNameservers($domainName, $request) -> ?ListVanityNameserversResponse

πŸ“ Description

Lists all vanity nameserver hostnames configured for a domain.

πŸ”Œ Usage

$client->vanityNameservers->listVanityNameservers(
    'example.com',
    new ListVanityNameserversRequest([
        'perPage' => 50,
        'page' => 2,
    ]),
);

βš™οΈ Parameters

$domainName: string β€” The domain name to list vanity nameservers for.

$perPage: ?int β€” The number of records to return per page. Defaults to 500.

$page: ?int β€” The page number to return.

$client->vanityNameservers->createVanityNameserver($domainName, $request) -> ?VanityNameserverResponse

πŸ“ Description

Register a new vanity nameserver for the specified domain.

πŸ”Œ Usage

$client->vanityNameservers->createVanityNameserver(
    'example.com',
    new CreateVanityNameserverBody([
        'hostname' => 'ns1',
        'ips' => [
            '192.168.1.10',
            '2001:0db8:85a3:0000:0000:8a2e:0370:7334',
        ],
    ]),
);

βš™οΈ Parameters

$domainName: string β€” The domain name to create a vanity nameserver for.

$hostname: string β€” The subdomain portion of the nameserver hostname. The domain portion will be taken from the URL path. For example, to create 'ns1.example.com', specify 'ns1' when calling the endpoint for the domain 'example.com'.

$ips: array β€” IPs is a list of IP addresses that are used for glue records for this nameserver. These should be valid IPv4 or IPv6 addresses.

$client->vanityNameservers->getVanityNameserver($domainName, $hostname) -> ?VanityNameserverResponse

πŸ“ Description

Retrieves details for a of a specific vanity nameserver (including its IP addresses).

πŸ”Œ Usage

$client->vanityNameservers->getVanityNameserver(
    'example.com',
    'ns1.example.com',
);

βš™οΈ Parameters

$domainName: string β€” The domain name associated with the vanity nameserver.

$hostname: string β€” The hostname of the vanity nameserver to retrieve.

$client->vanityNameservers->updateVanityNameserver($domainName, $hostname, $request) -> ?VanityNameserverResponse

πŸ“ Description

Updates the glue record IP addresses for a vanity nameserver.

πŸ”Œ Usage

$client->vanityNameservers->updateVanityNameserver(
    'example.com',
    'ns1.example.com',
    new UpdateVanityNameserverBody([]),
);

βš™οΈ Parameters

$domainName: string β€” The domain name associated with the vanity nameserver.

$hostname: string β€” The hostname of the vanity nameserver to update.

$ips: ?array β€” IPs is the updated list of IP addresses to be used for glue records for this vanity nameserver. Providing an empty array will remove all existing IPs.

$client->vanityNameservers->deleteVanityNameserver($domainName, $hostname)

πŸ“ Description

Deletes a vanity nameserver from the domain’s registry settings. This operation might fail if the registry detects the nameserver is still in use.

πŸ”Œ Usage

$client->vanityNameservers->deleteVanityNameserver(
    'example.com',
    'ns1.example.com',
);

βš™οΈ Parameters

$domainName: string β€” The domain name associated with the vanity nameserver.

$hostname: string β€” The hostname of the vanity nameserver to delete.

Webhook Notifications

$client->webhookNotifications->getSubscribedNotifications() -> ?ListSubscribedWebhooksResponse

πŸ“ Description

Retrieves all active webhook subscriptions on the account.

πŸ”Œ Usage

$client->webhookNotifications->getSubscribedNotifications();
$client->webhookNotifications->subscribeToNotification($request) -> ?SubscribeToNotificationResponse

πŸ“ Description

Creates a webhook subscription to receive real-time notifications about specific domain or account events (e.g. transfer completions, renewals). Pass the callback URL and event types. This allows external systems to stay in sync with name.com changes. Supported webhook event names:

  • account.credit.balance_change – account credit balance changes (increases or decreases).
  • account.domain.removal – domain removed from the subscribing account.
  • domain.lock.status_change – domain lock added or removed.
  • domain.transfer.status_change – domain transfer IN to name.com; status updates while name.com is the gaining registrar.
  • domain.transfer_out.status_change – domain transfer OUT from name.com; initiated, completed (domain removed), or canceled (no longer pending at the registry).
  • domain.transfer.internal_in - name.com domain transfers in to the subscribing account via internal transfer.
  • domain.transfer.internal_out - name.com domain transfers out of the subscribing account via internal transfer.
  • contact.verification.status_change - contact verification status changes (verified or unverified).
  • domain.registry.rejection – domain create failed after asynchronous registry processing (uncommon; most creates succeed at request time).
  • domain.expiration – domain has expired and entered the post-expiry grace period. This is informational only.

πŸ”Œ Usage

$client->webhookNotifications->subscribeToNotification(
    new SubscribeToNotification([
        'eventName' => AvailableWebhooks::AccountCreditBalanceChange->value,
        'url' => 'https://example.com',
        'active' => true,
    ]),
);

βš™οΈ Parameters

$eventName: string

$url: string β€” The URL we will send the notification data to

$active: bool β€” If the webhook should be active. This allows a webhook to be deactivated in our system. It may be useful to deactivate a webhook if the server that receives the POST request is undergoing scheduled maintenance, for example.

$client->webhookNotifications->modifySubscription($id, $request) -> ?ModifySubscriptionResponse

πŸ“ Description

Updates an existing webhook’s configuration. This may include changing the callback URL or updating whether the webhook is currently active.

πŸ”Œ Usage

$client->webhookNotifications->modifySubscription(
    1,
    new ModifySubscriptionRequest([
        'body' => new ModifySubscriptionRequestBodyUrl([
            'url' => 'url',
        ]),
    ]),
);

βš™οΈ Parameters

$id: int β€” ID of the subscription to update.

$request: ModifySubscriptionRequestBodyUrl|ModifySubscriptionRequestBodyActive

$client->webhookNotifications->deleteSubscription($id)

πŸ“ Description

Removes a webhook subscription from the account.

πŸ”Œ Usage

$client->webhookNotifications->deleteSubscription(
    1,
);

βš™οΈ Parameters

$id: int β€” ID of the subscription to delete.

Orders

$client->orders->listOrders($request) -> ?ListOrdersResponse

πŸ“ Description

Retrieves a list of all orders placed in the account.

πŸ”Œ Usage

$client->orders->listOrders(
    new ListOrdersRequest([]),
);

βš™οΈ Parameters

$perPage: ?int β€” Per Page is the number of records to return per request. Per Page defaults to 500.

$page: ?int β€” Page is which page to return.

$dir: ?string β€” Dir indicates direction of list order. Possible values are 'asc' (default) or 'desc'.

$domainName: ?string β€” DomainName filters orders by domain name. Supports exact match or wildcard (starts with '*').

$tld: ?string β€” Tld filters orders by tld.

$createDateStart: ?string β€” CreateDateStart filters orders created on or after this date.

$createDateEnd: ?string β€” CreateDateEnd filters orders created on or before this date.

$type: ?string β€” Type filters orders by order item type (e.g., 'registration', 'renewal', 'transfer', 'whois_privacy').

$orderStatus: ?string β€” OrderStatus filters orders by status.

$client->orders->getOrder($orderId) -> ?Order

πŸ“ Description

Fetches full details about a specific order using its ID. This includes domains, prices, and timestamps. Useful for confirming transactions, receipts, or generating invoices.

πŸ”Œ Usage

$client->orders->getOrder(
    1,
);

βš™οΈ Parameters

$orderId: int β€” OrderId is the unique identifier of the requested order.

Refunds

$client->refunds->processRefund($request) -> ?RefundResponse

πŸ“ Description

Deletes eligible domains and security products during the Add Grace Period (AGP) and automatically issues refunds for the associated order items.

Eligibility Requirements

  • Product Types: Only registration and whois_privacy product types are eligible for refunds.
  • AGP Timing: Items must be within the Add Grace Period (typically 5 days from registration, varies by TLD).
  • Order Ownership: All orderItemIds must belong to the specified orderId.

Refund Processing

Refunds are processed in the following order:

  1. Domain deletion is attempted for each eligible order item
  2. Upon successful deletion, the refund is issued
  3. Refunds are sent to the original payment method on file
  4. If the original payment method is unavailable, the refund is credited to the account balance

Idempotency

This endpoint supports idempotent requests via the X-Idempotency-Key header. If you retry a request with the same idempotency key, you will receive the same response as the original request. This is useful for safely retrying requests without risk of processing duplicate refunds.

πŸ”Œ Usage

$client->refunds->processRefund(
    new RefundRequest([
        'orderId' => 123456,
        'orderItemIds' => [
            987654,
        ],
    ]),
);

βš™οΈ Parameters

$orderId: int β€” The unique identifier of the order containing the item(s) to be refunded. Use the List Orders endpoint to retrieve order IDs.

$orderItemIds: array β€” An array of order item IDs to be refunded. All items must belong to the specified order. Use the List Orders endpoint to retrieve order item IDs.

Transfers

$client->transfers->listTransfers($request) -> ?ListTransfersResponse

πŸ“ Description

Returns all domain transfer requests for the account, including in-progress and recent transfers.

πŸ”Œ Usage

$client->transfers->listTransfers(
    new ListTransfersRequest([]),
);

βš™οΈ Parameters

$perPage: ?int β€” Per Page is the number of records to return per request. Per Page defaults to 500.

$page: ?int β€” Page is which page to return.

$client->transfers->createTransfer($request) -> ?CreateTransferResponse

πŸ“ Description

Initiates a domain transfer into your name.com account from another registrar. You must provide the domain name and its valid transfer authorization code (EPP code). The domain must not be locked or under any transfer restrictions (e.g. clientTransferProhibited). If successful, the transfer is submitted and tracked through the ICANN transfer process. Once a transfer has been created, you can track its progress via the GetTransfer endpoint. Transfer pricing: Omit purchasePrice for standard (non-premium) transfers. For premium transfers, pass transferPrice from Get Pricing For Domain as purchasePrice. If sent, it must match Get Pricing transferPrice exactly or the request will fail. Premium transfers without purchasePrice will fail. See the Domain pricing guide for how Get Pricing transferPrice relates to the years query parameter.

πŸ”Œ Usage

$client->transfers->createTransfer(
    new CreateTransferRequest([
        'authCode' => 'ABC123',
        'domainName' => 'example.com',
    ]),
);

βš™οΈ Parameters

$authCode: string β€” AuthCode is the authorization code for the transfer. Not all TLDs require authorization codes, but most do.

$domainName: string β€” DomainName is the domain you want to transfer to name.com.

$privacyEnabled: ?bool β€” PrivacyEnabled is a flag on whether to purchase Whois Privacy with the transfer. If this flag is omitted from the request, the system will check the account's Whois Privacy auto-add settings. If auto-add is enabled in your account settings, Whois Privacy will be added by default, provided the TLD supports it.

$purchasePrice: ?float β€” PurchasePrice is the USD inbound transfer fee, before VAT. VAT is applied when applicable and must not be included here. If sent, must match Get Pricing transferPrice exactly or the request will fail.. Omit for standard (non-premium) transfers. Required for premium transfers β€” use transferPrice from Get Pricing.

$client->transfers->getTransfer($domainName) -> ?Transfer

πŸ“ Description

Retrieves details of a specific domain transfer request.

πŸ”Œ Usage

$client->transfers->getTransfer(
    'domainName',
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain you want to get the transfer information for.

$client->transfers->cancelTransfer($domainName, $request) -> ?Transfer

πŸ“ Description

Cancels a pending transfer request. This can be used if the transfer was initiated in error or if the authorization code provided was incorrect. The price of the transfer will refund the amount to account credit.

Cancelable statuses:

  • pending
  • submitting_transfer
  • pending_new_auth_code
  • pending_unlock
  • pending_registry_unlock
  • rejected

Non-cancelable statuses:

  • pending_transfer
  • pending_insert
  • completed
  • failed
  • canceled
  • canceled_pending_refund

πŸ”Œ Usage

$client->transfers->cancelTransfer(
    'domainName',
    new CancelTransferRequest([
        'body' => new EmptyObject([]),
    ]),
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain to cancel the transfer for.

$request: EmptyObject

$client->transfers->cancelOutboundTransfer($domainName, $request) -> ?CancelTransferOutResponse

πŸ“ Description

Cancels an outbound transfer for the given domain. Use this when the domain is being transferred out of name.com (losing registrar) to another (gaining) registrar and the registrant or reseller wants to cancel that transfer. On success, subscribers receive domain.transfer_out.status_change with status canceled. The endpoint validates that the domain exists and belongs to the authenticated account. Only domains in a pending transfer (out) state can be canceled.

πŸ”Œ Usage

$client->transfers->cancelOutboundTransfer(
    'example.com',
    new CancelOutboundTransferRequest([
        'body' => new EmptyObject([]),
    ]),
);

βš™οΈ Parameters

$domainName: string β€” DomainName is the domain whose transfer out should be canceled.

$request: EmptyObject

$client->transfers->createInternalTransferIn($request) -> ?DomainResponsePayload

πŸ“ Description

Pulls a domain from another name.com account into your reseller (gaining) account using a valid authorization code. This is an internal name.com-to-name.com move; it is separate from Create Transfer, which brings domains in from external registrars. Check if a TLD is eligible for internal transfer in by calling Tld Requirements for the TLD and checking property supportsInternalTransfer. This API is only available to approved reseller accounts. Contact name.com support to request access.

Losing account (dashboard only)

The party that holds the domain today must use the name.com dashboard on the losing account to unlock the domain (remove registrar transfer lock) and to copy the authorization code to provide to your integration. This endpoint does not unlock the domain or retrieve the auth code for the losing account.

Gaining account (this API)

Call this endpoint with domainName, authCode, and optional contacts using the gaining reseller's API credentials.

Contacts and post-transfer lock

If contacts is omitted, the gaining account's default contacts are applied. If contacts is provided, any roles included in the request are applied and omitted roles use the gaining account's default contacts (same pattern as Create Domain and Set Contacts). The 60-day contact-change transfer lock is enforced based on the gaining account's settings, consistent with Set Contacts.

Access

Restricted to approved enterprise resellers; other callers receive 403 Forbidden.

πŸ”Œ Usage

$client->transfers->createInternalTransferIn(
    new CreateInternalTransferInRequest([
        'domainName' => 'example.com',
        'authCode' => 'ABC123',
    ]),
);

βš™οΈ Parameters

$domainName: string β€” Fully qualified domain name to transfer in. The domain must be registered in another name.com account (the losing account).

$authCode: string β€” Transfer authorization code (EPP/auth code) for the domain. The losing account holder must obtain this code from the name.com dashboard; it is not exposed by this API for the losing account.

$contacts: ?ContactsRequest β€” WHOIS contacts to apply after the transfer. If omitted, the gaining account's default contacts are applied. If provided, include any roles to override; omitted roles use the gaining account's default contacts. Each supplied role must include complete contact fields. A registrar contact-change transfer lock may apply according to the gaining account's settings, consistent with the Set Contacts endpoint.

$client->transfers->getTransferEligibility($domainName) -> ?TransferEligibilityResponse

πŸ“ Description

Returns whether a domain is currently registered at name.com and whether the TLD supports internal transfer between name.com accounts. Use this to decide whether to send your user through the Create Transfer external transfer flow or the Create Internal Transfer In flow before initiating a transfer-in.

Response semantics

atName is true if the domain is currently registered at name.com in any account. This information is also publicly available via RDAP.

supportsInternalTransfer mirrors the TLD-level value returned by Tld Requirements. It indicates whether the TLD is eligible for internal transfer between name.com accounts. It does not reflect per-account allowlist eligibility β€” if your account is not allowlisted for internal transfer in, calling Create Internal Transfer In will return 403 Forbidden.

Privacy

This endpoint never reveals which account a domain is in. To check whether a domain is in your own account, use Get Domain instead.

πŸ”Œ Usage

$client->transfers->getTransferEligibility(
    'domainName',
);

βš™οΈ Parameters

$domainName: string β€” The domain to check transfer eligibility for. Punycode is normalized server-side, so either ASCII or UTF-8 is accepted.

Domain Info

$client->domainInfo->getRequirement($tld) -> ?GetRequirementResponse

πŸ“ Description

Returns the registration requirements some general information for a specific TLD. The response contains a detailed description of eligibility criteria and a fields object with all required and optional fields, including validation rules, conditional logic, and nested field structures. Provide the TLD as a path parameter to retrieve its complete registration requirements. Useful when you only need details for one TLD (e.g., when a user selects .fr from a dropdown).

πŸ”Œ Usage

$client->domainInfo->getRequirement(
    'fr',
);

βš™οΈ Parameters

$tld: string β€” TLD indicates which domain requirements to retrieve (without the dot prefix, e.g., 'fr' for .fr domains). For punycode TLDs, use the ASCII version instead of the UTF-8. So for the ΠΎΠ½Π»Π°ΠΉΠ½ TLD, you would submit xn--80asehdb.

$client->domainInfo->checkDomainClaims($domain, $request) -> ?DomainClaimsCheckResponse

πŸ“ Description

Performs the actual claims check for a specific domain. This endpoint checks if a specific domain has trademark claims against it, returning detailed information about any matching trademarks and their holders. Use this to verify if a domain can be registered without trademark conflicts. Please see the claims flow for information on how to use this endpoint in your domain purchase flow.

πŸ”Œ Usage

$client->domainInfo->checkDomainClaims(
    'tiktok.page',
    new DomainClaimsCheckRequest([]),
);

βš™οΈ Parameters

$domain: string β€” The domain name to check for trademark claims (e.g., 'tiktok.page', 'example.com'). Include the full domain name including the TLD.

$purchaseType: ?string β€” The type of purchase/registration for which to check claims. Defaults to 'registration'. Other values like 'landrush_eap', 'landrush_auction_a', 'landrush_reserve_a' may be used during new gTLD launches.

$client->domainInfo->getTldRequirementsV2($tld) -> ?RequirementsJsonSchema

πŸ“ Description

Returns the registration requirements as a JSON Schema (Draft 7) document. This endpoint is designed for form generation and validation libraries that consume JSON Schema directly.

πŸ”Œ Usage

$client->domainInfo->getTldRequirementsV2(
    'fr',
);

βš™οΈ Parameters

$tld: string β€” TLD indicates which domain requirements to retrieve (without the dot prefix, e.g., 'fr' for .fr domains). For punycode TLDs, use the ASCII version instead of the UTF-8. So for the ΠΎΠ½Π»Π°ΠΉΠ½ TLD, you would submit xn--80asehdb.

TLD Pricing

$client->tldPricing->tldPriceList($request) -> ?TldPriceListResponse

πŸ“ Description

This endpoint returns an alphabetical list of all TLDs supported by name.com, including pricing for each supported order type. All prices are in US Dollars (USD) and apply to non-premium domains. name.com provides three pricing types for each TLD:

  • Account-Level Pricing - Your price, including any applicable rebates, promotions, or account-level discounts. This is referenced as 'registrationprice', 'renewalprice', 'transferinprice' and 'domainrestorationprice' in this endpoint.
  • Original Pricing (No Discounts Applied) - The suggested retail price (MSRP) before any discounts are applied.
  • Retail Pricing (Public Site Pricing) - The current public retail price on name.com, including any public rebates or promotions, but before any account-level discounts.

Important Notes:

  • Promo codes are not supported through the API, and therefore are not reflected in any pricing values returned.
  • General TLD pricing only: This represents standard pricing for domains registered under the specified TLD. Pricing for specific domains may differ based on multiple factors (e.g., premium classifications, registry pricing rules). To retrieve pricing for an individual domain, use the GetPricingForDomain endpoint.
  • Availability: If a pricing value is returned as null, that product type is not currently supported for the TLD. (Example: registrationPrice = null means registrations are not currently available.)
  • If you do not have account level pricing, the retail price will always match your account level price. (e.g., registration price = registration retail price)

πŸ”Œ Usage

$client->tldPricing->tldPriceList(
    new TldPriceListRequest([
        'duration' => 1,
    ]),
);

βš™οΈ Parameters

$perPage: ?int β€” Per Page is the number of records to return per request. Per Page defaults to 25.

$page: ?int β€” Page is which page to return.

$duration: ?int β€” The number of years to get pricing for. The requested duration must be between 1 and 10 (inclusive). If the duration is not passed in the request, it will default to 1.

$tlds: ?string β€” A list of specific TLDs to get pricing for. Maximum of 25 TLDs can be requested at a time. When querying for IDN TLDs, due to character restrictions within a URL, they must be submitted in ASCII format. This means using "xn--9dbq2a" as opposed to it's unicode equivalent. The submitted TLDs will be checked for validity and support at name.com, and any invalid TLD will be removed from the submitted list. If all submitted TLDs are invalid or not supported by name.com, this will be considered a bad request, and a 400 Bad Request will be returned with an appropriate message.

Premium Domains

$client->premiumDomains->premiumDomainLists() -> ?PremiumDomainsDownloadResponse

πŸ“ Description

Gets a pre-signed URL that will allow a user to download a list of premium domains, with their registration and renewal pricing. Please Note: The pre-signed URL will only be valid for 10 minutes. This endpoint is only available to approved reseller accounts. Contact name.com support to request access.

πŸ”Œ Usage

$client->premiumDomains->premiumDomainLists();

Contact Verification

$client->contactVerification->unverifiedContactsList($request) -> ?UnverifiedContactsResponse

πŸ“ Description

Returns a list of contacts, related to domains within your account, that require verification as per ICANN procedures. When a new domain is created, unverified contacts are not immediately available in API responses. Records are added by a scheduled process that runs approximately every 10 minutes. As a result, there may be up to a 10-minute delay before unverified contacts appear in the API. This delay also applies to related events such as webhooks or other downstream systems that depend on contact verification data.

πŸ”Œ Usage

$client->contactVerification->unverifiedContactsList(
    new UnverifiedContactsListRequest([
        'perPage' => 100,
        'page' => 2,
    ]),
);

βš™οΈ Parameters

$perPage: ?int β€” PerPage is the number of records to return per request. If not passed in the request, the default value is 100 records.

$page: ?int β€” Page is which page to return. If not passed in the request, the default page is 1.

$client->contactVerification->verifyContact($verificationId, $request)

πŸ“ Description

Use this API to verify a contact. This API is only available to approved reseller accounts. Contact name.com support to request access.

πŸ”Œ Usage

$client->contactVerification->verifyContact(
    1,
    new VerifyContactRequest([
        'body' => new EmptyObject([]),
    ]),
);

βš™οΈ Parameters

$verificationId: int β€” The VerificationId required to verify a specific contact.

$request: EmptyObject

$client->contactVerification->resendContactVerificationEmail($verificationId, $request) -> ?ContactVerificationResendResponse

πŸ“ Description

Resend the contact verification email for a pending verification record.

Throttling

This endpoint enforces strict throttling to prevent abuse:

  • Per verificationId: max 1 resend per 15 minutes
  • Per reseller account: max 200 resends per rolling hour

nextEligibleAt is always returned so the client knows when it can try again.

On 429, the response uses the standard error envelope, and details contains the earliest retry time (RFC3339 UTC).

πŸ”Œ Usage

$client->contactVerification->resendContactVerificationEmail(
    1,
    new ResendContactVerificationEmailRequest([
        'body' => new EmptyObject([]),
    ]),
);

βš™οΈ Parameters

$verificationId: int β€” The verificationId for the pending contact verification record.

$request: EmptyObject