For the complete documentation index, see llms.txt. This page is also available as Markdown.

D3 API

D3 API Overview

D3 API allow for a fully custom integration of D3 features directly into your application. The API exposes an interface for interacting with Web3 Name Tokens on the D3 registry and allows searching, purchasing and minting, and more.

Getting Started

Sign up at D3 Developer Dashboard to get your own API keys today.

Swagger for these APIs can also be viewed at https://api-public.d3.app/swagger#/

get

Provides search, combining availability information and pricing, both in native token and USD.

Authorizations
Api-KeystringRequired
Query parameters
limitany · min: 1 · max: 100Optional

Number of records to return for pagination.

Default: 25
skipanyOptional

Number of records to skip for pagination.

Default: 0
tldstringOptional

Top-level domain (TLD) of the name token to search for (comma separated list). Leave empty to search all available TLDs.

Example: com
sldstringRequired

Second-level domain (SLD) of the name token to search for (comma separated list)

Example: example
Responses
200Success
application/json
totalnumberRequired

Total number of items.

Example: 100
get/v1/partner/search
GET /v1/partner/search?sld=example HTTP/1.1
Api-Key: YOUR_API_KEY
Accept: */*
{
  "total": 100,
  "pageItems": [
    {
      "sld": "example",
      "tld": "com",
      "status": "available",
      "eoi": false,
      "isListed": true,
      "registrationExpiresAt": "2025-05-15T00:00:00.000Z",
      "reservationExpiresAt": "2025-05-15T00:00:00.000Z",
      "registryUsdPrice": "9.99",
      "registryNativePrice": "1.23456",
      "listNativePrice": "1.23456",
      "listUsdPrice": "1.23456",
      "nativeCurrency": "ETH",
      "clickUrl": "https://d3.app/search?sld=example&product=example.com&partner=com&utm_source=developer&utm_medium=api",
      "lockExpiresAt": "2025-05-15T00:00:00.000Z"
    }
  ]
}

Get name recommendations

get

Returns name recommendations based on the provided SLDs and TLDs

Authorizations
Api-KeystringRequired
Query parameters
tldstringOptional

Top-level domain (TLD) of the name token to recommend (comma separated list). Leave empty to recommend all available TLDs.

Example: com
sldstringRequired

Second-level domain (SLD) of the name token to recommend (comma separated list). Maximum of 5 SLDs allowed.

Example: example
Responses
200

Successful name recommendations

application/json
sldstringRequired

Second-level domain (SLD) of a name token.

Example: example
tldstringRequired

Top-level domain (TLD) of a name token.

Example: com
statusstring · enumRequired

Name availability status.

Example: availablePossible values:
eoibooleanRequired

Indicates whether the name is an EOI name or ICANN domain.

Example: false
isListedbooleanRequired

When status is registered, indicates if there's an active listing for it.

Example: true
registrationExpiresAtstring · date-time · nullableRequired

When name is registered, indicates registration expiration date. Past expiration date means that the name has expired, but in a grace period now. It could be renewed by the current owner, or be back on the market after a grace period has passed.

Example: 2025-05-15T00:00:00.000Z
reservationExpiresAtstring · date-time · nullableRequired

When name is reserved, indicates reservation expiration date. When name is available, indicates reservation expiration date for the reserved user.

Example: 2025-05-15T00:00:00.000Z
usdPricestring · nullableRequiredDeprecated

Price in USD (Deprecated, use registryUsdPrice instead)

Example: 9.99
registryUsdPricestring · nullableRequired

Price in USD

Example: 9.99
nativeAmountstring · nullableRequiredDeprecated

Price in native token (Deprecated, use registryNativePrice instead)

Example: 1.23456
registryNativePricestring · nullableRequired

Price in native token

Example: 1.23456
listNativePricestring · nullableRequired

Price in native token for active listing

Example: 1.23456
listUsdPricestring · nullableRequired

Price in USD for active listing

Example: 1.23456
nativeCurrencyobjectRequired

Native blockchain currency. Will be null if tokenization is unsupported for given TLD

Example: ETH
clickUrlstringRequired

Click URL for more information

Example: https://d3.app/search?sld=example&product=example.com&partner=com&utm_source=developer&utm_medium=api
lockExpiresAtstring · date-time · nullableRequired

When name is locked, indicates lock expiration date. This is the date until which the domain remains locked, after which it may become available.

Example: 2025-05-15T00:00:00.000Z
get/v1/partner/recommendations
GET /v1/partner/recommendations?sld=example HTTP/1.1
Api-Key: YOUR_API_KEY
Accept: */*
[
  {
    "sld": "example",
    "tld": "com",
    "status": "available",
    "eoi": false,
    "isListed": true,
    "registrationExpiresAt": "2025-05-15T00:00:00.000Z",
    "reservationExpiresAt": "2025-05-15T00:00:00.000Z",
    "registryUsdPrice": "9.99",
    "registryNativePrice": "1.23456",
    "listNativePrice": "1.23456",
    "listUsdPrice": "1.23456",
    "nativeCurrency": "ETH",
    "clickUrl": "https://d3.app/search?sld=example&product=example.com&partner=com&utm_source=developer&utm_medium=api",
    "lockExpiresAt": "2025-05-15T00:00:00.000Z"
  }
]

Mint a name token

post

Accepts mint name request. Only allows minting of non-premium name tokens (requires NON_PREMIUM_MINT permission).Token is not minted immediately but is scheduled for minting. Mint status could be checked using token status endpoint.

Authorizations
Api-KeystringRequired
Body
sldstringRequired

Second-level domain (SLD) of the name to mint.

Example: example
tldstringRequired

Top-level domain (TLD) of the name to mint.

Example: com
Responses
202Success
application/json
tokenIdstringRequired

Token ID that will be minted.

Example: 20719405654568256184282804044567699961418926341258048728655171573148113774124
contractAddressstringRequired

NFT Smart Contract address, which will be used to mint the token.

Example: 0x4F3775dfd49db0BBcd47eB6f45CEb6E6E9e15CD8
chainIdstringRequired

Chain ID of the blockchain network where the token will be minted. For EVM chains, Chain ID is returned.

Example: 1
post/v1/partner/mint
POST /v1/partner/mint HTTP/1.1
Api-Key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 119

{
  "sld": "example",
  "tld": "com",
  "user": {
    "wallet": "0x2E7cC63800e77BB8c662c45Ef33D1cCc23861532",
    "email": "partner@d3.email"
  }
}
{
  "tokenId": "20719405654568256184282804044567699961418926341258048728655171573148113774124",
  "contractAddress": "0x4F3775dfd49db0BBcd47eB6f45CEb6E6E9e15CD8",
  "chainId": "1"
}

Get supported payment methods for name tokens

get

Returns the supported payment options (contract and token addresses) for the provided TLDs.

Authorizations
Api-KeystringRequired
Query parameters
tldstringOptional

Top-level domain (TLD) of the name token to fetch payment options (comma separated list). Leave empty to fetch for all available TLDs.

Example: com
Responses
200

Returns payment options for name tokens.

