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

Search endpoints

Operations

Status

Operations

Profile management endpoints

Operations

Message generator endpoints

Operations

Wallet data endpoints

Operations

Retrieve domains

Request

Returns a list of domains owned by the specified wallet address

Path
addressstringrequired

The owner address to query. Supported addresses include EVM or Solana.

Query
takenumber

The number of domains to return. Default is 50. Max is 100.

cursorstring

The cursor to use for pagination

curl -i -X GET \
  'https://api.unstoppabledomains.com/profile/user/{address}/domains?take=0&cursor=string'

Responses

List of domains

Bodyapplication/json
dataArray of objects
metaobject
relationship_typestring

Relationship type (followers or following)

Enum"followers""following"
domainstring

The requested domain

Response
application/json
{ "data": [ {} ], "meta": { "total_count": 0, "pagination": {} }, "relationship_type": "followers", "domain": "string" }

Retrieve NFT collections

Request

Retrieves NFT collections owned by the provided wallet address. Collections are filtered by spam using criteria such as floor price, trading volume and holder distribution.

Path
addressstringrequired

The address to query NFT collections. Supported addresses include EVM, Solana and Bitcoin.

Example: 1.0392900530713021e+47
Query
symbolsstring

Comma separated list of ticker symbols to query NFT collections data. For example an EVM address may be provided, which may specify multiple chains. The symbols=MATIC would indicate only Polygon data is requested. Omitting the symbols parameter will return data for all blockchains associated with the address.

Example: symbols=ETH,MATIC,SOL
Headers
Authorizationstringrequired

The JWT access token that authorizes the request

Example: my-jwt-access-token
curl -i -X GET \
  'https://api.unstoppabledomains.com/profile/user/1.0392900530713021e+47/nfts/collections?symbols=ETH%2CMATIC%2CSOL' \
  -H 'Authorization: my-jwt-access-token'

Responses

Set of NFT collections indexed by symbol

Bodyapplication/json
SYMBOLArray of objects(SerializedWalletNftCollection)
Response
application/json
{ "SYMBOL": [ {} ] }

Retrieve NFTs

Request

Retrieves NFT data for a given address. Authentication with an API key is required.

Path
addressstringrequired

The wallet address to retrieve NFT data. Supported addresses include EVM, Solana and Bitcoin.

Query
symbolsstring

Comma separated list of ticker symbols to query NFT data. For example an EVM address may be provided, which may specify multiple chains. The symbols=MATIC would indicate only Polygon data is requested. Omitting the symbols parameter will return data for all blockchains associated with the address.

Example: symbols=ETH,MATIC,SOL
collectionstring

The collection to query NFT data

Example: collection=unstoppable-domains
limitnumber

The maximum number of NFT records to retrieve

Example: limit=50
cursorstring

The paging cursor used in combination with the limit parameter

Example: cursor=desiredPage
Headers
Authorizationstringrequired

The JWT access token that authorizes the request

Example: my-jwt-access-token
curl -i -X GET \
  'https://api.unstoppabledomains.com/profile/user/{address}/nfts?symbols=ETH%2CMATIC%2CSOL&collection=unstoppable-domains&limit=50&cursor=desiredPage' \
  -H 'Authorization: my-jwt-access-token'

Responses

Paginated NFT data

Bodyapplication/json
SYMBOLobject(SerializedNftResponse)
Response
application/json
{ "SYMBOL": { "property1": {}, "property2": {} } }

Retrieve transactions

Request

Retrieves wallet transactions for the provided wallet address. The address may be any supported MPC address. Authentication with an API key is required.

Path
addressstringrequired

The address to retrieve transaction information. Supported addresses include EVM, Solana and Bitcoin.

Query
symbolsstring

Comma separated list of ticker symbols to query transaction data. For example an EVM address may be provided, which may specify multiple chains. The symbols=MATIC would indicate only Polygon data is requested. Omitting the symbols parameter will return data for all blockchains associated with the address.

Example: symbols=ETH,MATIC
cursorstring

The paging cursor used in combination with the limit parameter

Example: cursor=desiredPage
forceRefreshnumber

Include a timestamp to indicate that caching should be avoided when rendering the response

Example: forceRefresh=1707491939
Headers
Authorizationstringrequired

The JWT access token that authorizes the request

Example: my-jwt-access-token
curl -i -X GET \
  'https://api.unstoppabledomains.com/profile/user/{address}/transactions?symbols=ETH%2CMATIC&cursor=desiredPage&forceRefresh=1707491939' \
  -H 'Authorization: my-jwt-access-token'

Responses

Transaction data

