What Is a Domain Reseller API?

How to Sell Domains Without Becoming a Registrar: Domain Reseller API Guide with OT&E, WHMCS and Reseller System (2026)

You've built a hosting company. Your customers want to buy domains from you.

But becoming an ICANN-accredited registrar means hundreds of thousands of dollars in infrastructure, legal processes, registry agreements, 24/7 abuse management, and years of compliance overhead.

Here's the good news: you don't need any of that.

A Domain Reseller API lets you tap into a fully accredited registrar's technical infrastructure via REST calls — while keeping your pricing, branding, and customer relationships entirely your own. Whether you're running a hosting company, a SaaS platform, a web agency, or a developer team building custom tooling, this guide covers everything you need to get from zero to live domain sales.

What this guide covers:

  • ✔ The Registry → Registrar → Reseller hierarchy — who owns what
  • ✔ REST API authentication: UUID username, API token, and OT&E access
  • ✔ Not just WHMCS: WiseCP, HostBill, Blesta, ClientExec integrations
  • ✔ OT&E sandbox to production: real URLs, credentials, and first API calls
  • ✔ DNS, DNSSEC, Glue Records, Transfer, Restore, WHOIS — all via API
  • ✔ Rate limits, error codes, exponential backoff, and performance patterns

The Domain Ecosystem: Registry, Registrar, Reseller, and ICANN

The domain name industry runs on a three-layer structure tied together by contracts and technical standards. You can use a reseller API without understanding this hierarchy, but you can't understand what the API is actually doing without it.

What Is ICANN?

ICANN (Internet Corporation for Assigned Names and Numbers) is the global coordination body for the domain name system. It defines who can manage TLDs, what technical and policy standards apply, and which organizations get accredited as registrars. ICANN doesn't sell domains itself — it delegates that authority to accredited registrars.

What Is a Registry?

A registry manages the database and infrastructure for a specific TLD. Verisign runs .com and .net; PIR runs .org. Registries only work with registrars — they don't deal with end users directly. The wholesale price of a .com domain is set by the registry (Verisign) through a negotiated agreement with ICANN.

What Is a Registrar?

A registrar is an ICANN-accredited organization with a direct technical integration to registry systems. Registrars can sell domains, process transfers, write to the WHOIS database, and communicate with registries over the EPP protocol. Getting accredited requires significant upfront investment, technical infrastructure, and ongoing compliance work.

What Is a Reseller?

A reseller uses a registrar's infrastructure and ICANN accreditation to sell domains under their own brand, without needing their own accreditation. You set your pricing, your customer experience, and your margins. The registrar handles the technical layer beneath you.

Layer Who? Sells To Example
ICANN Global coordinator Registries Sets the rules
Registry TLD operator Registrars only Verisign (.com), PIR (.org)
Registrar ICANN-accredited company End users and resellers Domain Name API
Reseller You Your customers Your branded platform

What Is a Domain Reseller API?

How to Sell Domains Without Becoming a Registrar: Domain Reseller API Guide with OT&E, WHMCS and Reseller System (2026)

Domain Reseller API — Quick Answer

A Domain Reseller API is a programmatic interface that lets you register, transfer, renew, and manage domains using code — without ICANN accreditation, registry agreements, or your own registrar infrastructure. You get the full capability; the registrar carries the technical and compliance overhead.

In practice: when a customer searches for a domain on your site, a background API call goes to the registrar's infrastructure and returns availability in milliseconds. When the customer pays, the API registers the domain, sets DNS, and sends a confirmation email — all automatically. You can process hundreds of domains without touching a single one manually.

Registrar vs. Reseller: What's the Real Difference?

Feature Domain Name API Reseller Becoming an ICANN Registrar
ICANN accreditation ❌ Not required ✅ Required (expensive, slow)
Upfront cost Free to start, no minimum deposit Hundreds of thousands in infrastructure
Registry agreements The platform handles it Separate agreement per TLD
API integration Ready-made REST API + modules You build it yourself
800+ TLD access ✅ Immediate ❌ Takes years to build
Maintenance and updates Platform managed Your responsibility
Abuse management Platform support 24/7 on your team
WHMCS/WiseCP modules ✅ Free, available now ❌ You build or hire
Time to first sale Hours to days Months to years
40,000+ active resellers have chosen this model over registrar accreditation. Becoming a registrar makes sense for a tiny number of large platforms. For everyone else, a reseller API is the right approach: full domain sales capability without the operational weight.  

