Skip to content

Reseller API (Preview) (1.0.0)

Feature Overview

The Reseller API provides domain reseller partners with the ability to search, register and manage traditional DNS domains. The API exposes a RESTful interface for domain registration, DNS management, and domain lifecycle operations.

  • Domain Discovery: Search for specific domains or find suggested alternatives, determine pricing, availability and registration details
  • Domain Registration: Register domains with full control over registration period, contacts, and initial DNS configuration
  • DNS Management: Create, update and delete DNS records for your domains
  • Domain Lifecycle: Manage renewals, transfers, contacts, and domain flags through a simple API interface

Managed Solution

The API handles domain registration and DNS management through Unstoppable Domains' registrar infrastructure. Resellers interact with a single RESTful API to manage the full domain lifecycle without needing direct registrar or registry integrations.

Resellers are empowered to manage domains on behalf of their users, including registration, DNS configuration, renewals, and transfer operations.

Payments

The API keeps track of a running balance of charges and Unstoppable Domains will periodically invoice Resellers to settle that balance. This empowers Resellers to build payment processing in a way that works best for them.

Contacts

ICANN-accredited domain registrations require contact information for various roles (owner, admin, tech, billing). The API provides a dedicated Contacts system for creating and managing these contacts, which can then be associated with domains.

Contacts must be verified via email before they can be used for domain registration. The API supports the full contact verification lifecycle.

Important Concepts

Operations

All interactions with the API that initiate changes will create an Operation for tracking that change. Operations can complete immediately or run in the background depending on the operation type and current system conditions.

Operations include dependencies that represent the smaller units of work associated with the overall operation. These dependencies can also be tracked through the API and each have their own status and metadata.

Your integration should properly handle and anticipate all of the following possible statuses for Operations and their dependencies:

  • QUEUED : The Operation has not started processing yet, but should be started shortly
  • PROCESSING : The Operation has started and is being processed
  • COMPLETED : The Operation has finished processing successfully
  • FAILED : The Operation has finished processing and has either fully or partially failed
  • CANCELLED : The Operation has been cancelled, usually due to a failure with a sibling dependency

Domain Flags

Domain flags control various aspects of domain behavior and security. Each flag can be independently enabled or disabled:

  • DNS_RESOLUTION: Controls whether the domain resolves via DNS
  • DNS_TRANSFER_OUT: Controls whether the domain can be transferred to another registrar
  • DNS_DELETE: Controls whether the domain can be deleted
  • DNS_UPDATE: Controls whether DNS records can be modified
  • DNS_RENEW: Controls whether the domain can be renewed
  • DNS_WHOIS_PROXY: Controls whether WHOIS privacy protection is enabled

Flags may also have a readonly state with reasons indicating why a flag cannot be changed.

Preview Mode

Many mutating endpoints support a $preview query parameter. When set to true, the API will validate the request and return the expected Operation result without actually executing the changes. This is useful for validating requests and getting price quotes before committing.

Get Access

The Reseller Dashboard for registering and managing your API credentials is coming soon. In the meantime, contact our Reseller Engineering Team to get API access or learn more.

Overview
Unstoppable Domains (Reseller Engineering)
Languages
Servers
Production
https://api.unstoppabledomains.com/partner/v3
Sandbox
https://api.ud-sandbox.com/partner/v3

Suggestions

Find available domain alternatives based on keywords and preferences.

Operations

Registration & Renewals

Register new domains and manage renewals. Use $preview=true to validate requests and get price quotes before committing.

Operations

Domain Management

Comprehensive domain updates — modify nameservers, DNSSEC, contacts, flags, and DNS records in a single request.

Operations

DNS Records

Create, read, update and delete DNS records for your domains. Also includes DNS metadata, nameserver management, and DNSSEC configuration.

Operations

Transfers

Check transfer eligibility and retrieve authorization codes for transferring domains to another registrar.

Operations

Domain Flags

View and manage domain flags that control behavior and security settings such as DNS resolution, transfer locks, WHOIS privacy, and more.

Operations

Domain Contacts

View and update the ICANN-required contacts (owner, admin, tech, billing) assigned to a specific domain.

Operations

Pricing

Retrieve pricing information for domain registration, renewal, transfer, and restoration by domain name or TLD.

Operations

TLDs

Browse available top-level domains (TLDs), their details, and DNS security configuration.