Bodyapplication/jsonArray [
dataArray of objects(SerializedTx)
cursorstring

Pointer to next page of paginated data

Example: 123
]
Response
application/json
[ { "data": [], "cursor": 123 } ]

RPC proxy

Request

Proxy requests to a blockchain specific RPC endpoint for EVM or Solana networks. Authentication with an API key is required.

Path
addressstringrequired

The address to retrieve wallet information. Supported addresses include EVM, Solana and Bitcoin.

Headers
Authorizationstringrequired

The JWT access token that authorizes the request

Example: my-jwt-access-token
curl -i -X POST \
  'https://api.unstoppabledomains.com/profile/user/{address}/wallet/rpc' \
  -H 'Authorization: my-jwt-access-token'

Responses

RPC specific success response

Simulate a wallet transaction

Request

Simulate a wallet transaction. Authentication with an API key is required.

Path
addressstringrequired

The address to simulate a transaction. Supported addresses include EVM or Solana.

Headers
Authorizationstringrequired

The JWT access token that authorizes the request

Example: my-jwt-access-token
Bodyapplication/jsonrequired
serializedTxstring

Serialized transaction request

Example: 291
curl -i -X POST \
  'https://api.unstoppabledomains.com/profile/user/{address}/wallet/simulate' \
  -H 'Authorization: my-jwt-access-token' \
  -H 'Content-Type: application/json' \
  -d '{
    "serializedTx": 291
  }'

Responses

Simulated transaction results

Bodyapplication/jsonArray [
successboolean

Indicates transaction success

Example: true
logsArray of strings

Transaction logs

Example: ["Log entry 1"]
resultsobject(SerializedTransactionSimulationEntry)
errorMessagestring

Error message associated with transaction

Example: "An error message"
]
Response
application/json
[ { "success": true, "logs": [], "results": {}, "errorMessage": "An error message" } ]

Retrieves wallet summary

Request

Retrieves a detailed summary of wallet data for a given address. Supported addresses include EVM, Solana and Bitcoin. Authentication with an API key is required.

Path
addressstringrequired

The address to retrieve wallet information. Supported addresses include EVM, Solana and Bitcoin.

Query
verboseboolean
forceRefreshnumber

Include a timestamp to indicate that caching should be avoided when rendering the response

Example: forceRefresh=1707491939
walletFieldsstring

Comma separated list of wallet data fields to retrieve. Use this field to optimize performance and retrieve only the required data. Defaults, native,nft,token,tx.

Example: walletFields=native,nft,stats,token,tx
Headers
Authorizationstringrequired

The JWT access token that authorizes the request

Example: my-jwt-access-token
curl -i -X GET \
  'https://api.unstoppabledomains.com/profile/user/{address}/wallets?verbose=true&forceRefresh=1707491939&walletFields=native%2Cnft%2Cstats%2Ctoken%2Ctx' \
  -H 'Authorization: my-jwt-access-token'

Responses

Wallet data

Bodyapplication/jsonArray [
firstTxstring

The date of the first transaction in the wallet

Example: "2023-05-08T20:04:47.000Z"
lastTxstring

The date of the most recent transaction in the wallet

Example: "2023-09-06T13:28:47.000Z"
symbolstring

The symbol associated with the blockchain

Example: "MATIC"
addressstring

Blockchain address for the wallet

Example: 1.1706481464129065e+48
typestring

Type of balance

Example: "native"
namestring

Human readable name associated with the token

Example: "Polygon"
logoUrlstring

A URL to a logo associated with the token

Example: "http://host.io/path/to/logo"
balancestring

A formatted string representing the wallet balance

Example: 10
tokensArray of objects(SerializedWalletToken)
nftsArray of objects(SerializedWalletNftCollection)
txnsobject(SerializedTxns)
totalValueUsdnumber

Formatted aggregated market value of the wallet

Example: 200
totalValueUsdAmdnumber

Aggregated market value of the wallet

Example: 200
walletTypestring

Indicates the type of wallet associated with this address

Example: "external"
valueobject
]
Response
application/json
[ { "firstTx": "2023-05-08T20:04:47.000Z", "lastTx": "2023-09-06T13:28:47.000Z", "symbol": "MATIC", "address": 1.1706481464129065e+48, "type": "native", "name": "Polygon", "logoUrl": "http://host.io/path/to/logo", "balance": 10, "tokens": [], "nfts": [], "txns": {}, "totalValueUsd": 200, "totalValueUsdAmd": 200, "walletType": "external", "value": {} } ]

Market data endpoints

Operations

Wallet management endpoints

Operations

Solana wallet endpoints

Operations

Wallet storage endpoints

Operations

Identity management endpoints

Operations