What a Domain Reseller API Should Be Able to Do

  • ✔ CheckAvailability — query single or bulk domain availability
  • ✔ Register — create a new domain registration
  • ✔ Transfer — move a domain from another registrar
  • ✔ Renew — extend a registration
  • ✔ Restore — recover a recently deleted domain
  • ✔ Delete — cancel a registration
  • ✔ ModifyNameServer — update DNS nameservers
  • ✔ GetDetails / GetList — retrieve domain information
  • ✔ WHOIS / RDAP query
  • ✔ Lock / Unlock — transfer protection
  • ✔ GetAuthCode — retrieve the EPP transfer key

Why REST Replaced SOAP

How to Sell Domains Without Becoming a Registrar: Domain Reseller API Guide with OT&E, WHMCS and Reseller System (2026)

Older domain integrations were largely built on SOAP (Simple Object Access Protocol) — XML envelopes, WSDL files, namespace declarations. Writing even a simple request was a significant effort.

REST (Representational State Transfer) is built on standard HTTP, uses JSON, and requires far less boilerplate. The practical benefits are real:

Criteria

SOAP

Criteria SOAP REST
JSON (lightweight) Learning curve Steep
Low Browser testing Difficult
Easy (Swagger / Postman) Debugging Complex
Straightforward Performance Moderate
High Ecosystem support Declining
Universal   Domain Name API has completed this transition. The REST API is live and in production. If you're currently on the legacy SOAP integration, migrating to REST is worth the effort — the development experience and response times are noticeably better.

REST API documentation and Swagger: domainnameapi.com/api-integration.

Domain Name API: Real Numbers

Metric Value
Active resellers 40,000+
Country coverage 200+
Supported TLDs 800+
Industry experience 20+ years
ICANN accreditation Yes
Registration fee Free, no upfront payment, no minimum balance
Payment methods Credit card, wire transfer, PayPal, Stripe, Alipay
Pricing tiers Reseller, Premium, Platinum, VIP
Open-source modules on GitHub github.com/domainreseller

For context: ResellerClub supports 300+ TLDs, GoDaddy reseller supports 200+, ENOM around 500+. Domain Name API's 800+ TLD range is broader than most competitors. More notably, it's the only platform in its class with official modules for Blesta, WiseCP, and ClientExec — platforms that competitors don't cover.

API Authentication: UUID Username and API Token

The REST API does not use a traditional username/password combination in the way you might expect. Authentication works like this:

UUID-format username: your account identifier in UUID format (e.g., fd2bea54-99ea-16b6-c195-3a1b9079df00)

API token (password): your API token used alongside the UUID username

Both Production and OT&E environments use the same credentials — only the base URL changes. The library detects which mode to use based on your username format: a UUID triggers REST mode; a regular username triggers legacy SOAP mode.

SOAP vs. REST Mode Detection (PHP Library)


// SOAP mode (legacy) — regular username

$dna = new \DomainNameApi\DomainNameAPI_PHPLibrary('myreseller', 'mypassword');


// REST mode (new) — UUID-format username

$dna = new \DomainNameApi\DomainNameAPI_PHPLibrary(

    'fd2bea54-99ea-16b6-c195-3a1b9079df00',

    'your-api-token'

);


// Both modes use identical method calls

$details = $dna->GetResellerDetails();

$domains = $dna->GetList([]);

Never put your API token in client-side code (browser JavaScript, mobile app bundles, etc.). All API calls must happen server-side; the token stays in your backend only.

The OT&E Test Environment

OT&E (Operational Test & Evaluation) is an isolated environment where you can run your full API integration without creating real registrations or incurring any charges. It's a standard part of ICANN registrar accreditation — and it's why Domain Name API makes it available to every reseller.

Why You Shouldn't Skip OT&E

A misconfigured Register call in production creates a real domain registration and a real charge.

A broken transfer flow can leave a customer's domain stuck in a lock state.

Hitting the rate limit in production halts your entire integration instantly.

A DNS record typo in a nameserver update can take a customer's site offline for hours.

OT&E and Production Access

Environment Swagger URL Credentials
Production api.domainresellerapi.com/swagger Your UUID username + API token (same as domainnameapi.com login)
OT&E (Test) ote.domainresellerapi.com/swagger Same UUID username + API token — credentials are shared across environments

Note the URLs:

Production Swagger: https://api.domainresellerapi.com/swagger/index.html

OT&E Swagger: https://ote.domainresellerapi.com/swagger/index.html

Production and OT&E share the same credentials. Only the base URL is different. The library auto-selects REST mode when it sees a UUID-format username.

What can you do in 10 minutes right now?

Create a free reseller account, open the OT&E Swagger, authenticate with your UUID credentials, and run your first CheckAvailability call — no real registration, no charges, no risk. Once your integration is validated, switching to production is a one-line URL change.