application/json
get/v1/partner/payment/options
GET /v1/partner/payment/options HTTP/1.1
Api-Key: YOUR_API_KEY
Accept: */*
{
  "options": [
    {
      "chainId": "1",
      "chainName": "Ethereum",
      "addressType": "EVM",
      "contractAddress": "0x46A7bEA3dBb87522834c8b24FA14D051893deE8a",
      "tokenAddress": "0x0000000000000000000000000000000000000000",
      "symbol": "BTC",
      "icon": "https://cdn.d3.app/assets/tokens/token_image_BTC.png",
      "price": "0.3983550997142373"
    }
  ]
}

Create a partner order for name token purchase

post

Creates a new order for name token purchase. The response includes a payment voucher and details necessary to complete the purchase.

Authorizations
Api-KeystringRequired
Body
Responses
201

The order has been successfully created.

application/json
voucherone ofRequired

The voucher details including names, amount, and expiration

or
signaturestringRequired

The signature of the voucher for submission

Example: 0x57235cf3bc5d305cc1dc4b040ae3b1dd34ade899ecc97d33e2167346c05f217348f80012d8081bdfaeed3f02a81e12483fdf12afd6715f5c5c1f322c390defc61c
post/v1/partner/order
POST /v1/partner/order HTTP/1.1
Api-Key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 569

{
  "paymentOptions": {
    "contractAddress": "0x46A7bEA3dBb87522834c8b24FA14D051893deE8a",
    "tokenAddress": "0x0000000000000000000000000000000000000000",
    "buyerAddress": "0x65d90DBa570408f8D512c91556d8E405acd99EE2"
  },
  "names": [
    {
      "sld": "example1",
      "tld": "shib",
      "autoRenew": false,
      "domainLength": 1
    }
  ],
  "registrantContact": {
    "firstName": "text",
    "lastName": "text",
    "organization": "Example Inc",
    "email": "john.doe@example.com",
    "phone": "234567890",
    "phoneCountryCode": "+1",
    "fax": "234567890",
    "faxCountryCode": "+1",
    "street": "text",
    "city": "text",
    "state": "text",
    "postalCode": "text",
    "countryCode": "text"
  }
}
{
  "voucher": {
    "buyer": "0x0FB3F00e792F17B7D45611932ac72FcD4cdFfE6E",
    "token": "0x0000000000000000000000000000000000000000",
    "amount": "23295578965024017037",
    "voucherExpiration": 1727104758,
    "paymentId": "47cbbdaa-0a3c-4e80-94e9-139415e86fdd",
    "orderId": "3434-3675-5844-7264",
    "names": [
      {
        "registry": "0x4F3775dfd49db0BBcd47eB6f45CEb6E6E9e15CD8",
        "label": "example",
        "tld": "tst",
        "expirationTime": 1758585600,
        "owner": "0x0FB3F00e792F17B7D45611932ac72FcD4cdFfE6E",
        "renewal": false
      }
    ]
  },
  "signature": "0x57235cf3bc5d305cc1dc4b040ae3b1dd34ade899ecc97d33e2167346c05f217348f80012d8081bdfaeed3f02a81e12483fdf12afd6715f5c5c1f322c390defc61c"
}

Get name token metadata

get

Returns metadata and registration status of a name token.

Authorizations
Api-KeystringRequired
Path parameters
tldanyRequired

Top-level domain (TLD) of the name token.

Example: com
sldanyRequired

Second-level domain (SLD) of the name token.

Example: example
Responses
200Success
application/json
statusstring · enumRequired

Status of the name token.

Example: registeredPossible values:
sldstringOptional

Second-level domain (SLD) of a name token. Only present when name token is registered.

Example: example
tldstringOptional

Top-level domain (TLD) of a name token. Only present when name token is registered.

Example: com
registeredAtstring · date-timeOptional

Domain registration date. Only present when name token is registered.

Example: 2024-05-15T00:00:00.000Z
expirationDatestring · date-timeOptional

Expiration date of a registered name token. May return a past date if the token has expired. Only present when name token is registered.

Example: 2025-05-15T00:00:00.000Z
ownerstringOptional

Owner wallet address. Format is chain-specific. Only present when name token is registered.

Example: 0x2E7cC63800e77BB8c662c45Ef33D1cCc23861532
tokenIdstringOptional

Minted Token ID. Only present when name token is registered.

Example: 20719405654568256184282804044567699961418926341258048728655171573148113774124
contractAddressstringOptional

NFT Smart Contract address. Only present when name token is registered.

Example: 0x4F3775dfd49db0BBcd47eB6f45CEb6E6E9e15CD8
chainIdstringOptional

Chain ID of the blockchain network. Only present when name token is registered or waiting for finalization.

Example: 1
txHashstringOptional

Mint transaction hash. Only present when name token is waiting for finalization.

Example: 2sXoUFPpgFXRKiAXYUWkwtAEQd46azUEFwoebcYQbN6s
imageURLstringOptional

Token image URL, only present if token is minted.

Example: https://cdn.d3.app/tokens/1234567890abcdf123467890.png
get/v1/partner/token/{sld}/{tld}
GET /v1/partner/token/{sld}/{tld} HTTP/1.1
Api-Key: YOUR_API_KEY
Accept: */*
{
  "status": "registered",
  "sld": "example",
  "tld": "com",
  "registeredAt": "2024-05-15T00:00:00.000Z",
  "expirationDate": "2025-05-15T00:00:00.000Z",
  "owner": "0x2E7cC63800e77BB8c662c45Ef33D1cCc23861532",
  "tokenId": "20719405654568256184282804044567699961418926341258048728655171573148113774124",
  "contractAddress": "0x4F3775dfd49db0BBcd47eB6f45CEb6E6E9e15CD8",
  "chainId": "1",
  "txHash": "2sXoUFPpgFXRKiAXYUWkwtAEQd46azUEFwoebcYQbN6s",
  "imageURL": "https://cdn.d3.app/tokens/1234567890abcdf123467890.png"
}

