Integrating with (de)NS is simple.

Web2 API:

Note that all addresses can be sent as any valid cosmos bech32.

It will be converted to a Juno address and then any data returned based on that.

For example, the following is the Uni Faucet, looked up using its STARS address.

curl -vk

To see a single name:


To see all the names registered to a wallet:


To see the primary alias for a wallet:



To see a single name (without logging in):


To see all the names registered to a wallet (without logging in):


To see the primary alias (without logging in):


For Developers:

Mapping Address → Name

A wallet address has a 1-to-many relationship to names.

Most times, however, we only want one name.

This is where the primary alias comes in.

To get the primary alias for a wallet address, call it like so:

PrimaryAlias { address: String }

If a user/wallet address has set a primary alias, this will be returned.

Otherwise, the first (latest) result will be returned from chain.

If no names exist, NotFound will be returned.

Mapping Name → Address

This mapping is simpler, since (de)NS names are extended CW721 NFTs.

AddressOf is a simplification of OwnerOf that returns contract address and validator address, if set.

  AddressOf {
    token_id: String,
    contract_address: Option<String>,
    validator_address: Option<String>,

OwnerOf is nice as it is part of the CW721 standard, but it is not that ergonomic.

This is why for most cases, you should prefer AddressOf when querying (de)NS.

The address of this contract is: