Partner API v3 (3.0.0-beta)

Unstoppable Domains (Partner Engineering): partnerengineering@unstoppabledomains.com

Feature Overview

The Partner API v3 provides you with the ability to lookup, claim and manage Web3 domains. The API exposes a RESTful interface for interacting with Web3 domains and the Unstoppable Domains registry.

  • Lookup Domains: Search for specific domains or find suggested alternatives, to determine pricing, availability and on-chain details
  • Claiming Domains: Secure domains into your dedicated Custody wallets to maintain the domains on the blockchain
  • Manage Domains: Update records on the blockchain or transfer the domain to external owners, all through a simple API interface

Custody Solution

The API takes the hassle of Web3 out of the equation. Unstoppable Domains will handle all blockchain interactions and concepts, while Partners simply use a RESTful API for managing domains.

Since the domains will be in custody of the Partner, through Unstoppable Domains, the Partner is empowered to make any and all changes to the domains on behalf of their users.

Under the hood, Unstoppable Domains will manage dedicated custodial wallets for Partner-owned domains. These wallets are not shared between Partners and will uniquely identify the Partner on the various supported blockchains.

Should the need arise to remove domains from custody, this is supported by changing the owner of domains to external owners.

Payments

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

Blockchain Support

Domain details can be viewed across all of our supported blockchains:

  • Ethereum (ETH)
  • Polygon (MATIC)
  • Zilliqa (ZIL)

In this version of the API, Domains can only be managed on Polygon (MATIC). Ethereum (ETH) management support is coming soon.

Get Access

Contact our Partner Engineering Team to get access to the API or learn more.

domains

Domain searching and management

Lookup multiple domains

Get domain availability and owner details for multiple domains using the query string search options.

If the domain is available to be claimed it will have a availability.status of AVAILABLE and will include an availability.price object.

Securitybearer
Request
query Parameters
tlds
Array of strings
Default: []
required
Array of strings or DomainName (string)
Responses
200
400
401

API credentials were not provided and are required to perform the request.

403

Access to the resource or the ability to perform the requested operation is not allowed for your account.

default

Unknown error occurred

get/domains
Request samples
Response samples
application/json
{
  • "@type": "unstoppabledomains.com/partner.v3.List",
  • "items": [
    ]
}

Claim a domain

If a domain is available, use this route to claim it to your account. The domain will be minted or transfered to your custodial wallet where only Unstoppable Domains, on your behalf, will be able to make changes to it.

The price of the domain will be automatically added to your running balance with Unstoppable Domains. The pending balance of your account will be invoiced periodically.

Claim to specific owner

If you do not provide an owner in your request, your account's default wallet address will be used as the owner. Use GET /account to confirm your default wallet address.

When providing an owner object in your request, be sure the type aligns with the address. To claim to one of your own wallets, the type must be SELF. Use GET /wallets to see your list of available wallets.

Securitybearer
Request
Request Body schema: application/json
name
required
string (DomainName)
object (DomainRecords)
object (DomainMintRequestBodyOwner)
Responses
201
400
401

API credentials were not provided and are required to perform the request.

403

Access to the resource or the ability to perform the requested operation is not allowed for your account.

default

Unknown error occurred

post/domains
Request samples
application/json
{
  • "name": "matt.crypto",
  • "records": {
    },
  • "owner": {
    }
}
Response samples
application/json
{
  • "@type": "unstoppabledomains.com/partner.v3.DomainOperationResult",
  • "operation": {
    }
}

Get domain details

Get information about the domain's current owner and availability status. Optionally, also return the records for the domain using the $expand option.

If the domain is available to be claimed it will have a availability.status of AVAILABLE and will include an availability.price object.

Securitybearer
Request
path Parameters
name
required
string (DomainName)
Example: matt.crypto
query Parameters
$expand
Array of strings
Default: []
Items Value: "records"
Responses
200
400
401

API credentials were not provided and are required to perform the request.

403

Access to the resource or the ability to perform the requested operation is not allowed for your account.

default

Unknown error occurred