Get name token metadata by token ID

get

Returns metadata of a name token by token ID.

Authorizations
Api-KeystringRequired
Path parameters
chainIdstringRequired

Chain ID of the blockchain network.

Example: 1
contractAddressstringRequired

NFT Smart Contract address.

Example: 0x4F3775dfd49db0BBcd47eB6f45CEb6E6E9e15CD8
tokenIdstringRequired

Minted Token ID.

Example: 20719405654568256184282804044567699961418926341258048728655171573148113774124
Responses
200Success
application/json
statusstring · enumRequired

Status of the name token.

Example: registeredPossible values:
sldstringOptional

Second-level domain (SLD) of a name token. Only present when name token is registered.

Example: example
tldstringOptional

Top-level domain (TLD) of a name token. Only present when name token is registered.

Example: com
registeredAtstring · date-timeOptional

Domain registration date. Only present when name token is registered.

Example: 2024-05-15T00:00:00.000Z
expirationDatestring · date-timeOptional

Expiration date of a registered name token. May return a past date if the token has expired. Only present when name token is registered.

Example: 2025-05-15T00:00:00.000Z
ownerstringOptional

Owner wallet address. Format is chain-specific. Only present when name token is registered.

Example: 0x2E7cC63800e77BB8c662c45Ef33D1cCc23861532
tokenIdstringOptional

Minted Token ID. Only present when name token is registered.

Example: 20719405654568256184282804044567699961418926341258048728655171573148113774124
contractAddressstringOptional

NFT Smart Contract address. Only present when name token is registered.

Example: 0x4F3775dfd49db0BBcd47eB6f45CEb6E6E9e15CD8
chainIdstringOptional

Chain ID of the blockchain network. Only present when name token is registered or waiting for finalization.

Example: 1
txHashstringOptional

Mint transaction hash. Only present when name token is waiting for finalization.

Example: 2sXoUFPpgFXRKiAXYUWkwtAEQd46azUEFwoebcYQbN6s
imageURLstringOptional

Token image URL, only present if token is minted.