Core API Operations: Register, Transfer, Renew, Restore

1. Domain Availability Check

The starting point of every domain sales flow. Domain names and TLDs are passed as separate arrays — the API returns availability, pricing, and premium status for every combination.


// $dna->CheckAvailability(domain_names[], tlds[], period, command)

$result = $dna->CheckAvailability(

    ['hello', 'world123x0', 'myshop'],  // domain names (no extension)

    ['com', 'net', 'org'],              // TLD list

    1,                                  // registration period (years)

    'create'                            // command

);


// Sample response:

// [TLD]        => com

// [DomainName] => hello

// [Status]     => notavailable

// [Price]      => 10.8100

// [Currency]   => USD

//

// [TLD]        => com

// [DomainName] => world123x0

// [Status]     => available

// [Price]      => 10.8100

2. Domain Registration

Registration requires the domain name, period (years), full contact details for all four contact roles, and nameservers. Every contact field matters — missing fields return error code 330.


$contact = [

    "FirstName"        => 'John',

    "LastName"         => 'Doe',

    "Company"          => 'Example Corp',

    "EMail"            => 'john.doe@example.com',

    "AddressLine1"     => '123 Main Street',

    "AddressLine2"     => '',

    "AddressLine3"     => '',

    "City"             => 'Springfield',

    "Country"          => 'US',

    "Fax"              => '5559876543',

    "FaxCountryCode"   => '1',

    "Phone"            => '5551234567',

    "PhoneCountryCode" => 1,

    "Type"             => 'Contact',

    "ZipCode"          => '62701',

    "State"            => 'IL'

];


$dna->RegisterWithContactInfo(

    'example.com',   // domain name

    1,               // period in years

    [

        'Administrative' => $contact,

        'Billing'        => $contact,

        'Technical'      => $contact,

        'Registrant'     => $contact

    ],

    ["ns1.example.com", "ns2.example.com"],

    true,   // WHOIS privacy

    false   // transfer lock

);


// Successful response:

// [result]           => OK

// [data][DomainName] => example.com

// [data][Status]     => clientTransferProhibited

// [data][AuthCode]   => Xy9#mK2$pL5@vN8

// [data][LockStatus] => true

3. Domain Transfer

Transfer requires a valid EPP/auth code from the current registrar. Before initiating: the domain's transfer lock must be removed, the domain must not have been registered or transferred within the last 60 days, and the admin contact email address must be reachable (for generic TLD transfer confirmation emails).


$dna->Transfer('example.com', 'EPP_AUTH_CODE', 1);


// Successful response:

// [result] => OK

4. Domain Renewal

Renewal should happen before the expiration date. Many TLDs provide a short grace period (typically 30 days) after expiry; check GetTldList() for TLD-specific rules.


$dna->Renew('example.com', 1);


// Successful response:

// [result]               => OK

// [data][ExpirationDate] => 2027-03-15T10:00:00

5. Domain Restore

A deleted domain can be recovered during the Redemption Grace Period (typically 30 days post-deletion) for an additional registry fee. Once this window closes, the domain can be registered by anyone. Monitor expiration dates carefully.

WHOIS, RDAP, and DNS Management

WHOIS vs. RDAP — Quick Answer

WHOIS is the legacy protocol for querying domain ownership data (port 43). RDAP is its modern replacement: HTTPS-based, JSON-formatted, ICANN-backed, and machine-readable. Post-GDPR, most registrant data in WHOIS is masked; RDAP is the correct protocol for new integrations.

DNS Record Management via API

Domain Name API lets you manage DNS records for registered domains programmatically. Supported record types:

Record Type What It Does
A Maps domain to an IPv4 address
AAAA Maps domain to an IPv6 address
CNAME Aliases one domain to another
MX Defines the mail server
TXT SPF, DKIM, DMARC, and verification records
NS Defines authoritative nameservers
SRV Specifies service location
CAA Restricts which CAs can issue SSL certificates for the domain

DNSSEC, Glue Records, and Child Nameservers

DNSSEC — Quick Answer

DNSSEC (Domain Name System Security Extensions) adds cryptographic signatures to DNS responses, protecting against DNS spoofing and cache poisoning attacks. Activating DNSSEC via API requires submitting a DS (Delegation Signer) record to the registry.

What Is a Glue Record?

If you're hosting nameservers on your own domain (e.g., ns1.yourdomain.com) and the nameserver's IP lives under the same domain, you have a circular dependency — you can't resolve the nameserver without the nameserver. A glue record solves this by registering the nameserver's IP directly with the registry.


// Add a glue record for ns1.yourdomain.com

