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.
These endpoints are available without any authentication.
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.
Retrieves details about a badge, including definition and usage statistics.
Badge details
Badge not found
{- "badge": {
- "name": "World of Women",
- "code": "WoWHolder",
- "type": "default",
- "count": 3,
- "description": "Holds World of Women NFT.",
- "gallery": {
- "enabled": true,
- "featured": [
- "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d/6776"
], - "tier": 1
}, - "marketplace": {
- "listings": [
- {
- "name": "My NFT",
- "mint": "a9a6a3626993d487d2dbda3173cf58ca1a9d9e9f",
- "public": true,
- "tags": [
- "string"
], - "collection": "Bored Ape Yaught Club",
- "description": "NFT collection description",
- "price": {
- "currency": "ETH",
- "price": 0.25
}
}
], - "avgPrice": {
- "currency": "ETH",
- "price": 0.25
}, - "floorPrice": {
- "currency": "ETH",
- "price": 0.25
}, - "supply": 10000,
- "holders": 1000,
- "sales": 3,
- "volume": 3
}
}, - "sponsorship": {
- "max": 10,
- "count": 5,
- "latest": "latest.crypto",
- "domains": [
- {
- "name": "sponsor.crypto",
- "count": 1
}
]
}, - "usage": {
- "holders": 10000,
- "domains": 10000,
- "featured": [
- "matt.crypto"
], - "rank": 1
}
}
Creates a badge based on a provided marketplace link, such as OpenSea, Zuse.market, etc. The badge must be purchased to be activated before it can be claimed by other domains.
Badge pending payment
Invalid marketplace link
Collection not found
Badge already claimed
{- "name": "World of Women",
- "code": "WoWHolder",
- "type": "default",
- "count": 3,
- "description": "Holds World of Women NFT.",
- "gallery": {
- "enabled": true,
- "featured": [
- "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d/6776"
], - "tier": 1
}, - "marketplace": {
- "listings": [
- {
- "name": "My NFT",
- "mint": "a9a6a3626993d487d2dbda3173cf58ca1a9d9e9f",
- "public": true,
- "tags": [
- "string"
], - "collection": "Bored Ape Yaught Club",
- "description": "NFT collection description",
- "price": {
- "currency": "ETH",
- "price": 0.25
}
}
], - "avgPrice": {
- "currency": "ETH",
- "price": 0.25
}, - "floorPrice": {
- "currency": "ETH",
- "price": 0.25
}, - "supply": 10000,
- "holders": 1000,
- "sales": 3,
- "volume": 3
}
}
Generates a list of badges ordered by number of holders
Badge rankings
[- {
- "badge": {
- "name": "World of Women",
- "code": "WoWHolder",
- "type": "default",
- "count": 3,
- "description": "Holds World of Women NFT.",
- "gallery": {
- "enabled": true,
- "featured": [
- "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d/6776"
], - "tier": 1
}, - "marketplace": {
- "listings": [
- {
- "name": "My NFT",
- "mint": "a9a6a3626993d487d2dbda3173cf58ca1a9d9e9f",
- "public": true,
- "tags": [
- "string"
], - "collection": "Bored Ape Yaught Club",
- "description": "NFT collection description",
- "price": {
- "currency": "ETH",
- "price": 0.25
}
}
], - "avgPrice": {
- "currency": "ETH",
- "price": 0.25
}, - "floorPrice": {
- "currency": "ETH",
- "price": 0.25
}, - "supply": 10000,
- "holders": 1000,
- "sales": 3,
- "volume": 3
}
}, - "sponsorship": {
- "max": 10,
- "count": 5,
- "latest": "latest.crypto",
- "domains": [
- {
- "name": "sponsor.crypto",
- "count": 1
}
]
}, - "usage": {
- "holders": 10000,
- "domains": 10000,
- "featured": [
- "matt.crypto"
], - "rank": 1
}
}
]
Retrieves badge data associated with requested domain.
Domain badge data
Domain not found
{- "badges": [
- {
- "name": "World of Women",
- "code": "WoWHolder",
- "type": "default",
- "count": 3,
- "description": "Holds World of Women NFT.",
- "gallery": {
- "enabled": true,
- "featured": [
- "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d/6776"
], - "tier": 1
}, - "marketplace": {
- "listings": [
- {
- "name": "My NFT",
- "mint": "a9a6a3626993d487d2dbda3173cf58ca1a9d9e9f",
- "public": true,
- "tags": [
- "string"
], - "collection": "Bored Ape Yaught Club",
- "description": "NFT collection description",
- "price": {
- "currency": "ETH",
- "price": 0.25
}
}
], - "avgPrice": {
- "currency": "ETH",
- "price": 0.25
}, - "floorPrice": {
- "currency": "ETH",
- "price": 0.25
}, - "supply": 10000,
- "holders": 1000,
- "sales": 3,
- "volume": 3
}
}
], - "partners": [
- {
- "name": "World of Women",
- "code": "WoWHolder",
- "type": "default",
- "count": 3,
- "description": "Holds World of Women NFT.",
- "gallery": {
- "enabled": true,
- "featured": [
- "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d/6776"
], - "tier": 1
}, - "marketplace": {
- "listings": [
- {
- "name": "My NFT",
- "mint": "a9a6a3626993d487d2dbda3173cf58ca1a9d9e9f",
- "public": true,
- "tags": [
- "string"
], - "collection": "Bored Ape Yaught Club",
- "description": "NFT collection description",
- "price": {
- "currency": "ETH",
- "price": 0.25
}
}
], - "avgPrice": {
- "currency": "ETH",
- "price": 0.25
}, - "floorPrice": {
- "currency": "ETH",
- "price": 0.25
}, - "supply": 10000,
- "holders": 1000,
- "sales": 3,
- "volume": 3
}
}
], - "refresh": {
- "last": "2022-11-28 00:00:00",
- "next": "2022-12-01 00:00:00"
}
}
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.
Domain profile
Domain not found
{- "profile": {
- "displayName": "John Doe",
- "description": "This is my domain",
- "location": "Metaverse",
- "imageType": "onChain",
- "phoneNumber": "555-555-5555",
- "tokenGalleryEnabled": true,
- "showDomainSuggestion": true,
- "showFeaturedCommunity": true,
- "showFeaturedPartner": true
}, - "humanityCheck": {
- "verified": true
}, - "cryptoVerifications": [
- {
- "symbol": "ETH, MATIC, SOL, ADA, etc",
- "type": "hybrid",
- "address": "8DyNeQYMWY6NLpPN7S1nTcDy2WXLnm5rzrtdWA2H2t6Y",
- "plaintextMessage": "string",
- "signedMessage": "string"
}
], - "records": {
- "onChainRecordKey": "onChainRecordValue"
}, - "metadata": {
- "metadataKey": "metadataValue"
}, - "socialAccounts": {
- "discord": {
- "location": "mysocialhandle",
- "verified": true,
- "public": true
}, - "reddit": {
- "location": "mysocialhandle",
- "verified": true,
- "public": true
}, - "twitter": {
- "location": "mysocialhandle",
- "verified": true,
- "public": true
}, - "telegram": {
- "location": "mysocialhandle",
- "verified": true,
- "public": true
}, - "youtube": {
- "location": "mysocialhandle",
- "verified": true,
- "public": true
}
}, - "referralCode": "d83b1155f85f4fc"
}
Retrieves NFT data associated with requested domain. Paging is supported using the limit and cursor query string parameters.
Domain NFT data
Domain not found
{- "property1": {
- "address": "8DyNeQYMWY6NLpPN7S1nTcDy2WXLnm5rzrtdWA2H2t6Y",
- "cursor": "nextPage",
- "verified": true,
- "enabled": true,
- "nfts": [
- {
- "name": "My NFT",
- "mint": "a9a6a3626993d487d2dbda3173cf58ca1a9d9e9f",
- "public": true,
- "tags": [
- "string"
], - "collection": "Bored Ape Yaught Club",
- "description": "NFT collection description",
- "price": {
- "currency": "ETH",
- "price": 0.25
}
}
]
}, - "property2": {
- "address": "8DyNeQYMWY6NLpPN7S1nTcDy2WXLnm5rzrtdWA2H2t6Y",
- "cursor": "nextPage",
- "verified": true,
- "enabled": true,
- "nfts": [
- {
- "name": "My NFT",
- "mint": "a9a6a3626993d487d2dbda3173cf58ca1a9d9e9f",
- "public": true,
- "tags": [
- "string"
], - "collection": "Bored Ape Yaught Club",
- "description": "NFT collection description",
- "price": {
- "currency": "ETH",
- "price": 0.25
}
}
]
}
}
Verify ownership of a blockchain address by signing a message with your private key.
Address verification successful
Request contained invalid parameters
Domain not found
{- "message": "Unique message to sign",
- "signature": "cd0dadab45baf9a06ce1279d1342ecc3f44845af"
}
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.
Domain profile
Domain not found
{- "profile": {
- "id": 0,
- "domainId": 0,
- "privateEmail": "string",
- "displayName": "John Doe",
- "description": "This is my domain",
- "location": "Metaverse",
- "imageType": "onChain",
- "phoneNumber": "555-555-5555",
- "tokenGalleryEnabled": true,
- "showDomainSuggestion": true,
- "showFeaturedCommunity": true,
- "showFeaturedPartner": true,
- "displayNamePublic": true,
- "descriptionPublic": true,
- "locationPublic": true,
- "imagePathPublic": true,
- "coverPathPublic": true,
- "web2UrlPublic": true,
- "phoneNumberPublic": true
}, - "messaging": {
- "disabled": true,
- "thirdPartyMessagingEnabled": true,
- "thirdPartyMessagingConfigType": "Skiff",
- "hasSkiffAlias": true,
- "rules": [
- {
- "id": 0,
- "type": "ALLOW or BLOCK",
- "rule": "Email matching rule with wildcards",
- "name": "My first rule"
}
]
}, - "humanityCheck": {
- "verified": true
}, - "cryptoVerifications": [
- {
- "symbol": "ETH, MATIC, SOL, ADA, etc",
- "type": "hybrid",
- "address": "8DyNeQYMWY6NLpPN7S1nTcDy2WXLnm5rzrtdWA2H2t6Y",
- "plaintextMessage": "string",
- "signedMessage": "string"
}
], - "records": {
- "onChainRecordKey": "onChainRecordValue"
}, - "socialAccounts": {
- "discord": {
- "location": "mysocialhandle",
- "verified": true,
- "public": true
}, - "reddit": {
- "location": "mysocialhandle",
- "verified": true,
- "public": true
}, - "twitter": {
- "location": "mysocialhandle",
- "verified": true,
- "public": true
}, - "telegram": {
- "location": "mysocialhandle",
- "verified": true,
- "public": true
}, - "youtube": {
- "location": "mysocialhandle",
- "verified": true,
- "public": true
}
}, - "referralCode": "d83b1155f85f4fc"
}
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.
Domain profile
Domain not found
{- "displayName": "John Doe",
- "displayNamePublic": true,
- "description": "This is my domain",
- "descriptionPublic": true,
- "location": "Metaverse",
- "locationPublic": true,
- "imagePathPublic": true,
- "coverPathPublic": true,
- "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"
}
}
{- "profile": {
- "id": 0,
- "domainId": 0,
- "privateEmail": "string",
- "displayName": "John Doe",
- "description": "This is my domain",
- "location": "Metaverse",
- "imageType": "onChain",
- "phoneNumber": "555-555-5555",
- "tokenGalleryEnabled": true,
- "showDomainSuggestion": true,
- "showFeaturedCommunity": true,
- "showFeaturedPartner": true,
- "displayNamePublic": true,
- "descriptionPublic": true,
- "locationPublic": true,
- "imagePathPublic": true,
- "coverPathPublic": true,
- "web2UrlPublic": true,
- "phoneNumberPublic": true
}, - "messaging": {
- "disabled": true,
- "thirdPartyMessagingEnabled": true,
- "thirdPartyMessagingConfigType": "Skiff",
- "hasSkiffAlias": true,
- "rules": [
- {
- "id": 0,
- "type": "ALLOW or BLOCK",
- "rule": "Email matching rule with wildcards",
- "name": "My first rule"
}
]
}, - "humanityCheck": {
- "verified": true
}, - "cryptoVerifications": [
- {
- "symbol": "ETH, MATIC, SOL, ADA, etc",
- "type": "hybrid",
- "address": "8DyNeQYMWY6NLpPN7S1nTcDy2WXLnm5rzrtdWA2H2t6Y",
- "plaintextMessage": "string",
- "signedMessage": "string"
}
], - "records": {
- "onChainRecordKey": "onChainRecordValue"
}, - "socialAccounts": {
- "discord": {
- "location": "mysocialhandle",
- "verified": true,
- "public": true
}, - "reddit": {
- "location": "mysocialhandle",
- "verified": true,
- "public": true
}, - "twitter": {
- "location": "mysocialhandle",
- "verified": true,
- "public": true
}, - "telegram": {
- "location": "mysocialhandle",
- "verified": true,
- "public": true
}, - "youtube": {
- "location": "mysocialhandle",
- "verified": true,
- "public": true
}
}, - "referralCode": "d83b1155f85f4fc"
}
The POST call can be used to update NFT gallery preferences for addresses resolving to the domain. Authentication is required using domain owner signature.
Update successful
Request contained invalid parameters
Domain not found
[- {
- "symbol": "ETH",
- "address": "cd0dadab45baf9a06ce1279d1342ecc3f44845af",
- "public": true,
- "showAllItems": true,
- "order": 10,
- "items": [
- {
- "mint": "a9a6a3626993d487d2dbda3173cf58ca1a9d9e9f",
- "public": true
}
]
}
]
Retrieves the message that must be signed to verify ownership of a blockchain address. The message must be signed with the blockchain address private key and submitted using the POST call for verification.
Message to be signed
Address not defined for domain
Domain not found
{- "address": "string",
- "message": "string",
- "symbol": "string"
}
Retrieve the required message that must be signed by the domain owner to update a domain. A POST request must include the exact JSON body that will be used to make the update. The entire contents of the JSON body are included in the message hash, to ensure the signature cannot be used in combination with unauthorized modifications to the domain profile.
Message to be signed
Domain not found
[- {
- "symbol": "ETH",
- "address": "cd0dadab45baf9a06ce1279d1342ecc3f44845af",
- "public": true,
- "showAllItems": true,
- "order": 10,
- "items": [
- {
- "mint": "a9a6a3626993d487d2dbda3173cf58ca1a9d9e9f",
- "public": true
}
]
}
]
{- "message": "string",
- "headers": {
- "x-auth-domain": "mydomain.tld",
- "x-auth-expires": "Milliseconds since epoch"
}
}
Retrieve the message text that must be signed by the domain owner. The request URL and any request data must match exactly the data that will be used on the signature required endpoint.
Message to be signed
Domain not found
{- "message": "string",
- "headers": {
- "x-auth-domain": "mydomain.tld",
- "x-auth-expires": "Milliseconds since epoch"
}
}
Retrieve the required message that must be signed by the domain owner to update a domain profile. A POST request must include the exact JSON body that will be used to make the update. The entire contents of the JSON body are included in the message hash, to ensure the signature cannot be used in combination with unauthorized modifications to the domain profile.
Message to be signed
Domain not found
{- "displayName": "John Doe",
- "displayNamePublic": true,
- "description": "This is my domain",
- "descriptionPublic": true,
- "location": "Metaverse",
- "locationPublic": true,
- "imagePathPublic": true,
- "coverPathPublic": true,
- "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"
}
}
{- "message": "string",
- "headers": {
- "x-auth-domain": "mydomain.tld",
- "x-auth-expires": "Milliseconds since epoch"
}
}