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

Verify ownership of a blockchain address

Request

Verify ownership of a blockchain address by signing a message with your private key.

Path
domainstringrequired

The domain name to query profile data

symbolstringrequired

The ticker symbol for the blockchain to verify

Bodyapplication/jsonrequired
messagestring

A custom message that must be signed with the private key of the address

Example: "Unique message to sign"
signaturestring

Signature generated by signing the message with the private key

Example: "cd0dadab45baf9a06ce1279d1342ecc3f44845af"
curl -i -X POST \
  'https://api.unstoppabledomains.com/profile/user/{domain}/address/{symbol}' \
  -H 'Content-Type: application/json' \
  -d '{
    "message": "Unique message to sign",
    "signature": "cd0dadab45baf9a06ce1279d1342ecc3f44845af"
  }'

Responses

Address verification successful

Upload an XMTP or Push Protocol attachment

Request

Upload an XMTP or Push Protocol attachment. Quota enforced per user. Authentication is required using domain owner signature.

Path
domainstringrequired

The domain name to query profile data

Headers
x-auth-domainstringrequired

The domain to authorize

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: 0b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c
Bodyapplication/jsonrequired
attachmentobject(SerializedDomainProfileImageData)
curl -i -X POST \
  'https://api.unstoppabledomains.com/profile/user/{domain}/attachment' \
  -H 'Content-Type: application/json' \
  -H 'x-auth-domain: mydomain.tld' \
  -H 'x-auth-expires: 1765522015090' \
  -H 'x-auth-signature: 0b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c' \
  -d '{
    "attachment": {
      "base64": "aGVsbG8gd29ybGQK",
      "type": "image/png"
    }
  }'

Responses

Public URL to access the uploaded attachment

Bodyapplication/json
urlstring

Public URL to access the attachment

Example: "https://path/to/attachment"
Response
application/json
{ "url": "https://path/to/attachment" }

Retrieves domain's private profile data

Request

While the public API retrieves only the data identified as shareable by the domain owner, this API returns both public and private data. Authentication is required using domain owner signature.

Path
domainstringrequired

The domain name to query profile data

Query
fieldsstring

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

Example: fields=cryptoVerifications,humanityCheck,messaging,profile,records,socialAccounts,referralCode,referralTier
Headers
x-auth-domainstringrequired

The domain to authorize

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
curl -i -X GET \
  'https://api.unstoppabledomains.com/profile/user/{domain}?fields=cryptoVerifications%2ChumanityCheck%2Cmessaging%2Cprofile%2Crecords%2CsocialAccounts%2CreferralCode%2CreferralTier' \
  -H 'x-auth-domain: mydomain.tld' \
  -H 'x-auth-expires: 1765522015090' \
  -H 'x-auth-signature: b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c'

Responses

Domain profile

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

List of blockchain address verification records attached to the domain

recordsobject
storageobject
marketobject(SerializedSaleDetails)
portfolioobject(SerializedPortfolioSummary)
walletBalancesobject(SerializedWalletBalance)
socialAccountsobject
referralCodestring
Example: "d83b1155f85f4fc"
isListedForSaleboolean

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