Operations

Contacts

Create and manage ICANN-required contacts for domain registration. Contacts represent individuals or organizations associated with domain roles (owner, admin, tech, billing).

New contacts must be verified via email before they can be used in domain registrations.

Operations

Operations

All asynchronous processes handled by the API are represented as Operations. This includes registering a domain, updating DNS records, renewing a domain, and more.

Operations contain dependencies that represent the individual units of work. Each dependency has its own status, parameters, and result data.

Operations
Webhooks

Account

Manage your account details, authentication tokens, and webhook subscriptions.

Operations

Create a webhook

Request

Create a new webhook subscription. Webhooks notify your server of asynchronous events such as operation completions and status changes.

You can follow our getting started guide here: Webhooks in the Reseller API

Security
bearer
Bodyapplication/jsonrequired
urlstringrequired
typeobjectrequired
curl -i -X POST \
  https://api.unstoppabledomains.com/partner/v3/account/webhooks \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "url": "string",
    "type": {}
  }'

Responses

Bodyapplication/json
@typestringrequired
Value"unstoppabledomains.com/partner.v3.WebhookCreateResult"
operationobject(OperationCheckResponse)required
operation.​@typestringrequired
Value"unstoppabledomains.com/partner.v3.Operation"
operation.​idstring^op-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a...required

Operation ID

Example: "op-a1b2c3d4-e5f6-7890-abcd-ef1234567890"
operation.​statusstringrequired
Enum"PREVIEW""QUEUED""PROCESSING""FAILED""COMPLETED""CANCELLED""AWAITING_UPDATES"
operation.​typestringrequired
Enum"ADMIN_GENERIC""DOMAIN_ADMIN_UPDATE""DOMAIN_RENEW""ACCOUNT_UPDATE""DOMAIN_DNS_RECORD_CREATE""DOMAIN_DNS_RECORD_UPDATE""DOMAIN_DNS_RECORD_DELETE""DOMAIN_DNS_RECORD_BATCH""DOMAIN_DNS_SECURITY_ENABLE""DOMAIN_DNS_SECURITY_DELETE"
operation.​domainstring
operation.​createdAtTimestampnumberrequired
operation.​lastUpdatedTimestampnumberrequired
operation.​validUntilTimestampnumber
operation.​dependenciesArray of any(PlatformOperationDependency)required

List of platform operation dependencies that make up this operation

operation.​dependencies[].​idstringrequired
Example: "plop_abc12345-1234-1234-1234-abc123456789"
operation.​dependencies[].​@typestringrequired
Value"unstoppabledomains.com/partner.v3.PlatformOperation"
operation.​dependencies[].​statusstring(PlatformOperationStatus)required

Status of a platform operation dependency

Enum"PREVIEW""QUEUED""PROCESSING""FAILED""COMPLETED""CANCELLED""AWAITING_UPDATES"
operation.​dependencies[].​typestringrequired
Value"DOMAIN_REGISTER"
Discriminator
operation.​dependencies[].​parametersobjectrequired
operation.​dependencies[].​parameters.​ownerobject(ContactAssignment)required

Reference to an existing or newly created contact

operation.​dependencies[].​parameters.​owner.​newbooleanrequired

Whether this contact is being newly created as part of this operation

operation.​dependencies[].​parameters.​owner.​idstring

Contact ID (present when new is false)

Example: "con_abc12345-1234-1234-1234-abc123456789"
operation.​dependencies[].​parameters.​contactsobject(NonRegistrantContacts)

Non-registrant contact role assignments (admin, billing, tech)

operation.​dependencies[].​parameters.​periodinteger

Registration period in years

Example: 1
operation.​dependencies[].​errorobject(OperationDependencyError)

Error details for a failed operation dependency

Response
application/json
{ "@type": "unstoppabledomains.com/partner.v3.WebhookCreateResult", "operation": { "@type": "unstoppabledomains.com/partner.v3.Operation", "id": "op-a1b2c3d4-e5f6-7890-abcd-ef1234567890", "status": "PREVIEW", "type": "ADMIN_GENERIC", "domain": "string", "createdAtTimestamp": 0, "lastUpdatedTimestamp": 0, "validUntilTimestamp": 0, "dependencies": [] } }

Get a webhook

Request

Retrieve details of a specific webhook subscription by ID.

Security
bearer
Path
idstring^wh-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a...required

