# Namecheap API Reference ## Base URL ``` https://api.namecheap.com/xml.response ``` ## Authentication All requests require these common parameters: | Parameter | Description | |-----------|-------------| | `ApiUser` | Namecheap username | | `ApiKey` | API key from https://ap.www.namecheap.com/settings/tools/apiaccess/ | | `UserName` | Same as ApiUser | | `ClientIp` | The whitelisted public IP address of the client | | `Command` | The API command prefixed with `namecheap.` | ## Setup Requirements 1. Log in to Namecheap 2. Go to https://ap.www.namecheap.com/settings/tools/apiaccess/ 3. Enable API Access (toggle to ON) 4. Add the client's public IP address to the whitelist 5. Copy the generated API key ## Commands --- ### namecheap.domains.getList Lists all domains in the account. **Additional Parameters:** | Parameter | Required | Description | |-----------|----------|-------------| | `ListType` | No | `ALL` (default), `EXPIRING`, or `EXPIRED` | | `SearchTerm` | No | Keyword to filter domains | | `Page` | No | Page number (default: 1) | | `PageSize` | No | Results per page, 10-100 (default: 20) | | `SortBy` | No | `NAME`, `NAME_DESC`, `EXPIREDATE`, `EXPIREDATE_DESC`, `CREATEDATE`, `CREATEDATE_DESC` | **Response XML:** ```xml 5120 ``` --- ### namecheap.domains.dns.getList Gets the list of DNS servers associated with a domain (shows whether it uses Namecheap DNS or custom nameservers). **Additional Parameters:** | Parameter | Required | Description | |-----------|----------|-------------| | `SLD` | Yes | Second-level domain (e.g., `example` for `example.com`) | | `TLD` | Yes | Top-level domain (e.g., `com` for `example.com`) | **Response XML:** ```xml dns1.registrar-servers.com dns2.registrar-servers.com ``` --- ### namecheap.domains.dns.getHosts Gets DNS host records for a domain. **Additional Parameters:** | Parameter | Required | Description | |-----------|----------|-------------| | `SLD` | Yes | Second-level domain (e.g., `example` for `example.com`) | | `TLD` | Yes | Top-level domain (e.g., `com` for `example.com`) | **Response XML:** ```xml ``` --- ### namecheap.domains.dns.setHosts Sets (replaces) all DNS host records for a domain. **IMPORTANT:** This command replaces ALL existing records. Always fetch existing records first. **Additional Parameters:** | Parameter | Required | Description | |-----------|----------|-------------| | `SLD` | Yes | Second-level domain | | `TLD` | Yes | Top-level domain | | `HostNameN` | Yes | Host name for record N (e.g., `@`, `www`, `mail`) | | `RecordTypeN` | Yes | Record type for record N (A, AAAA, CNAME, MX, TXT, etc.) | | `AddressN` | Yes | Value for record N (IP address or target hostname) | | `MXPrefN` | No | MX priority for record N (required for MX records) | | `TTLN` | No | TTL in seconds for record N (default: 1800) | Records are numbered starting from 1: `HostName1`, `RecordType1`, `Address1`, `HostName2`, `RecordType2`, `Address2`, etc. **Response XML:** ```xml ``` --- ### namecheap.domains.dns.setDefault Sets a domain to use Namecheap's default DNS servers. **Additional Parameters:** | Parameter | Required | Description | |-----------|----------|-------------| | `SLD` | Yes | Second-level domain | | `TLD` | Yes | Top-level domain | **Response XML:** ```xml ``` --- ### namecheap.domains.dns.setCustom Sets a domain to use custom nameservers (e.g., Cloudflare, Route53). **Additional Parameters:** | Parameter | Required | Description | |-----------|----------|-------------| | `SLD` | Yes | Second-level domain | | `TLD` | Yes | Top-level domain | | `Nameservers` | Yes | Comma-separated list of nameservers (max 12, no spaces) | **Example:** `Nameservers=ns1.cloudflare.com,ns2.cloudflare.com` **Response XML:** ```xml ``` --- ### namecheap.domains.dns.getEmailForwarding Gets email forwarding settings for a domain. **Additional Parameters:** | Parameter | Required | Description | |-----------|----------|-------------| | `DomainName` | Yes | Full domain name (e.g., `example.com`) | **Response XML:** ```xml ``` --- ### namecheap.domains.dns.setEmailForwarding Sets email forwarding for a domain. Replaces all existing forwarding rules. **Additional Parameters:** | Parameter | Required | Description | |-----------|----------|-------------| | `DomainName` | Yes | Full domain name (e.g., `example.com`) | | `MailBoxN` | Yes | Mailbox name for rule N (e.g., `info`, `support`) | | `ForwardToN` | Yes | Destination email for rule N | Rules are numbered starting from 1: `MailBox1`, `ForwardTo1`, `MailBox2`, `ForwardTo2`, etc. Omitting all MailBox/ForwardTo parameters deletes all forwarding rules. **Response XML:** ```xml ``` --- ### namecheap.domains.ns.create Creates a child nameserver (glue record) for a domain. **Additional Parameters:** | Parameter | Required | Description | |-----------|----------|-------------| | `SLD` | Yes | Second-level domain | | `TLD` | Yes | Top-level domain | | `Nameserver` | Yes | Nameserver hostname to create (e.g., `ns1.example.com`) | | `IP` | Yes | IP address for the nameserver | **Response XML:** ```xml ``` --- ### namecheap.domains.ns.delete Deletes a child nameserver. **Additional Parameters:** | Parameter | Required | Description | |-----------|----------|-------------| | `SLD` | Yes | Second-level domain | | `TLD` | Yes | Top-level domain | | `Nameserver` | Yes | Nameserver hostname to delete | **Response XML:** ```xml ``` --- ### namecheap.domains.ns.getInfo Gets information about a child nameserver. **Additional Parameters:** | Parameter | Required | Description | |-----------|----------|-------------| | `SLD` | Yes | Second-level domain | | `TLD` | Yes | Top-level domain | | `Nameserver` | Yes | Nameserver hostname to query | **Response XML:** ```xml OK ``` --- ### namecheap.domains.ns.update Updates the IP address of a child nameserver. **Additional Parameters:** | Parameter | Required | Description | |-----------|----------|-------------| | `SLD` | Yes | Second-level domain | | `TLD` | Yes | Top-level domain | | `Nameserver` | Yes | Nameserver hostname to update | | `OldIP` | Yes | Current IP address of the nameserver | | `IP` | Yes | New IP address for the nameserver | **Response XML:** ```xml ``` ## Error Responses ```xml Domain not found ``` Common error codes: - `1011102` — Invalid API key - `1011148` — IP not whitelisted - `2019166` — Domain not found - `2016166` — Domain not using Namecheap DNS ## Record Types | Type | Description | Address Format | |------|-------------|---------------| | `A` | IPv4 address | `1.2.3.4` | | `AAAA` | IPv6 address | `2001:db8::1` | | `CNAME` | Canonical name | `target.example.com.` | | `MX` | Mail exchange | `mail.example.com.` (requires MXPref) | | `MXE` | MX equivalent (IP) | `1.2.3.4` | | `TXT` | Text record | Any text value | | `URL` | URL redirect (unmasked) | `http://example.com` | | `URL301` | Permanent redirect | `http://example.com` | | `FRAME` | URL redirect (masked) | `http://example.com` | ## TTL Values | Seconds | Human Readable | |---------|---------------| | 60 | 1 minute | | 300 | 5 minutes | | 1800 | 30 minutes (default) | | 3600 | 1 hour | | 14400 | 4 hours | | 43200 | 12 hours | | 86400 | 1 day |