Example: true
displayobject(SerializedDisplayAttributes)
Response
application/json
{ "profile": { "id": 0, "domainId": 0, "privateEmail": "string", "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, "displayNamePublic": true, "descriptionPublic": true, "locationPublic": true, "imagePathPublic": true, "coverPathPublic": true, "web2UrlPublic": true, "phoneNumberPublic": true }, "social": { "followerCount": 100, "followingCount": 50 }, "messaging": { "disabled": true, "thirdPartyMessagingEnabled": true, "thirdPartyMessagingConfigType": "Skiff", "hasSkiffAlias": true, "rules": [] }, "humanityCheck": { "verified": true }, "cryptoVerifications": [ {} ], "records": { "onChainRecordKey": "onChainRecordValue" }, "storage": { "apiKey": "storage-api-key", "type": "ipfs" }, "market": { "primary": {}, "secondary": [] }, "portfolio": { "wallet": {}, "account": {} }, "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": {} }, "socialAccounts": { "discord": {}, "reddit": {}, "twitter": {}, "telegram": {}, "lens": {}, "youtube": {} }, "referralCode": "d83b1155f85f4fc", "isListedForSale": true, "display": { "hidden": true, "mode": "web3" } }

Edit domain's private profile data

Request

The POST call can be used to create a new domain profile or make updates to an existing profile. Authentication is required using domain owner signature.

Path
domainstringrequired

The domain name to query profile data

Headers
x-auth-domainstringrequired

The domain to authorize

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: 0b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c
Bodyapplication/jsonrequired
displayNamestring

Name of domain owner

Example: "John Doe"
displayNamePublicboolean
descriptionstring

Short biography about the domain

Example: "This is my domain"
descriptionPublicboolean
locationstring

Location

Example: "Metaverse"
locationPublicboolean
imagePathstring

URL to the domain profile picture

Example: "https://ipfs.io/ipfs/path/to/pfp"
imagePathPublicboolean
coverPathstring

URL to the domain banner image

Example: "https://ipfs.io/ipfs/path/to/banner"
coverPathPublicboolean
web2Urlstring

Website URL

Example: "https://www.mywebsite.com"
publicDomainSellerEmailstring

Public domain seller email visible to anyone

Example: "seller@gmail.com"
web2UrlPublicboolean
showDomainSuggestionboolean
showFeaturedCommunityboolean
showFeaturedPartnerboolean
phoneNumberstring

Phone number of domain owner

Example: "555-555-5555"
phoneNumberPublicboolean
privateEmailstring

Personal email address to contact the domain owner

Example: "me@email.com"
messagingDisabledboolean

Indicates if messaging feature should be disabled

thirdPartyMessagingEnabledboolean

Indicates if third party messaging should be enabled

thirdPartyMessagingConfigTypestring

Type of third part messaging

Example: "Skiff"
dataobject
socialAccountsobject
curl -i -X POST \
  'https://api.unstoppabledomains.com/profile/user/{domain}' \
  -H 'Content-Type: application/json' \
  -H 'x-auth-domain: mydomain.tld' \
  -H 'x-auth-expires: 1765522015090' \
  -H 'x-auth-signature: 0b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c' \
  -d '{
    "displayName": "John Doe",
    "displayNamePublic": true,
    "description": "This is my domain",
    "descriptionPublic": true,
    "location": "Metaverse",
    "locationPublic": true,
    "imagePath": "https://ipfs.io/ipfs/path/to/pfp",
    "imagePathPublic": true,
    "coverPath": "https://ipfs.io/ipfs/path/to/banner",
    "coverPathPublic": true,
    "web2Url": "https://www.mywebsite.com",
    "publicDomainSellerEmail": "seller@gmail.com",
    "web2UrlPublic": true,
    "showDomainSuggestion": true,
    "showFeaturedCommunity": true,
    "showFeaturedPartner": true,
    "phoneNumber": "555-555-5555",
    "phoneNumberPublic": true,
    "privateEmail": "me@email.com",
    "messagingDisabled": true,
    "thirdPartyMessagingEnabled": true,
    "thirdPartyMessagingConfigType": "Skiff",
    "data": {
      "image": {
        "base64": "aGVsbG8gd29ybGQK",
        "type": "image/png"
      },
      "cover": {
        "base64": "aGVsbG8gd29ybGQK",
        "type": "image/png"
      }
    },
    "socialAccounts": {
      "discord": "discorduser",
      "reddit": "reddituser",
      "twitter": "twitteruser",
      "telegram": "telegramuser",
      "youtube": "youtubeuser"
    }
  }'

Responses

Domain profile

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

List of blockchain address verification records attached to the domain

recordsobject
storageobject
marketobject(SerializedSaleDetails)
portfolioobject(SerializedPortfolioSummary)
walletBalancesobject(SerializedWalletBalance)
socialAccountsobject
referralCodestring
Example: "d83b1155f85f4fc"
isListedForSaleboolean

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

Example: true
displayobject(SerializedDisplayAttributes)
Response
application/json
{ "profile": { "id": 0, "domainId": 0, "privateEmail": "string", "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, "displayNamePublic": true, "descriptionPublic": true, "locationPublic": true, "imagePathPublic": true, "coverPathPublic": true, "web2UrlPublic": true, "phoneNumberPublic": true }, "social": { "followerCount": 100, "followingCount": 50 }, "messaging": { "disabled": true, "thirdPartyMessagingEnabled": true, "thirdPartyMessagingConfigType": "Skiff", "hasSkiffAlias": true, "rules": [] }, "humanityCheck": { "verified": true }, "cryptoVerifications": [ {} ], "records": { "onChainRecordKey": "onChainRecordValue" }, "storage": { "apiKey": "storage-api-key", "type": "ipfs" }, "market": { "primary": {}, "secondary": [] }, "portfolio": { "wallet": {}, "account": {} }, "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": {} }, "socialAccounts": { "discord": {}, "reddit": {}, "twitter": {}, "telegram": {}, "lens": {}, "youtube": {} }, "referralCode": "d83b1155f85f4fc", "isListedForSale": true, "display": { "hidden": true, "mode": "web3" } }

Update NFT preferences for a domain

Request

The POST call can be used to update NFT gallery preferences for addresses resolving to the domain. Authentication is required using domain owner signature.

Path
domainstringrequired

The domain name to query profile data

Headers
x-auth-domainstringrequired

The domain to authorize

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: 0b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c
Bodyapplication/jsonrequiredArray [
symbolstring

Crypto symbol associated with the NFT gallery

Example: "ETH"
addressstring

Wallet address associated with the NFT gallery

Example: "cd0dadab45baf9a06ce1279d1342ecc3f44845af"
publicboolean

Indicates whether the NFT gallery is visible to the public

Example: true
showAllItemsboolean

Indicates whether NFTs in the gallery are shown by default

Example: true
ordernumber

Order preference in relation to other NFT galleries (higher indicates first preference)

Example: 10
itemsArray of objects(SerializedDomainNftGalleryItemPost)

Array of NFT items and their individual preferences

]
curl -i -X POST \
  'https://api.unstoppabledomains.com/profile/user/{domain}/nfts' \
  -H 'Content-Type: application/json' \
  -H 'x-auth-domain: mydomain.tld' \
  -H 'x-auth-expires: 1765522015090' \
  -H 'x-auth-signature: 0b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c' \
  -d '[
    {
      "symbol": "ETH",
      "address": "cd0dadab45baf9a06ce1279d1342ecc3f44845af",
      "public": true,
      "showAllItems": true,
      "order": 10,
      "items": [
        {
          "mint": "a9a6a3626993d487d2dbda3173cf58ca1a9d9e9f",
          "public": true
        }
      ]
    }
  ]'

Responses

Update successful

Modify domain notification preferences

Request

Modify notifications preferences related to the domain, such as mobile push notifications and email.

Path
domainstringrequired

The domain name to query profile data

Bodyapplication/jsonrequired
object(SerializedNotificationPost)
curl -i -X POST \
  'https://api.unstoppabledomains.com/profile/user/{domain}/notifications/preferences' \
  -H 'Content-Type: application/json' \
  -d '{
    "WEB_NOTIFICATION": true,
    "MOBILE_NOTIFICATION": true
  }'

Responses

Update successful

Get domain notification preferences

Request

Get notifications preferences related to the domain, such as mobile push notifications and email.

Path
domainstringrequired

The domain name to query profile data

Headers
x-auth-domainstringrequired

The domain to authorize

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
curl -i -X GET \
  'https://api.unstoppabledomains.com/profile/user/{domain}/notifications/preferences' \
  -H 'x-auth-domain: mydomain.tld' \
  -H 'x-auth-expires: 1765522015090' \
  -H 'x-auth-signature: b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c'

Responses

Update successful

Confirm an update to a domain's on-chain records

Request

The POST call can be used to complete the process of modifying a domain's on-chain records by submitting a signed transaction hash to confirm an operation. Authentication is required using domain owner signature.

Path
domainstringrequired

The domain name to update on-chain records

Headers
x-auth-domainstringrequired

The domain to authorize

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: 0b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c
Bodyapplication/jsonrequired
operationIdstring

The operation ID returned from a request to update domain records

Example: 1234
dependencyIdstring

The dependency ID returned from a request to update domain records

Example: 5678
signaturestring

The signature created by signing the domain record transaction hash with domain owner's private key

Example: 4660
txHashstring

A completed transaction hash that specifies the operation to confirm

Example: 4660
curl -i -X POST \
  'https://api.unstoppabledomains.com/profile/user/{domain}/records/confirm' \
  -H 'Content-Type: application/json' \
  -H 'x-auth-domain: mydomain.tld' \
  -H 'x-auth-expires: 1765522015090' \
  -H 'x-auth-signature: 0b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c' \
  -d '{
    "operationId": 1234,
    "dependencyId": 5678,
    "signature": 4660,
    "txHash": 4660
  }'