$dna->AddChildNameServer('yourdomain.com', 'ns1.yourdomain.com', '192.0.2.10');


// Successful response:

// [data][NameServer]    => ns1.yourdomain.com

// [data][IPAdresses][0] => 192.0.2.10

// [result]              => OK

Child Nameserver (Host Object)

A child nameserver record registers a subdomain of your domain as an independent nameserver object in the registry system. This is commonly required when building custom DNS infrastructure or setting up WHMCS with private nameservers.

Bulk Domain Operations and Rate Limits

Rate Limit — Quick Answer

Domain Name API enforces rate limits to protect system stability. Exceeding them returns error code 360 (API quota exceeded) or 361 (Throttled). Best practices: bundle domain names and TLDs into a single CheckAvailability request instead of looping individually, and cache availability results for 60–120 seconds to reduce repeat queries.

For resellers managing large volumes, individual API calls per domain become both inefficient and risky. The CheckAvailability method accepts arrays for this reason: you can check dozens of domain/TLD combinations in a single request instead of firing off one call per domain.

When you do hit a rate limit, the correct response is exponential backoff: wait 1 second before the first retry, 2 seconds before the second, 4 seconds before the third. Retrying immediately just keeps you throttled. See the error handling section for the full code pattern.

Full rate limit policy: Domain API Rate Limit, Throttling & Bulk Usage Policy.

Premium Domains and Pricing Tiers

Premium Domain — Quick Answer

Premium domains are short, memorable, or high-value names priced by the registry significantly above the standard registration fee. The CheckAvailability response returns isPremium: true and a premiumPrice field. Never complete a premium domain transaction without displaying the price to the customer first.

Pricing tiers: Domain Name API offers four wholesale pricing tiers — Reseller, Premium, Platinum, and VIP. Higher sales volumes unlock lower per-domain costs. At the VIP/Platinum tier, .com wholesale starts at $10.81/year. Your retail margin is yours to set.

Current wholesale pricing: Domain Prices.

White Label and Sub-Reseller Systems

White Label Domain Reseller — Quick Answer

White label means your customers see only your brand — in the management panel, invoices, and email communications — while Domain Name API infrastructure runs underneath. No reference to Domain Name API appears in any customer-facing surface.

Sub-Reseller System

The sub-reseller feature lets you build your own reseller network on top of your account. You can create child accounts for other companies or independent agents, set their wholesale pricing independently, and manage their domain portfolios from a central view. This is particularly valuable for IT distributors, hosting aggregators, and large agencies managing partner channels.

What the sub-reseller system gives you:

  • • Build your own reseller network — set each reseller's pricing independently
  • • Monitor each sub-reseller's portfolio from a central dashboard
  • • Enable or disable API access per sub-reseller independently
  • • Build a multi-tier revenue model on a single platform

Integration Paths: WHMCS, WiseCP, HostBill, Blesta, ClientExec

Rather than building custom billing infrastructure from scratch, most resellers connect Domain Name API to an existing hosting billing platform. All modules are free and available on GitHub.

WHMCS

Web Host Manager Complete Solution (WHMCS) is the world's most widely used hosting billing and client management platform. Domain Name API's free WHMCS module connects directly: once installed, WHMCS automatically handles domain availability, registration, transfer, renewal, and DNS management through the API — no manual domain processing.

Module installation: github.com/domainreseller

In WHMCS: Setup > Products/Services > Domain Registrars

Check module version compatibility in the Knowledge Base before installing

WHMCS integration details: domainnameapi.com/whmcs.

WiseCP

WiseCP is a modern billing panel with strong multi-language support, popular particularly in Turkey and the surrounding region. Domain Name API's WiseCP module provides full domain lifecycle integration.

WiseCP integration guide: domainnameapi.com/wisecp.

HostBill

HostBill is a feature-rich hosting automation platform with 150+ modules. Domain Name API's HostBill integration covers full domain and SSL management within the HostBill environment.

HostBill integration: domainnameapi.com/hostbill.

Blesta

Blesta's open-source approach and flexible licensing make it a strong choice for teams that want more control over their billing environment. Domain Name API's Blesta module covers the full domain lifecycle.

Blesta integration: domainnameapi.com/blesta.

ClientExec

ClientExec is a billing, client management, and support platform built specifically for web hosting companies. Full domain integration is available.

ClientExec integration: domainnameapi.com/clientexec.

Other Platforms

FOSSBilling, HostFact, and Upmind also work with Domain Name API via the REST API. For fully custom integrations, the REST API can be called directly from any language or framework that can make HTTPS requests.

Language SDKs: PHP, Python, Node.js, .NET