get/domains/{name}
Request samples
Response samples
application/json
{
  • "@type": "unstoppabledomains.com/partner.v3.Domain",
  • "records": {
    },
  • "name": "matt.crypto",
  • "owner": {
    },
  • "availability": {
    },
  • "blockchain": "MATIC"
}

Update a domain (partial update)

Perform Domain updates while preserving the existing records.

Change Owner with Records Preserved

{
  "owner": {
    "type": "EXTERNAL",
    "address": "0x123"
  }
}

Changes owner to the new owner address without modifying the domain records.

Owner Types

When changing owner of a domain, you must provide both a type and an address to clearly indicate the intent of the change.

  • NONE: Used when changing the owner to a "burn" address, which will result in nobody owning the domain
    • Valid "burn" addresses are 0x0000000000000000000000000000000000000000 and 0x000000000000000000000000000000000000dEaD
  • UD: Used when changing the owner to an addressed owned by Unstoppable Domains
  • SELF: Used when changing the owner to another address that belongs to your account
  • EXTERNAL: Used when changing the owner to address that doesn't qualify as any of the above.
    • WARNING: This will result in the domain belonging to an address outside of the management of Unstoppable Domains and we will have no way to recover it.

Update Records with existing Records Preserved

{
  "records": {
    "key2": "value2"
  }
}

When applied to a domain with existing records, or with an existing key2, will result in only the key2 value being set to the new value.

Securitybearer
Request
path Parameters
name
required
string (DomainName)
Example: matt.crypto
Request Body schema: application/json
object (DomainUpdateRequestBodyOwner)
records
object
Responses
200
400

Validation error or bad request due to domain custody, unsupported blockchain, etc.

401

API credentials were not provided and are required to perform the request.

403

Access to the resource or the ability to perform the requested operation is not allowed for your account.

502
default

Unknown error occurred

patch/domains/{name}
Request samples
application/json
{
  • "owner": {
    },
  • "records": { }
}
Response samples
application/json
{
  • "@type": "unstoppabledomains.com/partner.v3.DomainOperationResult",
  • "operation": {
    }
}

Update a domain (overwriting update)

Perform Domain updates while doing full resets of the records.

Change Owner with Record Reset

{
  "owner": {
    "type": "EXTERNAL",
    "address": "0x123"
  },
  "records": {}
}

Clears all records from the domain, then changes owner to the new owner address.

NOTE: You must include "records": {} to indicate the intent to clear records.

Owner Types

When changing owner of a domain, you must provide both a type and an address to clearly indicate the intent of the change.

  • NONE: Used when changing the owner to a "burn" address, which will result in nobody owning the domain
    • Valid "burn" addresses are 0x0000000000000000000000000000000000000000 and 0x000000000000000000000000000000000000dEaD
  • UD: Used when changing the owner to an addressed owned by Unstoppable Domains
  • SELF: Used when changing the owner to another address that belongs to your account
  • EXTERNAL: Used when changing the owner to address that doesn't qualify as any of the above.
    • WARNING: This will result in the domain belonging to an address outside of the management of Unstoppable Domains and we will have no way to recover it.

Update Records with Record Reset

{
  "records": {
    "key2": "value2"
  }
}

When applied to a domain with existing records, only key2 will remain after the update is complete.

Securitybearer
Request
path Parameters
name
required
string (DomainName)
Example: matt.crypto
Request Body schema: application/json
object (DomainUpdateRequestBodyOwner)
records
object
Responses
200
400

Validation error or bad request due to domain custody, unsupported blockchain, etc.

401

API credentials were not provided and are required to perform the request.

403

Access to the resource or the ability to perform the requested operation is not allowed for your account.

502
default

Unknown error occurred

put/domains/{name}
Request samples
application/json
{
  • "owner": {
    },
  • "records": { }
}
Response samples
application/json
{
  • "@type": "unstoppabledomains.com/partner.v3.DomainOperationResult",
  • "operation": {
    }
}

Return and refund a domain

Return the domain to Unstoppable Domains so it is once again considered available for claiming. The amount previously added to your running balance will be removed after successfully returning a domain.

Returns are only allowed within 14 days of the original claim date, per our return policy.

