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

Retrieves badges associated with a domain

Request

Retrieves badge data associated with requested domain.

Path
domainstringrequired

The domain name to query profile data

Query
partnersboolean

Include available partner badges in response

curl -i -X GET \
  'https://api.unstoppabledomains.com/profile/public/{domain}/badges?partners=true'

Responses

Domain badge data

Bodyapplication/json
badgesArray of objects(SerializedBadge)

List of badges held by the domain

partnersArray of objects(SerializedBadge)

List of featured badges available from partners

refreshobject(SerializedBadgeRefresh)
Response
application/json
{ "badges": [ {} ], "partners": [ {} ], "refresh": { "last": "2022-11-28 00:00:00", "next": "2022-12-01 00:00:00" } }

Retrieves social graph connections for a given domain

Request

Retrieves recommended connections for a given domain, using an on-chain social graph.

Path
domainstringrequired

The domain name to query connections

curl -i -X GET \
  'https://api.unstoppabledomains.com/profile/public/{domain}/connections'

Responses

User connections

Bodyapplication/jsonArray [
addressstring

Wallet address for the recommended account

Example: 291
domainstring

Domain name associated with the recommended account

Example: "matt.crypto"
imagePathstring

URL to the domain profile picture

Example: "https://ipfs.io/ipfs/path/to/pfp"
imageTypestring

Defines the type of image represented by the URL - default, onChain, offChain

Example: "onChain"
reasonsArray of objects(SerializedRecommendationReason)
scorenumber

Score to represent the recommendation ranking

Example: 75
xmtpEnabledboolean

Indicates whether the address supports XMTP

Example: true
]
Response
application/json
[ { "address": 291, "domain": "matt.crypto", "imagePath": "https://ipfs.io/ipfs/path/to/pfp", "imageType": "onChain", "reasons": [], "score": 75, "xmtpEnabled": true } ]

Retrieves publicly accessible domain profile

Request

Retrieves public domain profile accessible to anyone on the internet. All domain profile data is considered private, unless explicitly authorized by the domain owner. In other words, data shown on the public API is controlled by the domain owner.

Path
domainstringrequired

The domain name to query profile data

Query
fieldsstring

Comma separated list of fields to retrieve. Defaults to cryptoVerifications,profile,socialAccounts,referralCode.

Example: fields=cryptoVerifications,humanityCheck,profile,records,socialAccounts,referralCode
curl -i -X GET \
  'https://api.unstoppabledomains.com/profile/public/{domain}?fields=cryptoVerifications%2ChumanityCheck%2Cprofile%2Crecords%2CsocialAccounts%2CreferralCode'

Responses

Domain profile

Bodyapplication/json
profileobject(SerializedDomainProfileAttributes)
socialobject(SerializedSocialAttributes)
humanityCheckobject
cryptoVerificationsArray of objects(SerializedDomainCryptoVerification)

List of blockchain address verification records attached to the domain

recordsobject
metadataobject
walletBalancesobject(SerializedWalletBalance)
marketobject(SerializedSaleDetails)
portfolioobject(SerializedPortfolioSummary)
socialAccountsobject
referralCodestring

Referral code of domain owner

Example: "d83b1155f85f4fc"
isListedForSaleboolean

Indicates if the domain is listed for sale on the secondary marketplace

Example: true
displayobject(SerializedDisplayAttributes)
Response
application/json
{ "profile": { "displayName": "John Doe", "description": "This is my domain", "location": "Metaverse", "imagePath": "https://ipfs.io/ipfs/path/to/pfp", "imageType": "onChain", "coverPath": "https://ipfs.io/ipfs/path/to/banner", "web2Url": "https://www.mywebsite.com", "phoneNumber": "555-555-5555", "publicDomainSellerEmail": "seller@email.com", "tokenGalleryEnabled": true, "showDomainSuggestion": true, "showFeaturedCommunity": true, "showFeaturedPartner": true }, "social": { "followerCount": 100, "followingCount": 50 }, "humanityCheck": { "verified": true }, "cryptoVerifications": [ {} ], "records": { "onChainRecordKey": "onChainRecordValue" }, "metadata": { "metadataKey": "metadataValue" }, "walletBalances": { "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": { "primary": {}, "secondary": [] }, "portfolio": { "wallet": {}, "account": {} }, "socialAccounts": { "discord": {}, "reddit": {}, "twitter": {}, "telegram": {}, "lens": {}, "youtube": {} }, "referralCode": "d83b1155f85f4fc", "isListedForSale": true, "display": { "hidden": true, "mode": "web3" } }

Retrieves NFT data associated with blockchain accounts attached to a domain

Request

Retrieves NFT data associated with requested domain. Paging is supported using the limit and cursor query string parameters.

Path
domainstringrequired

The domain name to query profile data

Query
symbolsstring

Comma separated list of ticker symbols to query NFT data

Example: symbols=ETH,MATIC,SOL
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
resolveboolean

Indicate whether off-chain NFT metadata should be retrieved (default, true)

curl -i -X GET \
  'https://api.unstoppabledomains.com/profile/public/{domain}/nfts?symbols=ETH%2CMATIC%2CSOL&limit=50&cursor=desiredPage&resolve=true'

Responses

Domain NFT data

Bodyapplication/json
property name*objectadditional property
Response
application/json
{ "property1": { "address": "8DyNeQYMWY6NLpPN7S1nTcDy2WXLnm5rzrtdWA2H2t6Y", "cursor": "nextPage", "verified": true, "enabled": true, "showAllItems": true, "totalCount": 0, "nfts": [] }, "property2": { "address": "8DyNeQYMWY6NLpPN7S1nTcDy2WXLnm5rzrtdWA2H2t6Y", "cursor": "nextPage", "verified": true, "enabled": true, "showAllItems": true, "totalCount": 0, "nfts": [] } }

Retrieves transaction data associated with blockchain accounts attached to a domain

Request

Retrieves transaction data associated with requested domain. Paging is supported using the cursor query string parameter.

Path
domainstringrequired

The domain name to query profile data

Query
symbolsstring

Comma separated list of ticker symbols to query transaction data

Example: symbols=ETH,MATIC
cursorstring

The paging cursor used in combination with the limit parameter

Example: cursor=desiredPage
curl -i -X GET \
  'https://api.unstoppabledomains.com/profile/public/{domain}/transactions?symbols=ETH%2CMATIC&cursor=desiredPage'

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 } ]

Retrieves badges associated with a list of domains

Request

Retrieves badge data associated with a list of requested domains.

Bodyapplication/jsonrequired
domainsArray of strings

List of domains to query

curl -i -X POST \
  https://api.unstoppabledomains.com/profile/public/badges-bulk \
  -H 'Content-Type: application/json' \
  -d '{
    "domains": [
      "string"
    ]
  }'

Responses

Domain bulk badge data

Bodyapplication/json
badgesArray of objects(SerializedBadge)

List of badges held by the domain

partnersArray of objects(SerializedBadge)

List of featured badges available from partners

refreshobject(SerializedBadgeRefresh)
Response
application/json
{ "badges": [ {} ], "partners": [ {} ], "refresh": { "last": "2022-11-28 00:00:00", "next": "2022-12-01 00:00:00" } }

Swap endpoints

Operations

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