PHP (Official Library)


// Install: composer require domainreseller/php-dna

require_once __DIR__.'/vendor/autoload.php';

use DomainNameApi\DomainNameAPI_PHPLibrary;


// UUID-format username → REST mode is auto-selected

// Same credentials for OT&E and Production

$dna = new DomainNameAPI_PHPLibrary(

    'fd2bea54-99ea-16b6-c195-3a1b9079df00',  // UUID username

    'your-api-token'                          // API token

);


// Domain availability check

// CheckAvailability(domain_names[], tlds[], period, command)

$result = $dna->CheckAvailability(['hello', 'myshop'], ['com', 'net'], 1, 'create');


// Account balance

$reseller = $dna->GetResellerDetails();

echo 'Balance: ' . $reseller['balance'] . ' ' . $reseller['currency'];

Python


import requests


# OT&E: ote.domainresellerapi.com  |  Production: api.domainresellerapi.com

BASE_URL = "https://ote.domainresellerapi.com"


# HTTP Basic Auth — UUID username + API token

UUID_USERNAME = "fd2bea54-99ea-16b6-c195-3a1b9079df00"

API_TOKEN = "your-api-token"

auth = (UUID_USERNAME, API_TOKEN)


# Domain availability check

# Domain names and TLDs are passed as separate comma-separated params

response = requests.get(

    f"{BASE_URL}/api/domain/check",

    params={

        "domainNames": "hello,myshop",

        "tlds": "com,net",

        "period": 1,

        "command": "create"

    },

    auth=auth

)


print(response.json())

Node.js


const fetch = require('node-fetch');


// OT&E: ote.domainresellerapi.com  |  Production: api.domainresellerapi.com

const BASE_URL = 'https://ote.domainresellerapi.com';


const UUID_USERNAME = 'fd2bea54-99ea-16b6-c195-3a1b9079df00';

const API_TOKEN = 'your-api-token';

const basicAuth = 'Basic ' + Buffer.from(UUID_USERNAME + ':' + API_TOKEN).toString('base64');


async function checkAvailability(domains, tlds) {

  const params = new URLSearchParams({

    domainNames: domains.join(','),

    tlds: tlds.join(','),

    period: 1,

    command: 'create'

  });

  const response = await fetch(BASE_URL + '/api/domain/check?' + params, {

    headers: { 'Authorization': basicAuth }

  });

  return response.json();

}

checkAvailability(['hello', 'myshop'], ['com', 'net']).then(console.log);