Responses

Successful confirmation of domain record update. The domain records will be updated on the blockchain.

Bodyapplication/json
typestring

Description of response type

Example: "unstoppabledomains.com/partner.v3.OperationType"
operationobject(Operation)
Response
application/json
{ "type": "unstoppabledomains.com/partner.v3.OperationType", "operation": { "id": 123, "dependencies": [] } }

Retrieves pending on-chain record management operations

Request

Retrieves a list of pending on-chain record operations for this domain. Authentication is required using domain owner signature.

Path
domainstringrequired

The domain name to retrieve pending operations

Headers
x-auth-domainstringrequired

The domain to authorize

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: 0b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c
curl -i -X GET \
  'https://api.unstoppabledomains.com/profile/user/{domain}/records/manage' \
  -H 'x-auth-domain: mydomain.tld' \
  -H 'x-auth-expires: 1765522015090' \
  -H 'x-auth-signature: 0b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c'

Responses

List of pending on-chain operations

Bodyapplication/json
typestring

Description of response type

Example: "unstoppabledomains.com/partner.v3.OperationType"
itemsArray of objects(Operation)

A list of operations

Response
application/json
{ "type": "unstoppabledomains.com/partner.v3.OperationType", "items": [ {} ] }

Request to update a domain's on-chain records

