Skip to content

Profile API (1.0.0)

Feature Overview

The Profile API allows clients to retrieve and update domain profile details. There are both public and authenticated endpoints available for domain profiles. For authenticated endpoints, the API requires request signatures generated using the domain owner's private key.

Public endpoint overview

These endpoints are available without any authentication.

  • Retrieve public profile data associated with a domain
    • Domain owner controls which fields are public or private
    • Private data is always the default
  • Retrieve NFTs for addresses associated with domain
    • Domain can have any number of blockchain addresses associated for resolution services
    • Resolution addresses are stored on-chain
    • Query on-chain data for NFTs
  • Retrieve badges data for addresses associated with domain
  • Retrieve the following status of two domains

Authenticated endpoint overview

The owner of a domain may use this API to view or edit their private profile data. When managing profile data, authentication headers must be provided using the approach described below.

How to authenticate

  • Determine the message that must be signed through the message generator endpoint
    • Request GET /api/user/{domain}/signature?device=true&expiry={timestamp}
      • Replace '{domain}' with desired domain
      • Replace '{expiry}' with desired Unix epoch timestamp
    • Response contains the message that must be signed
      • Message is a unique hash value
      • Represents combination of provided request parameters
      • Includes an expiration timestamp
  • User must sign the message returned by the message generator API
    • For example, the Metamask wallet could be used to sign the message
    • Generated signature is used in header of subsequent GET or POST request
  • Construct a request to the desired endpoint that requires user authentication
    • Must include headers
      • x-auth-domain - Must equal the {domain} in context
      • x-auth-expiration - Must equal the {expiry} timestamp in the signed message
      • x-auth-signature - Must be set to the value of the user generated signature
Languages
Servers
Production
https://api.unstoppabledomains.com/profile/
Staging
https://api.ud-staging.com/profile/

Badge endpoints

Operations

Follower endpoints

Operations

Profile data endpoints

Operations

Swap endpoints

Operations

Retrieves swap quotes

Request

Retrieves swap quotes for a specified token pair

Path
addressstringrequired

The wallet address initiating the swap

Query
fromChainstring

The source token chain. Must be one of the supported chains (Bitcoin, Ethereum, Polygon, Base or Solana)

fromTokenstring

The source token contract address or ticker symbol. Contract address recommended.

fromTokenAmountstring

The desired swap amount, specified in token currency. A value in fromTokenAmount is prioritized over fromTokenAmountUsd.

fromTokenAmountUsdstring

The desired swap amount, specified in US Dollars. A value in fromTokenAmount is prioritized over fromTokenAmountUsd.

toChainstring

The destination token chain. Must be one of the supported chains (Bitcoin, Ethereum, Polygon, Base or Solana)

toTokenstring

The destination token contract address or ticker symbol. Contract address recommended.

toWalletAddressstring

(Optional) The destination wallet address for the swap funds. Defaults to source address if empty.

curl -i -X GET \
  'https://api.unstoppabledomains.com/profile/public/{address}/swap?fromChain=string&fromToken=string&fromTokenAmount=string&fromTokenAmountUsd=string&toChain=string&toToken=string&toWalletAddress=string'

Responses

The requested swap quotes

Bodyapplication/jsonArray [
durationnumber
gasstring
quoteobject(SwapQuote)
routeArray of objects(SwapRoute)
gasUsdstring
]
Response
application/json
[ { "duration": 0, "gas": "string", "quote": {}, "route": [], "gasUsd": "string" } ]

Retrieves swap transaction plan

Request

Retrieves a swap transaction plan containing the required transactions that must be signed by the wallet to complete the swap. The wallet must sign each transaction in the order it is returned in the response. For example, the list of transactions may include a first a token approval transaction, and then a swap transaction.

Path
addressstringrequired

The wallet address initiating the swap

Query
fromChainstring

The source token chain. Must be one of the supported chains (Bitcoin, Ethereum, Polygon, Base or Solana)

fromTokenstring

The source token contract address or ticker symbol. Contract address recommended.

fromTokenAmountstring

The desired swap amount, specified in token currency. A value in fromTokenAmount is prioritized over fromTokenAmountUsd.

fromTokenAmountUsdstring

The desired swap amount, specified in US Dollars. A value in fromTokenAmount is prioritized over fromTokenAmountUsd.

toChainstring

The destination token chain. Must be one of the supported chains (Bitcoin, Ethereum, Polygon, Base or Solana)

toTokenstring

The destination token contract address or ticker symbol. Contract address recommended.

toWalletAddressstring

(Optional) The destination wallet address for the swap funds. Defaults to source address if empty.

Bodyapplication/jsonrequired

A user selected quote to describe the desired swap. The quote must be one that was retrieved from the associated GET /swap API endpoint.

durationnumber
gasstring
quoteobject(SwapQuote)
routeArray of objects(SwapRoute)
gasUsdstring
curl -i -X POST \
  'https://api.unstoppabledomains.com/profile/public/{address}/swap?fromChain=string&fromToken=string&fromTokenAmount=string&fromTokenAmountUsd=string&toChain=string&toToken=string&toWalletAddress=string' \
  -H 'Content-Type: application/json' \
  -d '{
    "duration": 0,
    "gas": "string",
    "quote": {
      "integration": "string",
      "type": "string",
      "bridgeFee": "string",
      "bridgeFeeInNativeToken": "string",
      "amount": "string",
      "decimals": 0,
      "amountUSD": "string",
      "bridgeFeeUSD": "string",
      "bridgeFeeInNativeTokenUSD": "string",
      "priceImpact": "string"
    },
    "route": [
      {
        "bridge": "string"
      }
    ],
    "gasUsd": "string"
  }'

Responses

A list of transactions that must be signed to complete the swap.

Bodyapplication/jsonArray [
idstring
typestring
transactionobject
]
Response
application/json
[ { "id": "string", "type": "string", "transaction": {} } ]

Retrieves a list of supported swap chains

Request

Retrieves a list of supported swap chains

curl -i -X GET \
  https://api.unstoppabledomains.com/profile/public/swap/chains

Responses

The requested swap quotes

Bodyapplication/jsonArray [
string
]
Response
application/json
[ "string" ]

Retrieves supported tokens for a specified chain

Request

Retrieves supported tokens for a specified chain

Query
chainstring

The token chain, one of (Bitcoin, Ethereum, Polygon, Base or Solana)

tokenstring

(Optional) The source token contract address or ticker symbol. Contract address recommended.

curl -i -X GET \
  'https://api.unstoppabledomains.com/profile/public/swap/tokens?chain=string&token=string'

Responses

The requested swap quotes

Bodyapplication/jsonArray [
symbolstring
namestring
addressstring
chainstring
decimalsnumber
logostring
pricenumber
liquidityUsdnumber
tagsArray of strings
]
Response
application/json
[ { "symbol": "string", "name": "string", "address": "string", "chain": "string", "decimals": 0, "logo": "string", "price": 0, "liquidityUsd": 0, "tags": [] } ]

Search endpoints

Operations

Status

Operations

Profile management endpoints

Operations

Message generator endpoints

Operations

Wallet data endpoints

Operations

Market data endpoints

Operations

Wallet management endpoints

Operations

Solana wallet endpoints

Operations

Wallet storage endpoints

Operations

Identity management endpoints

Operations