.NET (C#)


using System.Net.Http;

using System.Net.Http.Headers;

using System.Text;


// OT&E: ote.domainresellerapi.com  |  Production: api.domainresellerapi.com

const string BASE_URL = "https://ote.domainresellerapi.com";

const string UUID_USERNAME = "fd2bea54-99ea-16b6-c195-3a1b9079df00";

const string API_TOKEN = "your-api-token";


var client = new HttpClient();

var credentials = Convert.ToBase64String(

    Encoding.ASCII.GetBytes(UUID_USERNAME + ":" + API_TOKEN));

client.DefaultRequestHeaders.Authorization =

    new AuthenticationHeaderValue("Basic", credentials);


var url = BASE_URL + "/api/domain/check?domainNames=hello,myshop&tlds=com,net&period=1&command=create";

var response = await client.GetAsync(url);

Console.WriteLine(await response.Content.ReadAsStringAsync());

All examples target the OT&E environment. To go live, change the base URL to api.domainresellerapi.com — credentials are identical. For exact endpoint paths, refer to the official Swagger documentation at api.domainresellerapi.com/swagger.

Security: IP Whitelist, API Token Management, HTTPS

Three Non-Negotiable Security Rules

Rule 1: Your API token belongs in your backend only — embedding it in frontend code is a critical vulnerability.

Rule 2: Enable IP whitelisting in your reseller panel — requests from unlisted IPs return error code 301 and are blocked immediately.

Rule 3: HTTPS only — never make API calls over plain HTTP.

IP Whitelisting

Your reseller panel lets you whitelist specific IP addresses (your backend servers) from which API requests are accepted. Even if your API token is somehow exposed, an attacker can't use it without matching your whitelisted IPs.

API Token Rotation

Rotate your API token at regular intervals and immediately after any team departure or suspected breach. Disabling the old token and issuing a new one is the fastest way to close unauthorized access.

Backend-Only API Calls

Every API call must come from your server. Your frontend application should call your own backend, which then calls the Domain Name API. No token should ever appear in browser-executed JavaScript, mobile app source code, or any client-facing bundle.

Migration: Moving an Existing Domain Portfolio

If you're currently using another registrar or reseller platform and want to migrate to Domain Name API, the process is manageable — but it needs coordination to avoid customer downtime.

Migration Flow

  • 1.Export your current domain portfolio (CSV or via API list endpoint).
  • 2.Request EPP/auth codes for each domain from your current registrar.
  • 3.Remove transfer locks on the domains being moved.
  • 4.Verify that admin contact email addresses are active and accessible (transfer confirmation emails go here for generic TLDs like .com, .net, .org).
  • 5.Initiate bulk transfers in coordination with the Domain Name API support team.
  • 6.Monitor transfer status via GetDetails() for each domain.
  • 7.Verify DNS records once transfer completes.

Domain Name API offers free migration support.

Share your domain list with the support team and they'll coordinate the transfer process with you. For large portfolios, reaching out before you start the process significantly reduces the chance of issues.

Error Handling: DNA Error Codes and What to Do

Exponential Backoff — Quick Answer

When you hit a rate limit (error 360 or 361), retrying immediately just extends the throttle. Exponential backoff: wait 1s before retry 1, 2s before retry 2, 4s before retry 3, 8s before retry 4. This is standard API practice and keeps you in good standing with the rate limiter.

Domain Name API uses its own error code system — not standard HTTP status codes. A complete list is available in the SDK documentation; the most common ones to build handling for:

DNA Error Code Meaning Most Likely Cause Fix
300 Reseller not found Wrong credentials or account not found Check UUID username and API token in Swagger
301 IP not authorized Request came from an unlisted IP Add your server's IP to the whitelist in the reseller panel
310 TLD not supported Requested TLD isn't available Call GetTldList() to get the current supported TLD list
330 Required parameter missing A contact field or required param is absent Send all four contact objects with every required field
350 Insufficient balance Reseller account balance too low Add funds; check balance via GetResellerDetails()
360 API quota exceeded Rate limit hit Reduce request frequency; batch with CheckAvailability arrays
361 Throttled Too many requests in a short window Apply exponential backoff before retrying
507 / 2200 Authorization error Wrong auth code or domain registered at another registrar Get a fresh EPP code from the source registrar; check transfer lock
510 Domain not found Domain doesn't exist in the system Verify domain name and TLD
530 Invalid period Period is outside allowed min/max Call GetTldList() for valid period ranges per TLD
592 Transfer lock exists Domain still has transfer protection enabled Remove the transfer lock at the source registrar first

Real-World Use Cases

Domain Reseller API isn't just for hosting companies and web agencies. Anywhere that customers need a domain — as part of an onboarding flow, a SaaS product, or a managed service — is a potential integration point:

Industry / Platform How the Reseller API Fits
Hosting Companies Domain registration bundled with hosting at checkout; automated DNS pointing to the right server
Web Agencies Manage client domains in-house rather than routing through a third party; maintain control of renewal and DNS
SaaS Platforms Custom domain support for users (e.g., yourapp.com/customer → customer's own domain)
No-Code Builders One-click domain purchase and DNS wiring at site launch, no manual steps for the user
ERP / CRM Software Let customers buy and configure a company domain during initial onboarding
E-Commerce Infrastructure Register a storefront domain and activate SSL in the same checkout flow
ISPs / Telecom Operators Add domain services to internet packages to increase ARPU
Corporate IT Firms (MSP) Centrally manage domain portfolios for dozens of clients via a single API
Domain Brokers Automate large-volume domain acquisition and release through API operations
Brand Protection Firms Monitor and reserve domain variants related to client trademarks at scale
Universities Bulk-register domains for student projects and research initiatives
AI / No-Code Startups Auto-provision a subdomain or custom domain for each user workspace

The Full Customer Journey: Zero Manual Touchpoints

Customer searches for example.com

  • ↓ CheckAvailability API → Available, $10.81/year
  • ↓ Customer completes payment
  • ↓ RegisterWithContactInfo API → Domain registered
  • ↓ ModifyNameServer API → DNS pointed to hosting server
  • ↓ WHMCS automatically opens an SSL activation request
  • ↓ Hosting account provisioned automatically
  • ↓ Email hosting activated via API
  • ↓ Customer is live on example.com in under 10 minutes

Total manual operations: ZERO

Scenario: Hosting Company Automation

When a customer purchases a hosting package, the system simultaneously triggers a domain registration. In a WHMCS integration, this is fully automatic: the customer pays, WHMCS calls Domain Name API, the domain is registered, and nameservers are set to the hosting server — no manual step anywhere in the flow.

Scenario: SaaS Platform with Custom Domain Support

A SaaS platform offers a 'use your own domain' feature. The customer enters their domain name; the platform calls CheckAvailability, the customer confirms, the API registers it, and DNS is pointed to the SaaS infrastructure. The entire flow — from search to live — completes in under a minute without any human intervention.

Scenario: AI Startup — Bulk Domain Reservation

An AI product needs to secure its name across 50 TLDs: example.com, example.ai, example.io, example.co, and so on. A single CheckAvailability call checks all combinations at once. Available domains are registered immediately; unavailable ones trigger an automatic alternative suggestion flow.

Scenario: Web Agency — White Label Reseller

A web agency opens a Domain Name API account to sell domains to their own clients. In the agency's client portal, customers see only the agency's branding — Domain Name API is invisible. The agency sets its own retail margin; Domain Name API bills at wholesale. Every renewal is passive recurring revenue for the agency.

Scenario: MSP — Centralized Portfolio Management

An MSP managing hundreds of client domains replaces manual expiration tracking with an automated system: GetList() pulls all domains, a scheduled job flags anything expiring within 60 days, and those domains are queued for auto-renewal. A balance threshold triggers an automatic alert when the reseller account drops below a defined amount.

Common Mistakes

Skipping OT&E: assuming production will behave the same as local testing — it will, but broken flows create real charges and real domain registrations.

Mixing OT&E and production credentials: a production token pointed at the OT&E URL returns a 300 error; the reverse creates real transactions. Keep a clear .env separation.

Looping individual CheckAvailability calls: sending one request per domain instead of batching into a single array call burns your rate limit allowance quickly.

Putting the API token in frontend code: this is a critical security vulnerability. The token must stay server-side only.

Not checking transfer lock status before initiating a transfer: if the lock is still on, the transfer request fails and the customer experience breaks.

Assuming the admin contact email is reachable: transfer confirmation emails go to the admin contact. If that address is unreachable, the transfer sits pending for 5 business days then auto-cancels.

Missing the Redemption Grace Period: once this window closes after a domain deletion, the domain can be registered by anyone. Track expiration dates proactively.

Testing DNS changes without accounting for TTL: DNS changes are not instant. Depending on TTL settings, propagation takes 24–48 hours. Don't test assuming immediate effect.

Performance Recommendations

Cache availability results: store CheckAvailability responses for 60–120 seconds to avoid redundant queries for the same domain from the same session.

Use bulk CheckAvailability: pass domain names and TLDs as arrays — one request covers all combinations instead of N x M individual calls.

Move heavy operations to async queues: large transfer batches, bulk registrations, and high-volume renewals belong in a background queue. Give the user immediate feedback; process in the background.

Use callbacks rather than polling: where API callbacks are available, use them instead of polling for status updates — less server load, faster responses.

Keep your IP whitelist current: if your server IP changes, update the whitelist immediately — otherwise all API calls start returning 301.

Monitor error logs in real time: alert on spikes in 360/361 errors (rate limiting) and 507/2200 errors (auth issues) — these often indicate problems that will affect multiple customers simultaneously.

Frequently Asked Questions

What is a Domain Reseller API?

A Domain Reseller API is a programmatic interface that lets you register, transfer, renew, and manage domains using code — without needing ICANN accreditation, registry agreements, or your own registrar infrastructure.

Do I need ICANN accreditation to sell domains?

No. As a reseller, you use an ICANN-accredited platform like Domain Name API. You sell domains under your own brand without any accreditation of your own.

What's the difference between a Registry, Registrar, and Reseller?

A Registry manages the TLD database (e.g., Verisign for .com). A Registrar is ICANN-accredited and works directly with registries. A Reseller uses a registrar's infrastructure to sell domains without holding their own accreditation.

Should I use REST or SOAP?

Use REST. SOAP is the legacy protocol — verbose, harder to debug, and declining in ecosystem support. Domain Name API's REST API uses JSON and is available in Swagger for interactive testing.

What is the OT&E environment?

OT&E (Operational Test & Evaluation) is an isolated test environment where you can run your full API integration without creating real registrations or incurring any charges.

Are production and OT&E credentials the same?

Yes. Production and OT&E use the same UUID username and API token. Only the base URL is different.

Is there a fee to sign up?

No. Domain Name API is free to join with no setup fee, no upfront payment, and no minimum balance requirement.

How many TLDs are supported?

800+ as of 2026.

What payment methods are accepted?

Credit card, wire transfer, PayPal, Stripe, and Alipay.

Is the WHMCS module free?

Yes. The WHMCS module is free and available on GitHub at github.com/domainreseller.

Are modules available for WiseCP, HostBill, Blesta, and ClientExec?

Yes — official modules exist for all four. This breadth of platform support is rare among domain reseller APIs.

Where do I find my API credentials?

Log in to your reseller panel at dm.apiname.com, then go to the integration section to find your UUID username and API token.

How does REST API authentication work?

The REST API uses HTTP Basic Auth with a UUID-format username and your API token. The PHP library auto-detects REST mode when it sees a UUID-format username.

What is rate limiting and how do I handle it?

Rate limiting caps how many requests you can make in a given period. When exceeded, error code 360 or 361 is returned. Use bulk CheckAvailability calls and apply exponential backoff when retrying after a rate limit error.

Can I check multiple domains in one call?

Yes. CheckAvailability accepts separate arrays for domain names and TLDs, covering all combinations in a single request.

How are premium domains handled?

The CheckAvailability response includes isPremium and premiumPrice fields. Always surface the premium price to the customer before completing the transaction.

What are the prerequisites for a domain transfer?

The domain's transfer lock must be removed, the domain must not have been registered or transferred in the last 60 days, and a valid EPP auth code must be provided.

What is domain restoration?

Restoration recovers a deleted domain during the Redemption Grace Period (typically 30 days after deletion) for an additional registry fee. Once this window closes, the domain is available for anyone to register.

What's the difference between WHOIS and RDAP?

WHOIS is the legacy protocol for querying domain ownership data (port 43). RDAP is the modern replacement: HTTPS-based, JSON-formatted, and ICANN-backed. Use RDAP for new integrations.

Can I manage DNS records via the API?

Yes. A, AAAA, CNAME, MX, TXT, NS, SRV, and CAA records can all be created and updated via API.

Can I activate DNSSEC through the API?

Yes. DNSSEC activation requires submitting a DS record to the registry via the API.

What is a glue record and when is it needed?

A glue record registers a nameserver's IP address directly with the registry. It's required when you're running nameservers on your own domain (e.g., ns1.yourdomain.com) to break the circular dependency.

What is white label domain reselling?

White label means your customers see only your brand while Domain Name API infrastructure runs underneath. No Domain Name API branding appears in any customer-facing surface.

How does the sub-reseller system work?

You can create child reseller accounts under your main account, set their pricing independently, and manage their portfolios centrally. This is useful for IT distributors, aggregators, and partner channel programs.

How do I integrate with PHP?

Use the official PHP library: composer require domainreseller/php-dna. Initialize with your UUID username and API token; the library auto-selects REST mode.

Can I use Python?

Yes. Use the requests library with HTTP Basic Auth (UUID username + API token) to make GET/POST calls to the REST API.

Can I use Node.js?

Yes. Use fetch or axios with a Base64-encoded Authorization header (Basic Auth with UUID username and API token).

Can I use .NET?

Yes. Use HttpClient with AuthenticationHeaderValue('Basic', Base64-encoded credentials).

How do I keep my API token secure?

Keep it in your backend environment only (e.g., .env file or secrets manager). Never embed it in browser JavaScript, mobile app code, or any client-facing bundle. Enable IP whitelisting for an additional layer of protection.

How do I migrate an existing domain portfolio?

Export your domain list, collect EPP auth codes, remove transfer locks, and initiate bulk transfers in coordination with the Domain Name API support team, who offer free migration assistance.

Is Domain Name API ICANN-accredited?

Yes.

How do pricing tiers work?

Four tiers: Reseller, Premium, Platinum, and VIP. Higher sales volume unlocks lower wholesale pricing. .com at VIP/Platinum starts at $10.81/year.

What error code should I watch for if my IP isn't whitelisted?

Error code 301 (IP not authorized). Add your server's IP to the whitelist in the reseller panel.

What's the DNA error code for an insufficient balance?

Error code 350. Add funds to your reseller account and verify your balance with GetResellerDetails().

Does Domain Name API provide technical support?

Yes — 24/7 via phone (+90 262 325 07 76), live chat, and ticket system. Free migration support is also included.

Can I test the integration for free before going live?

Yes. The OT&E environment is free, requires no real money, and creates no real domain registrations. Everything you need to validate your integration is available there before you spend a cent.

Why a Reseller API — Not a Registrar

Domain sales capability doesn't require a registrar license. It requires the right infrastructure partner.

DV SSL secures the connection; OV/EV SSL verifies your organization's identity — the same logic applies to registrars. Most companies don't need to be one; they need access to what one can do.

40,000+ active resellers in 200+ countries have reached that conclusion. They chose a reseller API, not accreditation.

The technical overhead you avoid — registry integrations, abuse pipelines, ICANN compliance cycles — is real work that doesn't directly serve your customers.