Example: https://cdn.d3.app/tokens/1234567890abcdf123467890.png
get/v1/partner/token/{chainId}/{contractAddress}/{tokenId}
GET /v1/partner/token/{chainId}/{contractAddress}/{tokenId} HTTP/1.1
Api-Key: YOUR_API_KEY
Accept: */*
{
  "status": "registered",
  "sld": "example",
  "tld": "com",
  "registeredAt": "2024-05-15T00:00:00.000Z",
  "expirationDate": "2025-05-15T00:00:00.000Z",
  "owner": "0x2E7cC63800e77BB8c662c45Ef33D1cCc23861532",
  "tokenId": "20719405654568256184282804044567699961418926341258048728655171573148113774124",
  "contractAddress": "0x4F3775dfd49db0BBcd47eB6f45CEb6E6E9e15CD8",
  "chainId": "1",
  "txHash": "2sXoUFPpgFXRKiAXYUWkwtAEQd46azUEFwoebcYQbN6s",
  "imageURL": "https://cdn.d3.app/tokens/1234567890abcdf123467890.png"
}

Get name token metadata by multiple token IDs at once

post

Returns metadata of multiple name tokens by their token IDs.

Authorizations
Api-KeystringRequired
Path parameters
chainIdstringRequired

Chain ID of the blockchain network.

Example: 1
contractAddressstringRequired

NFT Smart Contract address.

Example: 0x4F3775dfd49db0BBcd47eB6f45CEb6E6E9e15CD8
Body
tokenIdsstring[]Required

List of token ids to lookup for

Responses
200Success
application/json
statusstring · enumRequired

Status of the name token.

Example: registeredPossible values:
sldstringOptional

Second-level domain (SLD) of a name token. Only present when name token is registered.

Example: example
tldstringOptional

Top-level domain (TLD) of a name token. Only present when name token is registered.

Example: com
registeredAtstring · date-timeOptional

Domain registration date. Only present when name token is registered.

Example: 2024-05-15T00:00:00.000Z
expirationDatestring · date-timeOptional

Expiration date of a registered name token. May return a past date if the token has expired. Only present when name token is registered.

Example: 2025-05-15T00:00:00.000Z
ownerstringOptional

Owner wallet address. Format is chain-specific. Only present when name token is registered.

Example: 0x2E7cC63800e77BB8c662c45Ef33D1cCc23861532
tokenIdstringOptional

Minted Token ID. Only present when name token is registered.

Example: 20719405654568256184282804044567699961418926341258048728655171573148113774124
contractAddressstringOptional

NFT Smart Contract address. Only present when name token is registered.

Example: 0x4F3775dfd49db0BBcd47eB6f45CEb6E6E9e15CD8
chainIdstringOptional

Chain ID of the blockchain network. Only present when name token is registered or waiting for finalization.

Example: 1
txHashstringOptional

Mint transaction hash. Only present when name token is waiting for finalization.

Example: 2sXoUFPpgFXRKiAXYUWkwtAEQd46azUEFwoebcYQbN6s
imageURLstringOptional

Token image URL, only present if token is minted.

Example: https://cdn.d3.app/tokens/1234567890abcdf123467890.png
post/v1/partner/tokens/{chainId}/{contractAddress}
POST /v1/partner/tokens/{chainId}/{contractAddress} HTTP/1.1
Api-Key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 21

{
  "tokenIds": [
    "text"
  ]
}
[
  {
    "status": "registered",
    "sld": "example",
    "tld": "com",
    "registeredAt": "2024-05-15T00:00:00.000Z",
    "expirationDate": "2025-05-15T00:00:00.000Z",
    "owner": "0x2E7cC63800e77BB8c662c45Ef33D1cCc23861532",
    "tokenId": "20719405654568256184282804044567699961418926341258048728655171573148113774124",
    "contractAddress": "0x4F3775dfd49db0BBcd47eB6f45CEb6E6E9e15CD8",
    "chainId": "1",
    "txHash": "2sXoUFPpgFXRKiAXYUWkwtAEQd46azUEFwoebcYQbN6s",
    "imageURL": "https://cdn.d3.app/tokens/1234567890abcdf123467890.png"
  }
]

Get name tokens for a wallet address

get

Returns registered name tokens for a wallet address

Authorizations
Api-KeystringRequired
Path parameters
addressanyRequired

Wallet address.

Example: 0x2E7cC63800e77BB8c662c45Ef33D1cCc23861532
addressTypestring · enumRequired

Wallet address type.

Possible values:
Query parameters
limitany · min: 1 · max: 100Optional

Number of records to return for pagination.

Default: 25
skipanyOptional

Number of records to skip for pagination.

Default: 0
Responses
200Success
application/json
totalnumberRequired

Total number of name tokens.

Example: 42
get/v1/partner/tokens/{addressType}/{address}
GET /v1/partner/tokens/{addressType}/{address} HTTP/1.1
Api-Key: YOUR_API_KEY
Accept: */*
{
  "total": 42,
  "pageItems": [
    {
      "sld": "example",
      "tld": "com",
      "registeredAt": "2024-05-15T00:00:00.000Z",
      "expirationDate": "2025-05-15T00:00:00.000Z",
      "tokenId": "20719405654568256184282804044567699961418926341258048728655171573148113774124",
      "contractAddress": "0x4F3775dfd49db0BBcd47eB6f45CEb6E6E9e15CD8",
      "chainId": "1"
    }
  ]
}
post
Authorizations
Api-KeystringRequired
Path parameters
domainNamestringRequired

