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

Retrieves the following status of a domain

Request

Retrieves the following status of a domain

Path
domainstringrequired

The followee domain

Query
follower-domainstringrequired

The follower domain

curl -i -X GET \
  'https://api.unstoppabledomains.com/profile/followers/{domain}/follow-status?follower-domain=string'

Responses

Follow status

Bodyapplication/json
isFollowingboolean

Indicates whether the follower is following the followee

Response
application/json
{ "isFollowing": true }

Follow a domain

Request

Follow a domain

Path
domainstringrequired

The domain name to follow

Headers
x-auth-domainstringrequired

The domain to authorize. Should match the domain specified in the body

Example: mydomain.tld
x-auth-expiresstringrequired

The expiration time of the signature

Example: 1765522015090
x-auth-signaturestringrequired

The signature generating using domain owner private key

Example: b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c
Bodyapplication/jsonrequired
domainstring

Name of domain to follow

Example: "follow.x"
curl -i -X POST \
  'https://api.unstoppabledomains.com/profile/followers/{domain}' \
  -H 'Content-Type: application/json' \
  -H 'x-auth-domain: mydomain.tld' \
  -H 'x-auth-expires: 1765522015090' \
  -H 'x-auth-signature: b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c' \
  -d '{
    "domain": "follow.x"
  }'

Responses

Follow successful

Unfollows a domain

Request

Unfollows a domain

Path
domainstringrequired

The domain name to unfollow

Headers
x-auth-domainstringrequired

The domain to authorize. Should match the domain specified in the body

Example: mydomain.tld
x-auth-expiresstringrequired

The expiration time of the signature

Example: 1765522015090
x-auth-signaturestringrequired

The signature generating using domain owner private key

Example: b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c
Bodyapplication/jsonrequired
domainstring

Name of domain to follow

Example: "follow.x"
curl -i -X DELETE \
  'https://api.unstoppabledomains.com/profile/followers/{domain}' \
  -H 'Content-Type: application/json' \
  -H 'x-auth-domain: mydomain.tld' \
  -H 'x-auth-expires: 1765522015090' \
  -H 'x-auth-signature: b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c' \
  -d '{
    "domain": "follow.x"
  }'

Responses

Unfollow successful

Returns a list of followers or following for a domain

Request

Returns a list of followers or following for a domain

Path
domainstringrequired

The domain name to see followers for

Query
relationship_typestring

The type of relationship to return (followers or following). Default is followers.

Enum"followers""following"
Example: relationship_type=followers, following
takenumber

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

cursornumber

The cursor to use for pagination

curl -i -X GET \
  'https://api.unstoppabledomains.com/profile/followers/{domain}?relationship_type=followers%2C+following&take=0&cursor=0'

Responses

Follower list

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 follower rankings

Request

Generates a list of domains ordered by number of followers

Path
countnumber

The number of rankings to retrieve

curl -i -X GET \
  https://api.unstoppabledomains.com/profile/followers/rankings

Responses

Follower rankings

Bodyapplication/jsonArray [
domainstring
Example: "matt.crypto"
ranknumber
Example: 1
countnumber
Example: 100
]
Response
application/json
[ { "domain": "matt.crypto", "rank": 1, "count": 100 } ]

Profile data endpoints

Operations

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