Webhook ID (format: wh-)

Example: wh-a1b2c3d4-e5f6-7890-abcd-ef1234567890
curl -i -X GET \
  https://api.unstoppabledomains.com/partner/v3/account/webhooks/wh-a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

Bodyapplication/json
@typestringrequired
Value"unstoppabledomains.com/partner.v3.Webhook"
idstring^wh-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a...required

Webhook ID

Example: "wh-a1b2c3d4-e5f6-7890-abcd-ef1234567890"
urlstringrequired
typeobjectrequired
Response
application/json
{ "@type": "unstoppabledomains.com/partner.v3.Webhook", "id": "wh-a1b2c3d4-e5f6-7890-abcd-ef1234567890", "url": "string", "type": {} }

Delete a webhook

Request

Delete a webhook subscription by ID.

Security
bearer
Path
idstring^wh-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a...required

Webhook ID (format: wh-)

Example: wh-a1b2c3d4-e5f6-7890-abcd-ef1234567890
curl -i -X DELETE \
  https://api.unstoppabledomains.com/partner/v3/account/webhooks/wh-a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

Bodyapplication/json
@typestringrequired
Value"unstoppabledomains.com/partner.v3.WebhookDeleteResult"
operationobject(OperationCheckResponse)required
operation.​@typestringrequired
Value"unstoppabledomains.com/partner.v3.Operation"
operation.​idstring^op-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a...required

Operation ID

Example: "op-a1b2c3d4-e5f6-7890-abcd-ef1234567890"
operation.​statusstringrequired
Enum"PREVIEW""QUEUED""PROCESSING""FAILED""COMPLETED""CANCELLED""AWAITING_UPDATES"
operation.​typestringrequired
Enum"ADMIN_GENERIC""DOMAIN_ADMIN_UPDATE""DOMAIN_RENEW""ACCOUNT_UPDATE""DOMAIN_DNS_RECORD_CREATE""DOMAIN_DNS_RECORD_UPDATE""DOMAIN_DNS_RECORD_DELETE""DOMAIN_DNS_RECORD_BATCH""DOMAIN_DNS_SECURITY_ENABLE""DOMAIN_DNS_SECURITY_DELETE"
operation.​domainstring
operation.​createdAtTimestampnumberrequired
operation.​lastUpdatedTimestampnumberrequired
operation.​validUntilTimestampnumber
operation.​dependenciesArray of any(PlatformOperationDependency)required

List of platform operation dependencies that make up this operation

operation.​dependencies[].​idstringrequired
Example: "plop_abc12345-1234-1234-1234-abc123456789"
operation.​dependencies[].​@typestringrequired
Value"unstoppabledomains.com/partner.v3.PlatformOperation"
operation.​dependencies[].​statusstring(PlatformOperationStatus)required

Status of a platform operation dependency

Enum"PREVIEW""QUEUED""PROCESSING""FAILED""COMPLETED""CANCELLED""AWAITING_UPDATES"
operation.​dependencies[].​typestringrequired
Value"DOMAIN_REGISTER"
Discriminator
operation.​dependencies[].​parametersobjectrequired
operation.​dependencies[].​parameters.​ownerobject(ContactAssignment)required

Reference to an existing or newly created contact

operation.​dependencies[].​parameters.​owner.​newbooleanrequired

Whether this contact is being newly created as part of this operation

operation.​dependencies[].​parameters.​owner.​idstring

Contact ID (present when new is false)

Example: "con_abc12345-1234-1234-1234-abc123456789"
operation.​dependencies[].​parameters.​contactsobject(NonRegistrantContacts)

Non-registrant contact role assignments (admin, billing, tech)

operation.​dependencies[].​parameters.​periodinteger

Registration period in years

Example: 1
operation.​dependencies[].​errorobject(OperationDependencyError)

Error details for a failed operation dependency

Response
application/json
{ "@type": "unstoppabledomains.com/partner.v3.WebhookDeleteResult", "operation": { "@type": "unstoppabledomains.com/partner.v3.Operation", "id": "op-a1b2c3d4-e5f6-7890-abcd-ef1234567890", "status": "PREVIEW", "type": "ADMIN_GENERIC", "domain": "string", "createdAtTimestamp": 0, "lastUpdatedTimestamp": 0, "validUntilTimestamp": 0, "dependencies": [] } }