Securitybearer
Request
path Parameters
name
required
string
Responses
200
400
401

API credentials were not provided and are required to perform the request.

403

Access to the resource or the ability to perform the requested operation is not allowed for your account.

default

Unknown error occurred

delete/domains/{name}
Request samples
Response samples
application/json
{
  • "@type": "unstoppabledomains.com/partner.v3.DomainOperationResult",
  • "operation": {
    }
}

operations

All asynchronous processes handled by the API are represented as Operations. This includes claiming a domain, updating a domain's records, changing a domain's owner and returning a domain.

Check operation status

Use this endpoint to check on the status for any Operation being processed by the API.

Securitybearer
Request
path Parameters
id
required
string
Responses
200
400
401

API credentials were not provided and are required to perform the request.

403

Access to the resource or the ability to perform the requested operation is not allowed for your account.

404
default

Unknown error occurred

get/operations/{id}
Request samples
Response samples
application/json
{
  • "id": "op-4abb409c-9283-4589-bd36-d27a757a2165",
  • "@type": "unstoppabledomains.com/partner.v3.Operation",
  • "status": "PROCESSING",
  • "type": "DOMAIN_CLAIM",
  • "domain": "matt.crypto",
  • "dependencies": [
    ]
}

suggestions

Suggestions for finding available domains

Get suggested domains that are available for claiming

Securitybearer
Request
query Parameters
tlds
Array of strings
Default: []
required
Array of strings or DomainName (string)
Responses
200
400
401

API credentials were not provided and are required to perform the request.

403

Access to the resource or the ability to perform the requested operation is not allowed for your account.

get/suggestions/domains
Request samples
Response samples
application/json
{
  • "@type": "unstoppabledomains.com/partner.v3.List",
  • "items": [
    ]
}

wallets

Manage your wallets for storing domains

Get list of your wallets

Any domains held in these wallets can be managed by your account. You can use these wallets to distribute domains in whatever way works best for you.

Securitybearer
Request
query Parameters
$cursor
string

The next.$cursor value from the previous page response

Responses
200

Paginated list of your wallets

get/wallets
Request samples
Response samples
application/json
{
  • "@type": "unstoppabledomains.com/partner.v3.CursorList",
  • "items": [
    ],
  • "next": {
    }
}

Create a new wallet

Create an additional custodial wallet in your account.

Securitybearer
Responses
201
400
post/wallets
Request samples
Response samples
application/json
{
  • "id": "op-4abb409c-9283-4589-bd36-d27a757a2165",
  • "@type": "unstoppabledomains.com/partner.v3.Operation",
  • "status": "PROCESSING",
  • "type": "DOMAIN_CLAIM",
  • "domain": "matt.crypto",
  • "dependencies": [
    ]
}

Get wallet details

Securitybearer
Request
path Parameters
address
required
string
Responses
200
404

Wallet does not exist in your account

get/wallets/{address}
Request samples
Response samples
application/json
{
  • "@type": "unstoppabledomains.com/partner.v3.InternalWalletMinimal",
  • "address": "0xb4783AeF93923a2d4eEA29C84f347F26E62e4321"
}

account

Manage your account details

Get account details

Securitybearer
Responses
200
get/account
Request samples
Response samples
application/json
{
  • "@type": "unstoppabledomains.com/partner.v3.AccountSummary",
  • "id": "string",
  • "defaultWalletAddress": "string"
}

Update account details

Change your default wallet address, which is used when no wallet address is specified during domain claiming.

Securitybearer
Request
Request Body schema: application/json
required
EvmOwnerAddress (string) (OwnerAddress)
Responses
200
400
patch/account
Request samples
application/json
{
  • "defaultWalletAddress": "0xb4783AeF93923a2d4eEA29C84f347F26E62e4321"
}
Response samples
application/json
{
  • "id": "op-4abb409c-9283-4589-bd36-d27a757a2165",
  • "@type": "unstoppabledomains.com/partner.v3.Operation",
  • "status": "PROCESSING",
  • "type": "DOMAIN_CLAIM",
  • "domain": "matt.crypto",
  • "dependencies": [
    ]
}