# Reseller API (Preview) # 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](mailto:partnerengineering@unstoppabledomains.com?subject=Reseller%20API%20Inquiry) to get API access or learn more. Version: 1.0.0 ## Servers Production ``` https://api.unstoppabledomains.com/partner/v3 ``` Sandbox ``` https://api.ud-sandbox.com/partner/v3 ``` ## Security ### bearer Type: http Scheme: bearer Bearer Format: JWT ## Download OpenAPI description [Reseller API (Preview)](https://docs.unstoppabledomains.com/_bundle/apis/reseller/openapi.yaml) ## Search & Lookup Search for domain availability and retrieve details for one or more domains. Use the `$expand` parameter to include registration details and flags in the response. ### Lookup multiple domains - [GET /domains](https://docs.unstoppabledomains.com/apis/reseller/openapi/domain-search/getmultipledomains.md): Get domain availability and details for multiple domains using the query string search options. Optionally, use the $expand query parameter to include additional data in the response (e.g. ?$expand=registration&$expand=flags). If a domain is available for registration it will have an availability.status of AVAILABLE and will include an availability.price object. ### Lookup a single domain - [GET /domains/{name}](https://docs.unstoppabledomains.com/apis/reseller/openapi/domain-search/getsingledomain.md): Get availability and details for a single domain. Optionally, use the $expand query parameter to include additional data such as registration details and flags. ## Suggestions Find available domain alternatives based on keywords and preferences. ### Get domain suggestions - [GET /suggestions/domains](https://docs.unstoppabledomains.com/apis/reseller/openapi/suggestions/getsuggestions.md): Get suggested available domain names based on your search queries. Supports multiple suggestion modes: - EXACT: Exact match lookups - PREFIX_SUFFIX: Variations with prefixes and suffixes added - RELATED: Semantically related domain name suggestions - RELATED_PARTIAL: Partial matches from related suggestions ## Registration & Renewals Register new domains and manage renewals. Use `$preview=true` to validate requests and get price quotes before committing. ### Register or transfer in a domain - [POST /domains](https://docs.unstoppabledomains.com/apis/reseller/openapi/domain-registration/registerdomain.md): Register a new domain or transfer an existing domain into your account. The request body specifies the domain name and optional DNS configuration including registration period, contacts, and nameserver settings. To register a new domain, submit the request without an authorization code. To transfer in an existing domain from another registrar, include the dns.authorizationCode field — the presence of this field determines that this is a transfer-in rather than a new registration. Use $preview=true to validate the request and get a price quote without executing the operation. ### Get domain renewal info - [GET /domains/{name}/renewals](https://docs.unstoppabledomains.com/apis/reseller/openapi/domain-registration/getdomainrenewalinfo.md): Retrieve renewal eligibility and pricing for the specified domain, including the current expiration date, grace period expiration, and available renewal periods. ### Renew a domain - [POST /domains/{name}/renewals](https://docs.unstoppabledomains.com/apis/reseller/openapi/domain-registration/postdomainrenewal.md): Renew the specified domain for a given period (in years). Use $preview=true to get a renewal price quote without executing the renewal. ## Domain Management Comprehensive domain updates — modify nameservers, DNSSEC, contacts, flags, and DNS records in a single request. ### Update a domain - [PATCH /domains/{name}](https://docs.unstoppabledomains.com/apis/reseller/openapi/domain-management/updatedomain.md): Comprehensive domain update — modify nameservers, DNSSEC, contacts, flags, and DNS records in a single operation. All fields are optional; only include the sections you want to change. Returns an operation that tracks all the resulting changes. ## DNS Records Create, read, update and delete DNS records for your domains. Also includes DNS metadata, nameserver management, and DNSSEC configuration. ### Get DNS metadata - [GET /domains/{name}/dns](https://docs.unstoppabledomains.com/apis/reseller/openapi/dns-records/getdomaindnsmetadata.md): Retrieve DNS metadata for the specified domain, including the DNS provider and registration status. ### List DNS records - [GET /domains/{name}/dns/records](https://docs.unstoppabledomains.com/apis/reseller/openapi/dns-records/getdnsrecords.md): Retrieve DNS records for the specified domain. Supports filtering by record type and subdomain name, and cursor-based pagination. ### Create a DNS record - [POST /domains/{name}/dns/records](https://docs.unstoppabledomains.com/apis/reseller/openapi/dns-records/creatednsrecord.md): Create a new DNS record for the specified domain. Supports all standard DNS record types. Use $preview=true to validate the request without creating the record. The $upsert option controls behavior when a matching record already exists: REPLACE overwrites, APPEND adds values, DISALLOWED rejects the request. ### Update a DNS record - [PATCH /domains/{name}/dns/records/{id}](https://docs.unstoppabledomains.com/apis/reseller/openapi/dns-records/updatedomainrecord.md): Update an existing DNS record by ID. You can modify the record values and TTL. Use $preview=true to validate the request without applying the change. ### Delete a DNS record - [DELETE /domains/{name}/dns/records/{id}](https://docs.unstoppabledomains.com/apis/reseller/openapi/dns-records/deletedomainrecord.md): Delete a DNS record by ID. Use $preview=true to validate the request without deleting the record. ### Get DNSSEC status - [GET /domains/{name}/dns/security](https://docs.unstoppabledomains.com/apis/reseller/openapi/dns-records/getdnssecuritystatus.md): Retrieve the current DNSSEC status for the specified domain. ### Enable DNSSEC - [POST /domains/{name}/dns/security](https://docs.unstoppabledomains.com/apis/reseller/openapi/dns-records/enablednssecurity.md): Enable DNSSEC for the specified domain. Use $preview=true to validate without applying changes. Set $forceCompatibility to override compatibility warnings. ### Disable DNSSEC - [DELETE /domains/{name}/dns/security](https://docs.unstoppabledomains.com/apis/reseller/openapi/dns-records/deletednssecurity.md): Disable DNSSEC for the specified domain. Use $preview=true to validate without applying changes. ### Set external nameservers - [PUT /domains/{name}/dns/nameservers](https://docs.unstoppabledomains.com/apis/reseller/openapi/dns-records/adddomainexternalnameservers.md): Set external (custom) nameservers for the specified domain, replacing the default UD-managed nameservers. Use $preview=true to validate without applying changes. ### Remove external nameservers - [DELETE /domains/{name}/dns/nameservers](https://docs.unstoppabledomains.com/apis/reseller/openapi/dns-records/removeexternalnameservers.md): Remove external nameservers and revert to UD-managed nameservers. Use $preview=true to validate without applying changes. ### Get nameservers - [GET /domains/{name}/dns/nameservers](https://docs.unstoppabledomains.com/apis/reseller/openapi/dns-records/getdomainnameservers.md): Retrieve the current nameserver configuration for the specified domain. Use $expand=dnssec to include DNSSEC details in the response. ## Transfers Check transfer eligibility and retrieve authorization codes for transferring domains to another registrar. ### Get transfer authorization code - [GET /domains/{name}/dns/authorization-code](https://docs.unstoppabledomains.com/apis/reseller/openapi/domain-transfers/getauthorizationcode.md): Retrieve the authorization (EPP) code required to transfer the domain to another registrar. The domain must be eligible for transfer before requesting this code. ### Check inbound transfer eligibility - [POST /domains/{name}/dns/transfers/inbound-eligibility](https://docs.unstoppabledomains.com/apis/reseller/openapi/domain-transfers/postdomaindnstransferinboundeligibility.md): Check whether a domain is eligible for inbound transfer to your account. Provide the authorization code to validate the transfer. ## Domain Flags View and manage domain flags that control behavior and security settings such as DNS resolution, transfer locks, WHOIS privacy, and more. ### Get domain flags - [GET /domains/{name}/flags](https://docs.unstoppabledomains.com/apis/reseller/openapi/domain-flags/getdomainflags.md): Retrieve the current flag settings for the specified domain, including resolution, transfer lock, delete lock, update lock, renewal, and WHOIS privacy status. ### Update domain flags - [PATCH /domains/{name}/flags](https://docs.unstoppabledomains.com/apis/reseller/openapi/domain-flags/patchdomainflags.md): Update one or more flags for the specified domain. Use this to toggle transfer lock, auto-renew, WHOIS privacy, and other domain settings. Use $preview=true to validate without applying changes. ## Domain Contacts View and update the ICANN-required contacts (owner, admin, tech, billing) assigned to a specific domain. ### Get domain contacts - [GET /domains/{name}/dns/contacts](https://docs.unstoppabledomains.com/apis/reseller/openapi/domain-contacts/getdomaincontacts.md): Retrieve the contacts associated with the specified domain, including owner, admin, tech, and billing roles. ### Update domain contacts - [PATCH /domains/{name}/dns/contacts](https://docs.unstoppabledomains.com/apis/reseller/openapi/domain-contacts/patchdomaincontacts.md): Update the contacts associated with the specified domain. You can update any combination of owner, admin, tech, and billing contacts. Use $preview=true to validate without applying changes. ## Pricing Retrieve pricing information for domain registration, renewal, transfer, and restoration by domain name or TLD. ### Get domain pricing - [GET /pricing/dns/domains/{name}](https://docs.unstoppabledomains.com/apis/reseller/openapi/pricing/getpricingdnsdomain.md): Retrieve pricing for a specific domain name, including registration, renewal, transfer, and restoration costs. ### List TLD pricing - [GET /pricing/dns/tlds](https://docs.unstoppabledomains.com/apis/reseller/openapi/pricing/getpricingdnstlds.md): Retrieve pricing information for all available TLDs, including registration, renewal, transfer, and restoration costs. ### Get single TLD pricing - [GET /pricing/dns/tlds/{tld}](https://docs.unstoppabledomains.com/apis/reseller/openapi/pricing/getpricingdnssingletld.md): Retrieve pricing information for a specific TLD, including registration, renewal, transfer, and restoration costs. ## TLDs Browse available top-level domains (TLDs), their details, and DNS security configuration. ### Get TLD DNSSEC configuration - [GET /tlds/{tld}/dns/security](https://docs.unstoppabledomains.com/apis/reseller/openapi/tlds/gettlddnssecurityconfiguration.md): Retrieve the supported DNSSEC algorithms and digest types for the specified TLD. ### List available TLDs - [GET /tlds](https://docs.unstoppabledomains.com/apis/reseller/openapi/tlds/gettldlist.md): Retrieve a list of all available top-level domains (TLDs) including their naming system and registration availability. ### Get TLD details - [GET /tlds/{tld}](https://docs.unstoppabledomains.com/apis/reseller/openapi/tlds/getsingletld.md): Retrieve details for a specific top-level domain (TLD) including its naming system and registration availability. ## 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. ### Get a contact - [GET /contacts/{contactId}](https://docs.unstoppabledomains.com/apis/reseller/openapi/contacts/getcontact.md): Retrieve the details of a specific contact by ID, including personal information, address, phone, email, and verification status. ### Create a contact - [POST /contacts](https://docs.unstoppabledomains.com/apis/reseller/openapi/contacts/createcontact.md): Create a new contact for use in domain registration and management. A verification email will be sent to the contact's email address. Use $preview=true to validate without creating the contact. ## 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. ### Get pending operations for a domain - [GET /domains/{name}/pending-operations](https://docs.unstoppabledomains.com/apis/reseller/openapi/operations/getdomainpendingoperations.md): Retrieve a list of operations that are currently in progress for the specified domain. Useful for checking if there are any active operations before initiating new changes. ### Get operation details - [GET /operations/{id}](https://docs.unstoppabledomains.com/apis/reseller/openapi/operations/checkoperation.md): Retrieve the full details of an operation by ID, including its current status and all dependency details. Use this to poll for operation completion after initiating a change. ### List operations - [GET /operations](https://docs.unstoppabledomains.com/apis/reseller/openapi/operations/getoperationlist.md): Retrieve a paginated list of operations. Filter by domain name, status, or type. Supports cursor-based pagination. ### Operation Finished - [POST OPERATION_FINISHED](https://docs.unstoppabledomains.com/apis/reseller/openapi/operations/webhook_operationfinished.md): Receive a request when an asynchronous operation completes to registered webhooks of type OPERATION_FINISHED ### Operation Action Required - [POST OPERATION_ACTION_REQUIRED](https://docs.unstoppabledomains.com/apis/reseller/openapi/operations/webhook_operationactionrequired.md): Receive a request when an asynchronous operation reaches a status that requires an action to be taken for it to proceed. For example, when an operation changes to the SIGNATURE_REQUIRED status, a webhook would be delivered since the operation cannot continue with collecting a signature. Requests are sent to registered webhooks of type OPERATION_ACTION_REQUIRED ### Operation Created - [POST OPERATION_CREATED](https://docs.unstoppabledomains.com/apis/reseller/openapi/operations/webhook_operationcreated.md): Receive a request when a new asynchronous operation is created to registered webhooks of type OPERATION_CREATED ## Account Manage your account details, authentication tokens, and webhook subscriptions. ### Get account details - [GET /account](https://docs.unstoppabledomains.com/apis/reseller/openapi/account/getaccount.md): Retrieve your account summary including account ID and default wallet address. ### List webhooks - [GET /account/webhooks](https://docs.unstoppabledomains.com/apis/reseller/openapi/account/getwebhooks.md): Retrieve all webhook subscriptions configured for your account. ### Create a webhook - [POST /account/webhooks](https://docs.unstoppabledomains.com/apis/reseller/openapi/account/createwebhook.md): 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 ### Get a webhook - [GET /account/webhooks/{id}](https://docs.unstoppabledomains.com/apis/reseller/openapi/account/getwebhook.md): Retrieve details of a specific webhook subscription by ID. ### Delete a webhook - [DELETE /account/webhooks/{id}](https://docs.unstoppabledomains.com/apis/reseller/openapi/account/deletewebhook.md): Delete a webhook subscription by ID.