The domain name to set the web3 record for

Example: example.org
Body
symbolstringRequired

The symbol representing the asset or record, typically used as a short identifier (e.g., "BTC" for Bitcoin).

Example: BTC
addressstringRequired

The address to associate with the domain and symbol. This is typically a blockchain address.

Example: 0x1234567890abcdef1234567890abcdef12345678
signaturestringRequired

The signature generated by the registrant's wallet, authorizing this operation.

Example: 0xabcdef...
signatureExpiresAtnumberRequired

The UNIX timestamp (in milliseconds) when the signature expires.

Example: 1712345678901
Responses
400

Bad Request. Signature has expired or invalid.

No content

post/v1/domain/{domainName}/records/web3
POST /v1/domain/{domainName}/records/web3 HTTP/1.1
Api-Key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 132

{
  "symbol": "BTC",
  "address": "0x1234567890abcdef1234567890abcdef12345678",
  "signature": "0xabcdef...",
  "signatureExpiresAt": 1712345678901
}

No content

delete
Authorizations
Api-KeystringRequired
Path parameters
domainNamestringRequired

The domain name to delete the web3 record from

Example: example.org
Body
symbolstringRequired

The symbol representing the asset or record, typically used as a short identifier (e.g., "BTC" for Bitcoin).

Example: BTC
signaturestringRequired

The signature generated by the registrant's wallet, authorizing this operation.

Example: 0xabcdef...
signatureExpiresAtnumberRequired

The UNIX timestamp (in milliseconds) when the signature expires.

Example: 1712345678901
Responses
400

Bad Request. Signature has expired or invalid.

No content

delete/v1/domain/{domainName}/records/web3
DELETE /v1/domain/{domainName}/records/web3 HTTP/1.1
Api-Key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 77

{
  "symbol": "BTC",
  "signature": "0xabcdef...",
  "signatureExpiresAt": 1712345678901
}

No content

post
Authorizations
Api-KeystringRequired
Path parameters
walletstringRequired
Body
namestringRequired

The name to set as the primary name for the wallet

Example: example.eth
signaturestringRequired

The signature to verify the request

Example: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
signatureExpiresAtnumberRequired

The timestamp when the signature expires

Example: 1735689600000
Responses
200Success

No content

post/v1/reverse-registry/{wallet}
POST /v1/reverse-registry/{wallet} HTTP/1.1
Api-Key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 138

{
  "name": "example.eth",
  "signature": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
  "signatureExpiresAt": 1735689600000
}
200Success

No content

delete
Authorizations
Api-KeystringRequired
Path parameters
walletstringRequired
Body
signaturestringRequired

The signature to verify the request

Example: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
signatureExpiresAtnumberRequired

The timestamp when the signature expires

Example: 1735689600000
Responses
200Success

No content

delete/v1/reverse-registry/{wallet}
DELETE /v1/reverse-registry/{wallet} HTTP/1.1
Api-Key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 117

{
  "signature": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
  "signatureExpiresAt": 1735689600000
}
200Success

No content

Last updated