Request

The POST call can be used to start the process of modifying a domain's on-chain records. Authentication is required using domain owner signature.

Path
domainstringrequired

The domain name to update on-chain records

Headers
x-auth-domainstringrequired

The domain to authorize

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: 0b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c
Bodyapplication/jsonrequired
addressstring

The wallet address

Example: 4660
primaryDomainboolean

Set this domain to the wallet's primary identity

Example: true
transferToAddressstring

Transfer the domain to the specified address

Example: 291
clearRecordsstring

Clear all records upon transfer

Example: true
recordsobject

Key value pairs of records to be updated

curl -i -X POST \
  'https://api.unstoppabledomains.com/profile/user/{domain}/records/manage' \
  -H 'Content-Type: application/json' \
  -H 'x-auth-domain: mydomain.tld' \
  -H 'x-auth-expires: 1765522015090' \
  -H 'x-auth-signature: 0b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c' \
  -d '{
    "address": 4660,
    "primaryDomain": true,
    "transferToAddress": 291,
    "clearRecords": true,
    "records": {
      "key": "An arbitrary on-chain record value"
    }
  }'

Responses

Successful request of domain record update. The transaction hash must be signed and submitted to confirm the record update.

Bodyapplication/json
typestring

Description of response type

Example: "unstoppabledomains.com/partner.v3.OperationType"
operationobject(Operation)
Response
application/json
{ "type": "unstoppabledomains.com/partner.v3.OperationType", "operation": { "id": 123, "dependencies": [] } }

Retrieves on-chain record management status

Request

Retrieves the domain management registration status. The owner wallet must be registered to manage on-chain records. Authentication is required using domain owner signature.

Path
domainstringrequired

The domain name to retrieve account registrations state

Headers
x-auth-domainstringrequired

The domain to authorize

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: 0b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c
curl -i -X GET \
  'https://api.unstoppabledomains.com/profile/user/{domain}/wallet' \
  -H 'x-auth-domain: mydomain.tld' \
  -H 'x-auth-expires: 1765522015090' \
  -H 'x-auth-signature: 0b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c'

Responses

Wallet registration state

Bodyapplication/json
typestring

Description of response type

Example: "unstoppabledomains.com/partner.v3.WalletVerificationResult"
addressstring

