# Reseller API # 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 - **Marketplace**: Browse secondary marketplace listings to find premium domains available for purchase from existing owners For access, authentication, environments, and your first request, start with the [Quick Start](/apis/reseller/quick-start). For implementation guidance on operations, flags, registration flows, contact management, DNS management, webhooks, and lifecycle operations, see the [Implementation Guide](/apis/reseller/implementation-guide). 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](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. 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. Search constraints: - Each query value must be a fully qualified domain name (e.g. example.com), OR at least one ending parameter must be provided. - The total number of domains resolved (queries × endings) must not exceed 50. - If a query value already contains a valid TLD (e.g. example.com), it is looked up directly and is not combined with ending values. ### 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. ## Marketplace Browse and search the Unstoppable Domains secondary marketplace. Retrieve paginated listings of domains available for purchase from existing owners, with filtering by TLD and sorting options. ### List marketplace domain listings - [GET /marketplace/domains/listings](https://docs.unstoppabledomains.com/apis/reseller/openapi/marketplace/getmarketplacedomainslistings.md): Retrieve a paginated list of domains currently listed for sale on the Unstoppable Domains secondary marketplace. Use this endpoint to browse available domains, filter by TLD, and sort by price, name, or listing date. Results are paginated — use the $page and perPage parameters to navigate through results. ## 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 are automatically sent a verification email upon creation. Contacts can be used in domain registrations immediately, but domains associated with unverified contacts may become unmanageable after a certain period. ### 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 ## Hosting Configure how your domains serve content on the web. Hosting configurations control what happens when someone visits your domain — whether it redirects to another URL or proxies content from another server. Available hosting types: - `REDIRECT_301` — Permanent redirect to another URL - `REDIRECT_302` — Temporary redirect to another URL - `REVERSE_PROXY` — Proxy requests to a backend server All hosting configurations require SSL certificate provisioning. When a configuration is created or updated, the `certificateStatus` field will be `PENDING` until the certificate is issued and active. This process typically completes within a few minutes but may take longer in some cases. ### List hosting configurations - [GET /domains/{name}/dns/hosting](https://docs.unstoppabledomains.com/apis/reseller/openapi/hosting/getdomaindnshosting.md): Retrieve all hosting configurations for the specified domain. Each configuration represents how a domain or subdomain serves content (e.g., redirect, reverse proxy). Use the subName parameter to filter results to specific subdomains. Results are paginated — use the $cursor parameter to retrieve subsequent pages. ### Create or update hosting configuration - [PUT /domains/{name}/dns/hosting](https://docs.unstoppabledomains.com/apis/reseller/openapi/hosting/putdomaindnshosting.md): Set or update the hosting configuration for a domain or subdomain. This controls how the domain serves content — whether via redirect or reverse proxy. Use the subName field in the request body to target a specific subdomain. If omitted, the configuration applies to the root domain. All hosting configurations require an SSL certificate. After creating or updating a configuration, the certificateStatus will initially be PENDING while the certificate is provisioned. This typically completes within a few minutes. Use $preview=true to validate the request and see the expected result without applying changes. ### Delete hosting configuration - [DELETE /domains/{name}/dns/hosting](https://docs.unstoppabledomains.com/apis/reseller/openapi/hosting/deletedomaindnshosting.md): Remove the hosting configuration for a domain or subdomain. This stops the domain from serving content through the configured hosting type and releases the associated SSL certificate. Use the subName field in the request body to target a specific subdomain's configuration. If omitted, the root domain configuration is removed. Use $preview=true to validate the request without applying changes. ## 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.