The wallet address

Example: 4660
messagestring

Message to sign

Example: "Sign this message with wallet private key"
Response
application/json
{ "type": "unstoppabledomains.com/partner.v3.WalletVerificationResult", "address": 4660, "message": "Sign this message with wallet private key" }

Register for on-chain record management

Request

The POST call can be used to enable a wallet to manage a domain's on-chain records. Authentication is required using domain owner signature.

Path
domainstringrequired

The domain name to register for on-chain record management

Headers
x-auth-domainstringrequired

The domain to authorize

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: 0b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c
Bodyapplication/jsonrequired
addressstring

The wallet address

Example: 4660
messagestring

Message to sign

Example: "Sign this message with wallet private key"
signaturestring

The signature created by signing the message with domain owner's private key

Example: 4660
curl -i -X POST \
  'https://api.unstoppabledomains.com/profile/user/{domain}/wallet' \
  -H 'Content-Type: application/json' \
  -H 'x-auth-domain: mydomain.tld' \
  -H 'x-auth-expires: 1765522015090' \
  -H 'x-auth-signature: 0b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c' \
  -d '{
    "address": 4660,
    "message": "Sign this message with wallet private key",
    "signature": 4660
  }'

Responses

Wallet registration state

Bodyapplication/json
typestring

Description of response type

Example: "unstoppabledomains.com/partner.v3.WalletVerificationResult"
addressstring

The wallet address

Example: 4660
messagestring

Message to sign

Example: "Sign this message with wallet private key"
Response
application/json
{ "type": "unstoppabledomains.com/partner.v3.WalletVerificationResult", "address": 4660, "message": "Sign this message with wallet private key" }

Edit domain profile data in bulk

Request

The POST call can be used to create new domain profiles or make updates to existing profiles. All domains in the bulk update list must belong to the same wallet address. Authentication is required using the domain owner signature from one of the domains in the bulk update list.

Headers
x-auth-domainstringrequired

The domain to authorize

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: 0b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c
Bodyapplication/jsonrequired
domainsArray of strings
Example: ["bulk.crypto"]
profileobject(SerializedDomainProfilePost)
curl -i -X POST \
  https://api.unstoppabledomains.com/profile/user/domains \
  -H 'Content-Type: application/json' \
  -H 'x-auth-domain: mydomain.tld' \
  -H 'x-auth-expires: 1765522015090' \
  -H 'x-auth-signature: 0b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c' \
  -d '{
    "domains": [
      "bulk.crypto"
    ],
    "profile": {
      "displayName": "John Doe",
      "displayNamePublic": true,
      "description": "This is my domain",
      "descriptionPublic": true,
      "location": "Metaverse",
      "locationPublic": true,
      "imagePath": "https://ipfs.io/ipfs/path/to/pfp",
      "imagePathPublic": true,
      "coverPath": "https://ipfs.io/ipfs/path/to/banner",
      "coverPathPublic": true,
      "web2Url": "https://www.mywebsite.com",
      "publicDomainSellerEmail": "seller@gmail.com",
      "web2UrlPublic": true,
      "showDomainSuggestion": true,
      "showFeaturedCommunity": true,
      "showFeaturedPartner": true,
      "phoneNumber": "555-555-5555",
      "phoneNumberPublic": true,
      "privateEmail": "me@email.com",
      "messagingDisabled": true,
      "thirdPartyMessagingEnabled": true,
      "thirdPartyMessagingConfigType": "Skiff",
      "data": {
        "image": {
          "base64": "aGVsbG8gd29ybGQK",
          "type": "image/png"
        },
        "cover": {
          "base64": "aGVsbG8gd29ybGQK",
          "type": "image/png"
        }
      },
      "socialAccounts": {
        "discord": "discorduser",
        "reddit": "reddituser",
        "twitter": "twitteruser",
        "telegram": "telegramuser",
        "youtube": "youtubeuser"
      }
    }
  }'

Responses

Domain profile

Bodyapplication/json
successboolean

Indicates whether bulk update was successful

Example: true
domainsArray of strings
Example: ["updated.crypto"]
Response
application/json
{ "success": true, "domains": [ "updated.crypto" ] }

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