The Blockchain API

About

Our vision is to make it super easy to interact with the decentralized web. We want you to be able to do this in any coding language and do it easily and quickly.

You're a key part of our vision. We love feature requests! Make one!

How to Use the API

To use the API, you simply need to create an API key pair.

Doing so takes less than a minute. Simply go to the dashboard, create an account, and generate a key pair. You can now use this pair to make API requests. You must create your first pair via the dashboard.

Feature Requests

Got a feature request? Submit it as an issue on our GitHub repo or email us.

Security

Common dogma is to never give out your seed phrase. We agree. It's a matter of security, and anyone who has your seed phrase can irreversibly empty your wallet.

When using an API endpoint that requires a seed phrase, we highly recommend that users use or create a wallet that they do not use as their primary wallet.

How you make this work depends on what you're doing. If you're minting an NFT for example, we recommend creating a new wallet and then transferring just enough SOL to that wallet to mint the NFT. This is possible on Solana because such transactions cost less than a penny. We will have more tutorials in the future that make it easier for you to be secure when using our API.

We have easy-to-use endpoints for creating a new seed phrase and then deriving a public key to enable you to transfer to that new wallet.

Let's have a constructive dialog about this. Feel free to contact us. I made a video discussing this matter here.

Note: We have had a couple of individuals harrass and threaten us. These individuals did not try our API or speak to anyone who has used it. They simply saw that we require a seed phrase for certain endpoints and figured that the proper response was to attack us. (I explain why we do here.) Such harrassment and threats are not only harmful, but they are also illegal, and we will report offenders. Do not harrass us. Rather, feel free to discuss your concerns with us and we will be more than happy to work with you to come up with a solution.

Pricing

Each user receives 50,000 free credits each month. Each endpoint costs a certain amount credits. Scroll below to any endpoint (i.e., function) to see how much each endpoint costs. (Or CMD+F Cost: 0 Credit, for example)

You can learn more about our pricing here.

We frequently do custom plans. If our pricing doesn't work for you, contact us.

If you have questions, concerns, feedback, or ideas, contact us.

SDKs / API Wrappers

We have examples using both our Python wrapper and our JavaScript wrapper here.

We have built a custom Python wrapper.

pip install theblockchainapi

We also have published a JavaScript Wrapper.

npm install theblockchainapi

We also have auto-generated wrappers for the following languages:

If you would like a different language as well, submit an issue here.

If you run into any bugs with the wrappers, submit an issue here.

Solana Wallet

A wallet consists of two things: a public key and a secret recovery phrase pair. To create a wallet, you must first create a secret recovery phrase. Then, you can generate many public keys from a secret recovery phrase.

Generate secret phrase

See examples (Python, JavaScript).

Use this endpoint to securely and randomly generate a secret recovery phrase for a Solana wallet.

Cost: 0 Credit (Free) (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)

Responses

Response samples

Content type
application/json
{
  • "secret_recovery_phrase": "fire owner display success half rescue pledge oval foam gossip window once"
}

Generate private key

See examples (Python, JavaScript).

Use this endpoint to securely and randomly generate a private key for a Solana wallet.

Cost: 0 Credit (Free) (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)

Responses

Response samples

Content type
application/json
{
  • "b58_private_key": "5UNBwP7bYMRZZeT5sENFZFaTQxwPFFhLsCKZVgicNDpB6uceSAS1qtfzGfQmAmPzM7Nf8P3b3sk2QUntY7huHhqS",
  • "private_key": [
    ]
}

Derive private key

See examples (Python, JavaScript).

Returns a private key array and a base58-encoded private key given wallet authentication.

A wallet is defined by a public key. A public key is derived from a combination of seed phrase, derivation path, and passphrase. Changing any one of these three will change the public key output.

You can generate a unique public key with each combination of secret recovery phrase, passphrase, and derivation path. Thus, with a single secret recovery phrase, you can generate many public keys. If you are just starting, just supply the secret recovery phrase you generated with the Solana Wallet Secret Recovery Phrase endpoint.

If you are trying to get a public key that already exists (e.g., created in the Phantom wallet), make sure you use the correct derivation path and passphrase. To read more about that, see the descriptions of those parameters below.

Cost: 0 Credit (Free) (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
Request Body schema: application/json
required
SecretRecoveryPhrase (object) or PrivateKey (object) or B58PrivateKey (object) (Wallet)

The wallet authentication information used to sign and submit the transaction. Click the > arrow next to "wallet" on the left to see more details. See our Security section here.

Responses

Request samples

Content type
application/json
{
  • "wallet": {
    }
}

Response samples

Content type
application/json
{
  • "b58_private_key": "5UNBwP7bYMRZZeT5sENFZFaTQxwPFFhLsCKZVgicNDpB6uceSAS1qtfzGfQmAmPzM7Nf8P3b3sk2QUntY7huHhqS",
  • "private_key": [
    ]
}

Derive public key

See examples (Python, JavaScript).

Returns a public key given wallet authentication.

A wallet is identified by a public key. A public key is derived from a combination of seed phrase, derivation path, and passphrase. Changing any one of these three will change the public key output.

It can also be derived from a private key.

*You can generate a unique public key with each combination of secret recovery phrase, passphrase, and derivation path; or from a private key. Thus, with a single secret recovery phrase, you can generate many public keys; however, with a private key, you can only generate one public key. If you are just starting, generate a secret recovery phrase or private key.

If you are trying to get a public key that already exists (e.g., created in the Phantom wallet), make sure you use the correct derivation path and passphrase; or just use the private key. To read more about that, see the descriptions of those parameters below.

Cost: 0 Credit (Free) (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
Request Body schema: application/json
required
SecretRecoveryPhrase (object) or PrivateKey (object) or B58PrivateKey (object) (Wallet)

The wallet authentication information used to sign and submit the transaction. Click the > arrow next to "wallet" on the left to see more details. See our Security section here.

Responses

Request samples

Content type
application/json
{
  • "wallet": {
    }
}

Response samples

Content type
application/json
{
  • "public_key": "GoUhxkKRiy8psWcr1csF1mbuDsfNd28JZXNHMQ5BSBnc"
}

Transfer SOL, a token, or an NFT to another address

See transfer SOL example (Python, JavaScript).

See transfer NFT example (can also be used for SPL token) (Python, JavaScript).

This is a powerful function. It might be slightly confusing because there are several optional parameters, so take some time to review it. This function can send SOL, send an SPL token, or send an NFT. You can set the fee payer of the transaction; you can sign and submit the transaction for confirmation; and you can select to simply return the compiled transaction so that you can submit it to the user for signing (e.g., via Phantom; no private keys required in this case).

Transfer SOL, a token or an NFT to another address. If you're transferring an NFT, supply the mint (the address of the mint) for the token_address.

SENDER: Note that the wallet information is used to authorize the sending of the tokens and identifies the source of the tokens. If return_compiled_transaction = false, we sign and submit the transaction (wallet is required in this case; do not provide a value for sender_public_key). If return_compiled_transaction = true, we compile the transaction (one of wallet or sender_public_key is required in this case; do not provide both).

RECIPIENT: recipient_address identifies the receiver. This is entirely separate from the information used for the SENDER above. So, in this API call, there are two wallets involved, but only one (namely, the SENDER) is needed to authorize the transaction.

FEE_PAYER: The fee payer of the transaction defaults to wallet (or sender_public_key). To set a different fee payer, provide a value for fee_payer_wallet.

If you're transfering a token, supply the token address found on the explorer (e.g., see SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt for Serum Token) for the token_address. If you're transferring SOL, do not supply a value for token_address.

Cost: 2 Credit (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
Request Body schema: application/json
wait_for_confirmation
boolean
Default: true

Whether to wait for the transaction to be confirmed on the blockchain or simply be processed. Processed means that our node has picked up the transaction request, but not that it was confirmed by the Solana cluster. Confirmed means that the cluster voted on your transaction and approved it. To be completely sure that the transaction succeeded, you can either set wait_for_confirmation=True (call takes 20 seconds with True; about 4 seconds for processed) or you can get the transaction metadata using the signature in the response returned. Once it returns the metadata, then the transaction should have succeeded.

recipient_address
required
string

The public key address of the recipient to whom you want to send a token or NFT

SecretRecoveryPhrase (object) or PrivateKey (object) or B58PrivateKey (object) (Wallet)

The wallet authentication information used to sign and submit the transaction. Click the > arrow next to "wallet" on the left to see more details. See our Security section here.

token_address
string

If you're transfering an NFT, supply the mint (the address of the mint) for the token_address. If you're transfering a token, supply the token address found on the explorer (e.g., see SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt for Serum Token) for the token_address. If you're transferring SOL, do not supply a value for token_address.

network
string
Default: "devnet"
Enum: "devnet" "mainnet-beta"
amount
string
Default: "1"

This value must be a string. What you provide here depends on if you are sending an NFT, an SPL token, or SOL.

  • NFT: This must be '1'.
  • SPL Token: This must be an integer in string format. To convert from what you see on a wallet UI (e.g., 1 ATLAS, 1 USDC) to an integer value, you have to multiply that value by 10^x where x is the number of decimals. For example, to transfer 0.2 USDC, if USDC uses 6 decimals, then the amount is 0.2 * 10^6 = 200000. You can get the number of decimals for a given SPL token here.
  • SOL: Supply this value denominated in SOL in a string format. This does not need to be an integer. For example, if you want to send 0.0005 SOL, then amount = "0.0005".
return_compiled_transaction
boolean
Default: false

If false, we sign and submit the transaction (wallet is required in this case; do not provide a value for sender_public_key). If true, we compile the transaction (either wallet or sender_public_key is required in this case; do not provide both).

sender_public_key
string
Default: null

To understand the purpose of sender_public_key first note the following: There are two ways you can complete a transfer transaction: (1) we complete it for you with your wallet information or (2) we return the raw instruction data that you can sign and submit yourself (no private keys required). When you provide your wallet authentication, we are able to determine your wallet's public key, which is the sender public key of the transaction. When you are not providing your wallet as authentication, we still need the sender_public_key to be able to return the compiled transaction. Thus, you provide sender_public_key only if you are not providing wallet authentication information and you are returning a compiled transaction. You will receive an error if you provide both wallet and sender_public_key. You will receive an error if you provide neither wallet nor sender_public_key.

SecretRecoveryPhrase (object) or PrivateKey (object) or B58PrivateKey (object) (FeePayerWallet)

If you do NOT provide a wallet here, the fee payer of the transaction will be the wallet you provide or the sender_public_key.

If you do provide a wallet, then the fee_payer_wallet will pay the fees of the transaction and any costs associated with creating a new associated token account (only if necessary; approx. 0.002 SOL when necessary). A new account is necessary if you are sending an NFT or SPL token to a user that has not received the same NFT or one of the SPL tokens before (thus, a new associated token account is needed).

Responses

Request samples

Content type
application/json
{
  • "wallet": {
    },
  • "token_address": "CK1LHEANTu7RFqN3XMzo2AnZhyus2W1vue1njrxLEM1d"
}

Response samples

Content type
application/json
Example
{
  • "transaction_signature": "38jivwh89t38hkN4dS2M585NZFRHbsGfmnuFb2MVDwrfTXdvYBamQPRo7QQNGdx8mfYahfkUV6s822nH3K7ej5nj",
  • "confirmed": true
}

Derive an associated token account address

See example (Python, JavaScript).

Each wallet can own tokens, but in Solana, each token is actually held by an associated token account (ATA), which is an account specific for a token owned by the wallet. When you transfer an SPL token, such as Serum, or transfer an NFT, you're transfering from an ATA you own to another person's ATA for that specific token. With this endpoint, you can derive an associated token address given a wallet and a token address.

Cost: 0 Credit (Free) (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
path Parameters
public_key
required
string
Example: 31LKs39pjT5oj6fWjC3F76dHWf9489asCthmgj8wu7pj

The public key of the wallet

mint_address
required
string
Example: 7EWJNaNYfPYMaqzdAAa4ps5kpqW95B7VHsjhW1kr18sj

The mint address of the token (either SPL or NFT)

Responses

Response samples

Content type
application/json
{
  • "associated_token_address": "CnW7tnQrfbSMkHYpvn5mtYw11qGpat6WM87D68cNT2hC"
}

Get an airdrop on devnet

See examples (Python, JavaScript).

Use this endpoint to get an airdrop of SOL on the devnet (not real SOL). Amount of 0.015, which is the minimum amount of SOL you need to mint a Metaplex NFT and then transfer it to another wallet.

Cost: 0 Credit (Free) (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
Request Body schema: application/json
recipient_address
required
string

The address to which to send the airdrop of 0.015 SOL

Responses

Request samples

Content type
application/json
{
  • "recipient_address": "string"
}

Response samples

Content type
application/json
{
  • "transaction_signature": "38jivwh89t38hkN4dS2M585NZFRHbsGfmnuFb2MVDwrfTXdvYBamQPRo7QQNGdx8mfYahfkUV6s822nH3K7ej5nj",
  • "confirmed": true
}

Get wallet's balance in SOL or any SPL

See examples (Python, JavaScript).

See the balance of a wallet in SOL or any SPL token.

To get the balance of an SPL token, supply the mint_address of the SPL token. The list of SPL tokens can be viewed here.

You can also use this endpoint to see whether or not a person owns an NFT. Just supply the mint_address of the NFT. A balance of "1" means the person owns the NFT, and a balance of "0" means the person does not own the NFT. This works in most cases, but we are aware of one edge case where a balance of "0" will show up for a person who is actually the owner of the NFT. We just recommend using the getNFTOwner endpoint and comparing that output to the expected address.

Cost: 0.25 Credit (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
Request Body schema: application/json
public_key
required
string

The public key address of the wallet

unit
string
Default: "lamport"
Enum: "lamport" "sol"

If you are retrieving the SOL balance, you can select whether to retrieve this in SOL or Lamport units (1 SOL = 1e9 Lamports).

network
string
Default: "devnet"
Enum: "devnet" "mainnet-beta"
mint_address
string
Default: null

The mint address of the SPL token or NFT. If not provided, the balance returned is in SOL. Make sure to use the correct network.

You can see the mint addresses of popular SPL tokens here.

Some example mint addresses of SPL tokens:

  • USDC: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
  • Mango: MangoCzJ36AjZyKwVj3VnYU4GTonjfVEnJmvvWaxLac
  • Serum: SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt
  • Raydium: 4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R
  • wSOL: So11111111111111111111111111111111111111112
  • ATLAS: ATLASXmbPQxBUYbxPsV97usA3fPQYEqzQBUHgiFCUsXx

Responses

Request samples

Content type
application/json
{
  • "public_key": "GKNcUmNacSJo4S2Kq3DuYRYRGw3sNUfJ4tyqd198t6vQ",
  • "network": "mainnet-beta",
  • "mint_address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
}

Response samples

Content type
application/json
{
  • "balance": 3.322105,
  • "decimals": 6,
  • "integer_balance": 3322105,
  • "network": "mainnet-beta"
}

Get address's tokens and respective balances

See examples (Python, JavaScript).

See the token holdings of a given public key address

Cost: 2 Credits (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
path Parameters
network
required
string
Example: mainnet-beta

The network ID (devnet, mainnet-beta)

public_key
required
string
Example: GKNcUmNacSJo4S2Kq3DuYRYRGw3sNUfJ4tyqd198t6vQ

The public key of the account whose list of owned NFTs you want to get

query Parameters
include_nfts
boolean
Default: false

Whether or not to include NFTs in the response

include_zero_balance_holdings
boolean
Default: false

Whether or not to include holdings that have zero balance. This indicates that the wallet held this token or NFT in the past, but no longer holds it.

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    }
]

Get address's associated transaction signatures

See examples (Python, JavaScript).

See the transaction signatures of a given public key address

Cost: 1 Credits (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
path Parameters
network
required
string
Example: mainnet-beta

The network ID (devnet, mainnet-beta)

public_key
required
string
Example: GKNcUmNacSJo4S2Kq3DuYRYRGw3sNUfJ4tyqd198t6vQ

The public key of the account whose list of signatures you want to get

Responses

Response samples

Content type
application/json
[
  • "jLmcxEjRppamX1b98PRUN1Sutmqn6HD1HugP5VPoib7AruFC2D5pyh7UPHZ9FUBww6Q5SRagoqjQTG51tcGtDDW",
  • "5QEdoVR7u5dPLs8A2GLpF2F4f8rYKqJwZjAFsgNRPdgsfDuo1gRBQwCQPqpZk5aYM7eSg1uuq8cdmH5bH68GrFJ5",
  • "5mdZKo9tsJijncaiVmxqVfg7PUUpk5pHebyp9ZcM53kb4RWnBqnCX18GvoQhEsYywhFkHzrXZEQksLuWhvgso4HJ",
  • "2DzKmgTFZGH1aFue8wproBNZ3WGULxV6MaK9zTMZjbnL8hv3gKQ9fjpQAFAQXWeryYtgnTUfha3v4dfwMcpRcD6U",
  • "vo19EnE97N2yhxwZaDSQjZFNsft7LxPBhbLeRnoVBGTam9SP91hWpBDvQ6oStkEhgXAvKDdz3poUCypU4jmpkFs",
  • "22D1YEiLn8oArCLWU23hDtRk4kbZmSUQkHwXk88eDrKLYkx5zWCeDZ8UadLaa1AMkwy6jNHiDo4mVRfqX4nmUrB3",
  • "3R6QjGex1TRhs62pvU78Ccg5gSNCox5K7qxemKM3zaxGWzkfJ7DoWwW4YzjSrh7ZDCxRjm9AXbfvu8Pj9w3Bs2SH"
]

Get address's NFTs

See examples (Python, JavaScript).

See the NFTs that belong to a given public key address

Cost: 3 Credits (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
path Parameters
network
required
string
Example: mainnet-beta

The network ID (devnet, mainnet-beta)

public_key
required
string
Example: HE3ZYk4aWfKD7R9EmFQbxjj75JdgHuDztNAsseKVan82

The public key of the account whose list of owned NFTs you want to get

Responses

Response samples

Content type
application/json
{}

Solana NFT

Easily create a Solana NFT and see related fees for creating an NFT.

Create an NFT on Solana

See examples (Python, JavaScript).

Create a Metaplex NFT on Solana.

Read more on this here.

Note: Please see this article to learn more about what nft_upload_method means and how storing the metadata of an NFT works.

If you're using nft_upload_method = "LINK", then to add attributes to the NFT or an image, add them to a JSON file and upload that to Arweave/IPFS/Filecoin. See the JSON format here.

Then supply the link to the JSON file in nft_url.

NOTE: Don't use nft_metadata. Values provided here do not do anything at the moment. We are fixing this soon.

Cost: 5 Credits (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
Request Body schema: application/json
wait_for_confirmation
boolean
Default: true

Whether to wait for the NFT mint to be confirmed on the blockchain or simply be processed. Processed means that our node has picked up the transaction request, but not that it was confirmed by the Solana cluster. Confirmed means that the cluster voted on your transaction and approved it. To be completely sure that the NFT was minted, you can either set wait_for_confirmation=True (call takes 20 seconds with True; about 4 seconds for processed) or you can get the metadata from the mint returned. Once it returns the NFT metadata, then the NFT should have been successfully minted.

SecretRecoveryPhrase (object) or PrivateKey (object) or B58PrivateKey (object) (Wallet)

The wallet authentication information used to sign and submit the transaction. Click the > arrow next to "wallet" on the left to see more details. See our Security section here.

name
string
Default: ""

The name of the token. Limited to 32 characters. Stored on the blockchain.

symbol
string
Default: ""

The symbol of the token. Limited to 10 characters. Stored on the blockchain.

description
string
Default: ""

The description of the NFT. Limited to 2000 characters. Not stored on the blockchain.

If you are providing your own uri (see above), then you do not need to provide this.

If you are not providing your own uri and you do not provide this, then there wills simply be no description.

Only provide a value for description if the upload_method is set to S3 (see the description for upload_method above).

upload_method
string
Default: "S3"
Enum: "S3" "URI"

When you choose S3, all of the name, description, symbol, uri_metadata, and image_url are put into a JSON dictionary and uploaded to S3 as a JSON file.

This is uploaded to an AWS S3 bucket we own, and is an option we provide at no charge. The S3 link to this file is stored in the NFT's account on the blockchain. Learn more here.

When you choose URI, the uri you provide is stored on the blockchain, and the uri_metadata, description, and image_url are ignored and not stored anywhere. S3 is NOT involved in this case.

An example of a uri you would provide is an Arweave URL, like this: https://arweave.net/_Y8tETU3FbAFZSM1wXNeWPweWwrW9K6oSF1SYi_bH9A.

uri
string
Default: ""

The uri you provide is stored on the blockchain, and the uri_metadata, description, and image_url are ignored and not stored anywhere. S3 is NOT involved in this case.

Read more here.

An example of a uri you would provide is an Arweave URL, like this: https://arweave.net/_Y8tETU3FbAFZSM1wXNeWPweWwrW9K6oSF1SYi_bH9A.

Only provide a value for uri if the upload_method is set to URI (see the description for upload_method above).

image_url
string
Default: ""

The URL of the image of the NFT.

If you are providing your own uri (see above), then you do not need to provide this.

If you are not providing your own uri and you do not provide this, then there wills simply be no image.

Only provide a value for image_url if the upload_method is set to S3 (see the description for upload_method above).

uri_metadata
object
Default: {}

The off-chain metadata.

If you are providing your own uri (see above), then you do not need to provide this.

If you are not providing your own uri and you do not provide this, then there wills simply be no image.

Only provide a value for uri_metadata if the upload_method is set to S3 (see the description for upload_method above).

Learn more about how to format this metadata here.

is_mutable
boolean
Default: true

Indicates whether or not the NFT created is mutable. If mutable, the NFT can be updated later. Once set to immutable, the NFT is unable to be changed.

is_master_edition
boolean
Default: true

Whether or not the NFT is a master edition NFT. Saves about 0.001 SOL in transaction costs when set to false.

seller_fee_basis_points
number
Default: 0

Valid values from 0 to 10000. Must be an integer. Represents the number of basis points that the seller receives as a fee upon sale. E.g., 100 indicates a 1% seller fee. Seller does not receive a fee when "primary_sale_has_happened" is set to true. Will be set to false after first sale has occurred.

creators
Array of strings
Default: ["The Public Key Corresponding to The Seed Phrase, Path, and Passphrase Provided"]

A JSON encoded string representing an array / list. The designated creators of the NFT. Length of the creator list must match length of the list of share. Valid lengths of the list range from 1 to 5. Each item in the list must be a valid public key address.
Only the public key corresponding to the seed phrase provided will be marked as verified. Any other creators supplied will be marked as unverified.

share
Array of integers
Default: [100]

A JSON encoded string representing an array / list. The share of the royalty that each creator gets. Valid values range from 0 to 100. Sum of the values must equal 100. Only integer value accepted. Length of the share list must match length of the list of creators.

mint_to_public_key
string
Default: "The public key of the wallet provided"

Assign ownership of the NFT to the public key address given by mint_to_public_key

network
string
Default: "devnet"
Enum: "devnet" "mainnet-beta"

This determines which network you choose to run the API calls on. We recommend first testing on the devnet, because minting an NFT costs a little above 0.01 SOL, which is about $1.60 at the time of this writing. When you run on the mainnet-beta, each successful call will deduct approximately that much. When you run on the devnet, that amount is deducted from a simulated amount, so you are not paying with real SOL. To get SOL on the devnet, airdrop SOL to this address using the CLI. Keep in mind that you can only do this every so often. If you are rate-limited, consider using a VPN and trying again, or just waiting. To get SOL on the mainnet-beta, you must transfer real SOL to this account from another wallet (e.g., from another wallet you own, from an exchange, etc.). We hope to make this process easier in the future, and if you have any suggestions, please add them as an issue on our GitHub repository for the API. To get a fee estimate, make a GET requests to the v1/solana/nft/mint/fee endpoint (details in sidebar).

Responses

Request samples

Content type
application/json
{
  • "wait_for_confirmation": true,
  • "wallet": {
    },
  • "return_compiled_transaction": false,
  • "name": "Super Musk",
  • "symbol": "MUSK",
  • "description": "Buy this image of Super Musk!",
  • "uri_metadata": {},
  • "upload_method": "S3",
  • "is_mutable": true,
  • "is_master_edition": true,
  • "seller_fee_basis_points": 100,
  • "creators": [
    ],
  • "share": [
    ],
  • "network": "devnet"
}

Response samples

Content type
application/json
{
  • "confirmed": true,
  • "data": {},
  • "is_mutable": true,
  • "mint": "EEr5yQpNXf7Bru6Rt5podx56HGW9CEehXqgRGh2wa71w",
  • "primary_sale_happened": true,
  • "update_authority": "5FzddvKbxE54KEg2WoeNiGWJYAUBabKVFg2MVCSacWiJ",
  • "metadata_account": "HTu4wUU4WxL48AdQM3nQuHeY8iAqgV9aKwbes4P6Y1c4",
  • "edition_nonce": 255,
  • "token_standard": 0,
  • "collection": {
    },
  • "uses": 0
}

Search NFTs on Solana

See examples (Python, JavaScript).

With this endpoint, you can search for NFTs by their symbol, name of NFTs, uuid, configuration address, and update authority.

The output is a list of NFTs that match your query.

You can also provide multiple search clauses, such as the update authority (update_authority="G17UmNGnMJ851x3M1JXocgpft1afcYedjPuFpo1ohhCk") and symbol begins with "Sol" (symbol="Sol", symbol_search_method='begins_with').

Cost: 1 Credit (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
Request Body schema: application/json
update_authority
string

The public key of the update authority of the NFT

update_authority_search_method
string
Default: "exact_match"
Value: "exact_match"

Only exact_match supported at this time

mint_address
string

The mint address of the NFT

mint_address_search_method
string
Default: "exact_match"
Value: "exact_match"

Only exact_match supported at this time

name
string

The name of the NFT

name_search_method
string
Default: "exact_match"
Enum: "begins_with" "exact_match"
uri
string

The NFT's uri

uri_search_method
string
Default: "exact_match"
Enum: "begins_with" "exact_match"
symbol
string

The symbol associated with the candy machine

symbol_search_method
string
Default: "exact_match"
Enum: "begins_with" "exact_match"
network
string
Default: "devnet"
Enum: "devnet" "mainnet-beta"

Responses

Request samples

Content type
application/json
{
  • "name": "Elon Musk",
  • "name_search_method": "exact_match",
  • "symbol": "Elo",
  • "symbol_search_method": "begins_with",
  • "network": "mainnet-beta"
}

Response samples

Content type
application/json
[
  • [
    ]
]

Get an NFT's metadata

See examples (Python, JavaScript).

Get the metadata of an NFT.

If you're looking for metadata such as attributes and others, you can retrieve them from the link in the URI field of the NFT metadata returned. See the example on the right. The URI is an Arweave URL. That contains the attributes and other information about the NFT. That URL is stored on the Solana blockchain.

Cost: 0.25 Credit (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
path Parameters
network
required
string
Enum: "devnet" "mainnet-beta"
Example: mainnet-beta

The network ID

mint_address
required
string
Example: EEr5yQpNXf7Bru6Rt5podx56HGW9CEehXqgRGh2wa71w

The mint address of the NFT

Responses

Response samples

Content type
application/json
{
  • "confirmed": true,
  • "data": {},
  • "is_mutable": true,
  • "mint": "EEr5yQpNXf7Bru6Rt5podx56HGW9CEehXqgRGh2wa71w",
  • "primary_sale_happened": true,
  • "update_authority": "5FzddvKbxE54KEg2WoeNiGWJYAUBabKVFg2MVCSacWiJ",
  • "metadata_account": "HTu4wUU4WxL48AdQM3nQuHeY8iAqgV9aKwbes4P6Y1c4",
  • "edition_nonce": 255,
  • "token_standard": 0,
  • "collection": {
    },
  • "uses": 0
}

Get owner of an NFT

See examples (Python, JavaScript).

Get the owner of an NFT. This returns the public key of the wallet that owns the associated token account that owns the NFT.

If you want to get the associated token account that literally owns the NFT, derive the associated token account address from the public key returned and the NFT mint address using this endpoint.

Cost: 0.25 Credit (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
path Parameters
network
required
string
Enum: "devnet" "mainnet-beta"
Example: devnet

The network ID

mint_address
required
string
Example: 4zH3Rwm1QXdfTSUqsYmeUBY4QqQmQEXJVbv4ErSK736Q

The mint address of the NFT

Responses

Response samples

Content type
application/json
{
  • "nft_owner": "31LKs39pjT5oj6fWjC3F76dHWf9489asCthmgj8wu7pj"
}

Get owner of an NFT (advanced)

See examples (Python, JavaScript).

Get the owner, state, listed price, and listed marketplace (if any) of an NFT.

Here's are a couple of example responses:

{
    'contract': {
        'contract_blockchain_identifier': 'M2mx93ekt1fmXSVkTrUL9xVFHkmME8HTUi5Cyc5aF7K', 
        'contract_id': 'magic-eden-v2', 
        'contract_name': 'Magic Eden v2', 
        'contract_type': 'marketplace'
    }, 
    'owner': '25UJMR3FiMM6noQtPEaCJ6eDU2YQ7myDhikVQXmMuSRW', 
    'price': 50000000, 
    'state': 'listing'
}
{
    'contract': null, 
    'owner': 'C37PJiJU8WTgoUoFqmB1Maw8hkuENDZoGDQA1pm54Fdd', 
    'price': null, 
    'state': 'holding'
}

This function will return whether the NFT is listed, loaned (Yawww NFT loans), otc, staked, burned, or held.

If listed, it will return the contract, the readable name of the contract (e.g., Magic Eden, OpenSea), the contract ID (if any; e.g., open-sea), the owner, and the listed price. From this, you can get the floor of a collection. We currently support Magic Eden (v1, v2), Exchange.Art (auction, singles), CoralCube, Solanart (v1, v2), Yawww Loans, Yawww OTC, OpenSea, Fractal, SolSea, and AlphaArt.

If loaned, it will return the loan requester as the owner, the loan amount, and the loan contract. We only support the Yawww loaning contract.

If listed on an OTC marketplace, it will return the same information as listed. OTC is used to distinguish between marketplaces that respect royalties (OTC) and those that don't (normal ones). The only OTC contract we track is Yawwww, at the moment. We do not yet track Solanart v3.

If staked, it will return the owner and the staking contract public key.

If burned, it will return the burner as the owner.

If held, it will simply return the owner.

If you want to get the literal owner, which may or may not be the same as the owner returned here, call the simplified get NFT owner function. For example, Bob might own the NFT, but if it is listed on Magic Eden, then the NFT is held in escrow and "owned" by Magic Eden. The simplified function will return Magic Eden as the owner (the literal owner). This advanced function will tell you the implied owner, which would be Bob.

Cost: 1.0 Credit (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
path Parameters
network
required
string
Enum: "devnet" "mainnet-beta"
Example: devnet

The network ID

mint_address
required
string
Example: 4zH3Rwm1QXdfTSUqsYmeUBY4QqQmQEXJVbv4ErSK736Q

The mint address of the NFT

Responses

Response samples

Content type
application/json
{
  • "contract": {
    },
  • "owner": "25UJMR3FiMM6noQtPEaCJ6eDU2YQ7myDhikVQXmMuSRW",
  • "price": 50000000,
  • "state": "listing"
}

Get history of an NFT

See examples (Python, JavaScript).

Get the full history of an NFT, all the way up until mint.

The endpoint returns a list of events, from mint until present moment, that correspond to transactions that interacted with the NFT.

Each event is a dictionary containing basic information about the event (e.g., account_blockchain_identifier, account_type, block_time, chain, succeeded), the event itself, the previous state of the NFT (pre_state), and the resulting state of the NFT (post_state).

To see more, expand the "200 Successful Response" box below.

Cost: 15.0 Credit (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
path Parameters
network
required
string
Enum: "devnet" "mainnet-beta"
Example: devnet

The network ID

mint_address
required
string
Example: 4zH3Rwm1QXdfTSUqsYmeUBY4QqQmQEXJVbv4ErSK736Q

The mint address of the NFT

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    }
]

Get the NFT mint fee

See examples (Python, JavaScript).

Get the estimated fee for minting an NFT on the Solana blockchain using the Metaplex protocol.

Cost: 0 Credit (Free) (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)

Responses

Response samples

Content type
application/json
{
  • "description": "We calculated the fee as follows: 10000000 + 1461600 + 534600 = 11996200 lamports = 0.0119962 SOL. The largest portion of the fee (10000000 lamports) goes to the Metaplex protocol. They list their fees on their front page <a href=\"https://metaplex.com/\">here</a>. The rent fee (1461600 lamports) is the lifetime fee needed to store the NFT on the blockchain. This is paid to the validators of the network. You can see how the rent fees work <a href=\"https://docs.solana.com/implemented-proposals/rent\" target=\"_blank\">here</a>. The transaction fee (534600 lamports) is what is paid to the validators for processing the three transactions that compose the minting of an NFT: creating an account, initializing the mint, creating the metadata, and updating the metadata. \n",
  • "fee": 11996200
}

Get the ID of the candy machine of an NFT

See examples (Python, JavaScript).

Get the candy machine ID from where the NFT came, if any. NFTs can also be minted without a candy machine.

It's also possible that we return "Not Found" when the NFT actually did come from a version of a candy machine. We check for the most popular versions of candy machine, but it is possible that someone creates their own candy machine version and mints NFTs from it.

Cost: 1 Credit (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
Request Body schema: application/json
mint_address
required
string

The address of the NFT. NOT the mint authority address

network
string
Default: "devnet"
Enum: "devnet" "mainnet-beta"

Responses

Request samples

Content type
application/json
{
  • "mint_address": "AFPX7VQcezoxJsLWeA6zVTHLGtrjrY5SqgtmjD8jxvgx",
  • "network": "mainnet-beta"
}

Response samples

Content type
application/json
{
  • "candy_machine_id": "FmkrvXRenCGtwBHw3VtBcExp8eTdnau97upaewF4GUEX",
  • "candy_machine_contract_version": "v1"
}

Solana Candy Machine

Interact with the Metaplex Candy Machine smart contract on Solana.

Search CMs

See examples (Python, JavaScript).

With this endpoint, you can search candy machines by their symbol, name of NFTs, uuid, configuration address, and update authority.

The output is a list of config addresses.

You can also provide multiple search clauses, such as the update authority (update_authority="G17UmNGnMJ851x3M1JXocgpft1afcYedjPuFpo1ohhCk") and symbol begins with "Sol" (symbol="Sol", symbol_search_method='begins_with').

Cost: 2 Credits (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
Request Body schema: application/json
update_authority
string

The public key of the update authority of the candy machine

update_authority_search_method
string
Default: "exact_match"
Value: "exact_match"

Only exact_match supported at this time

config_address
string

The public key of the configuration of the candy machine

config_address_search_method
string
Default: "exact_match"
Value: "exact_match"

Only exact_match supported at this time

uuid
string

The alphanumeric string of length six that corresponds to the candy machine. This is NOT the candy machine ID. This is the first six letters of the configuration address and is also used to identify the candy machine. An example is 4zKV6i.

uuid_search_method
string
Default: "exact_match"
Value: "exact_match"

Only exact_match supported at this time

symbol
string

The symbol associated with the candy machine

symbol_search_method
string
Default: "exact_match"
Enum: "begins_with" "exact_match"
nft_name
string

The name of an NFT on the candy machine, minted or unminted. For example, to find The Solana Money Boys candy machine, you already know that each NFT is named "Solana Money Boy #0", "Solana Money Boy #1", and so on. So you could search with nft_name="Solana Money Boy #0", nft_name_index=0, nft_name_search_method='exact_match', for example, which would return the candy machine ID. This also works with candy machines that are not live but are uploaded.

nft_name_index
string
Default: 0

The index of the NFT to check, e.g., the 2nd NFT would have an index of 1. We cannot search all NFTs on a candy machine currently, so you must search an NFT at a particular position, such as the first, second, and so on. In general, nft_name_index=0 works for most use cases.

nft_name_search_method
string
Default: "exact_match"
Enum: "begins_with" "exact_match"
network
string
Default: "devnet"
Enum: "devnet" "mainnet-beta"
candy_machine_contract_version
string
Default: "v1"
Enum: "v1" "v2"

The candy machine contract you want to search. If you want to search v1 candy machines, set this to v1. If you want to search v2 candy machines. set this to v2.

Responses

Request samples

Content type
application/json
{
  • "nft_name": "Elon",
  • "nft_name_index": 44,
  • "nft_name_search_method": "begins_with",
  • "network": "mainnet-beta"
}

Response samples

Content type
application/json
[
  • "9AYhVG9rH4DwPufEmSD1PD3vs64GhaXWNzXb33jFpByA",
  • "FmZNv5HqPWEqXHYtKPKe15WF8PuNk1FbJmVMN92dVjNP",
  • "6Anxd2Tn7KEEMKpGyBdVWTCp5jpAum8cppgXMJTzp44R"
]

List all CMs

See examples (Python, JavaScript).

With this endpoint, you can list all candy machines published to Solana mainnet.

We update this data every 15 minutes.

The output is a list of config addresses, currently about 17000 in length.

Cost: 2 Credits (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)

Responses

Response samples

Content type
application/json
{
  • "last_updated": 1639529803,
  • "config_addresses": [
    ],
  • "config_addresses_v1": [
    ],
  • "config_addresses_v2": [
    ],
  • "config_addresses_magic-eden-v1": [
    ]
}

Get CM's NFTs

See examples (Python, JavaScript).

Use this endpoint to get the list of all NFTs (minted and unminted) from a Solana Candy Machine.

This works for v1 and v2 candy machines.

However, for v2 only the value for all_nfts is provided. To determine which are minted and unminted follow this example.

You do not need to specify v1 or v2 for this endpoint as it will automatically determine it from the candy machine ID.

See example for how to get the list of NFT hashes here.

Cost: 2 Credits (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
path Parameters
network
required
string
Enum: "devnet" "mainnet-beta"
Example: mainnet-beta

The network ID

candy_machine_id
required
string
Example: FmkrvXRenCGtwBHw3VtBcExp8eTdnau97upaewF4GUEX

The ID of the candy machine

Responses

Response samples

Content type
application/json
{}

Get a CM's metadata

See examples (Python, JavaScript).

Use this endpoint to get metadata about a Metaplex candy machine. This includes the goLiveDate, itemsAvailable, and itemsRedeemed. To see what is included, expand the green successful response below.

NOTE: Supply exactly one of candy_machine_id, config_address, or uuid. If you provide more than one, you will receive a 400 error.

Cost: 2 Credits (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
Request Body schema: application/json
candy_machine_id
string

The ID of the candy machine. This is the same as config_address for v2 candy machines (supply either).

config_address
string

The configuration address of the candy machine. This is the same as candy_machine_id for v2 candy machines (supply either).

uuid
string

The uuid of the candy machine. This is an alphanumeric string of length six (e.g., HpVdfP), which corresponds to the first six characters of the config_address.

network
string
Default: "devnet"
Enum: "devnet" "mainnet-beta"
candy_machine_contract_version
string
Default: "v1"
Enum: "v1" "v2"

The candy machine contract of the candy machine for which you are retrieving the metadata. If you are providing v1 candy machine ID, set this to v1. If you are providing v2 candy machine ID, set this to v2. If you don't know which version your candy machine is, check out this endpoint.

Responses

Request samples

Content type
application/json
{
  • "candy_machine_id": "FmkrvXRenCGtwBHw3VtBcExp8eTdnau97upaewF4GUEX",
  • "network": "mainnet-beta",
  • "candy_machine_contract_version": "v1"
}

Response samples

Content type
application/json
{
  • "authority": "5hybnoWHp7ruUizgKoxSviJrGfgBLLxzybZosQoHhK6C",
  • "bump": 255,
  • "creators": [
    ],
  • "candy_machine_id": "8BG7YY2tHagJz6xdYmXwHUNxaUKSzQyafr4Nsa2PmyeT",
  • "config_address": "HpVdfPyqfTzVLprw9UdVH94QJeTB3HEdD1bFwxR46my6",
  • "go_live_date": 4481031600,
  • "is_mutable": true,
  • "items_available": 3125,
  • "items_redeemed": 125,
  • "max_number_of_lines": 3125,
  • "max_supply": 0,
  • "price": 250000000,
  • "retain_authority": true,
  • "seller_fee_basis_points": 500,
  • "symbol": "GP",
  • "token_mint": null,
  • "uuid": "HpVdfP",
  • "wallet": "5hybnoWHp7ruUizgKoxSviJrGfgBLLxzybZosQoHhK6C"
}

Solana Transaction

Work with Solana transactions.

Get the details of a transaction made on Solana

See examples (Python, JavaScript).

Get the details of a transaction made on Solana.

Cost: 0.25 Credit (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
path Parameters
network
required
string
Example: mainnet-beta

The network ID (devnet, mainnet-beta)

tx_signature
required
string
Example: 5wHu1qwD7q5ifaN5nwdcDqNFo53GJqa7nLp2BeeEpcHCusb4GzARz4GjgzsEHMkBMgCJMGa6GSQ1VG96Exv8kt2W

The transaction signature of the transaction

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "jsonrpc": "2.0",
  • "result": {
    }
}

Solana Account

Interact with Solana accounts.

Get the details of an account on Solana

See examples (Python, JavaScript).

Get the details of an account on Solana. Learn more about accounts here.

Cost: 0.25 Credit (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
path Parameters
network
required
string
Example: mainnet-beta

The network ID (devnet, mainnet-beta)

public_key
required
string
Example: EEr5yQpNXf7Bru6Rt5podx56HGW9CEehXqgRGh2wa71w

The public key of the account

Responses

Response samples

Content type
application/json
{
  • "context": {
    },
  • "value": {
    }
}

Get if account is NFT

See examples (Python, JavaScript).

Determine whether or not a public key is an NFT mint address

Cost: 0.5 Credit (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
path Parameters
network
required
string
Example: mainnet-beta

The network ID (devnet, mainnet-beta)

public_key
required
string
Example: EEr5yQpNXf7Bru6Rt5podx56HGW9CEehXqgRGh2wa71w

The public key of the account

Responses

Response samples

Content type
application/json
{
  • "is_nft": true
}

Get if account is candy machine

See examples (Python, JavaScript).

Determine whether or not a public key address corresponds to a candy machine ID or candy machine configuration.

Cost: 1 Credit (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
path Parameters
network
required
string
Example: mainnet-beta

The network ID (devnet, mainnet-beta)

public_key
required
string
Example: EEr5yQpNXf7Bru6Rt5podx56HGW9CEehXqgRGh2wa71w

The public key of the account

Responses

Response samples

Content type
application/json
{
  • "is_candy_machine": true,
  • "candy_machine_contract_version": "v1"
}

Solana SPL Token

Get SPL token metadata

See examples (Python, JavaScript).

Retrieves basic information about an SPL token given its mint_address.

You can see the mint addresses of popular SPL tokens here.

Some example mint addresses of SPL tokens:

  • USDC: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
  • Mango: MangoCzJ36AjZyKwVj3VnYU4GTonjfVEnJmvvWaxLac
  • Serum: SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt
  • Raydium: 4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R
  • wSOL: So11111111111111111111111111111111111111112
  • ATLAS: ATLASXmbPQxBUYbxPsV97usA3fPQYEqzQBUHgiFCUsXx

Cost: 1 Credit (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
path Parameters
public_key
required
string
Example: MangoCzJ36AjZyKwVj3VnYU4GTonjfVEnJmvvWaxLac

The public key of the token

network
required
string
Example: mainnet-beta

The network ID (devnet, mainnet-beta)

Responses

Response samples

Content type
application/json
{
  • "decimals": 6,
  • "freeze_authority": "3sNBr7kMccME5D55xNgsmYpZnzPgP2g12CixAajXypn6",
  • "is_initialized": true,
  • "mint_authority": "2wmVCSfPxGPjrnMMn7rchp4uaeoTqN39mXFC2zhPdri9",
  • "supply": "4785000018865782"
}

QN NFT Integration

This section documents our Quicknode add-on RPC methods for Solana NFTs. We have not yet published this, but will include a URL to Quicknode's website here once published. These methods do not yet support cNFT/pNFTs.

Get the decoded NFT transaction history

Get the full history of an NFT, all the way up until mint.

The endpoint returns a list of events, from mint until present moment, that correspond to transactions that interacted with the NFT.

Each event is a dictionary containing basic information about the event (e.g., account_blockchain_identifier, account_type, block_time, chain, succeeded), the event itself, the previous state of the NFT (pre_state), and the resulting state of the NFT (post_state).

pNFTs and cNFTs are not yet supported. To request support, reach out.

To see more, expand the "200 Successful Response" box below.

Request Body schema: application/json
jsonrpc
string
method
string
Array of items = 1 items

An array where the first and only item must be the mint address of the NFT

id
integer

Responses

Request samples

Content type
application/json
{
  • "jsonrpc": "2.0",
  • "method": "bca_NFTHistory",
  • "params": [
    ],
  • "id": 1
}

Response samples

Content type
application/json
[
  • {
    },
  • {
    }
]

Get the listing price of an NFT

Retrieves the listing price, if any, of the NFT. If the NFT is not listed for sale, the response will be null.

pNFTs and cNFTs are not yet supported. To request support, reach out.

To see more, expand the "200 Successful Response" box below.

Request Body schema: application/json
jsonrpc
string
method
string
Array of items = 1 items

An array where the first and only item must be the mint address of the NFT

id
integer

Responses

Request samples

Content type
application/json
{
  • "jsonrpc": "2.0",
  • "method": "bca_NFTListingPrice",
  • "params": [
    ],
  • "id": 1
}

Response samples

Content type
application/json
{
  • "priceLamports": 1000000000
}

Get the literal owner of an NFT

Retrieves the literal owner of an NFT. This refers to the address that is designated as having a balance of 1 for the NFT's mint address, but it is not necessarily the wallet with authority over the NFT. For example, this address could be a program derived address (PDA), which is a program account that is derived from a seed and is owned by the program. To retrieve the true owner, use the true owner endpoint.

pNFTs and cNFTs are not yet supported. To request support, reach out.

To see more, expand the "200 Successful Response" box below.

Request Body schema: application/json
jsonrpc
string
method
string
Array of items = 1 items

An array where the first and only item must be the mint address of the NFT

id
integer

Responses

Request samples

Content type
application/json
{
  • "jsonrpc": "2.0",
  • "method": "bca_NFTLiteralOwner",
  • "params": [
    ],
  • "id": 1
}

Response samples

Content type
application/json
{
  • "literalOwner": "7YMM3S3HjCy1128r8e3c2BBpWANK7rzN3TR3jNTKQPpA"
}

Get the metadata of an NFT

Retrieve the metadata of an NFT.

pNFTs and cNFTs are not yet supported. To request support, reach out.

To see more, expand the "200 Successful Response" box below.

Request Body schema: application/json
jsonrpc
string
method
string
Array of items = 1 items

An array where the first and only item must be the mint address of the NFT

id
integer

Responses

Request samples

Content type
application/json
{
  • "jsonrpc": "2.0",
  • "method": "bca_NFTMetadata",
  • "params": [
    ],
  • "id": 1
}

Response samples

Content type
application/json
{
  • "confirmed": true,
  • "data": {},
  • "isMutable": true,
  • "mint": "EEr5yQpNXf7Bru6Rt5podx56HGW9CEehXqgRGh2wa71w",
  • "primarySaleHappened": true,
  • "updateAuthority": "5FzddvKbxE54KEg2WoeNiGWJYAUBabKVFg2MVCSacWiJ",
  • "metadataAccount": "HTu4wUU4WxL48AdQM3nQuHeY8iAqgV9aKwbes4P6Y1c4",
  • "editionNonce": 255,
  • "tokenStandard": 0,
  • "collection": {
    },
  • "uses": 0
}

Get the state of an NFT

Retrieves the current state of the NFT.

pNFTs and cNFTs are not yet supported. To request support, reach out.

To see more, expand the "200 Successful Response" box below.

Request Body schema: application/json
jsonrpc
string
method
string
Array of items = 1 items

An array where the first and only item must be the mint address of the NFT

id
integer

Responses

Request samples

Content type
application/json
{
  • "jsonrpc": "2.0",
  • "method": "bca_NFTState",
  • "params": [
    ],
  • "id": 1
}

Response samples

Content type
application/json
{
  • "owner": "4XxUMB5MSwuV14p9EUDDA2Jg5CPZgy4dNB6PEPxWGtWs",
  • "contract": null,
  • "price": null,
  • "state": "holding"
}

Get the true owner of an NFT

This endpoint retrieves the true owner of an NFT. The true owner is the owner of the NFT's mint account, who has authorization to transfer it and make other transactions with it.

This is useful for NFTs that have been transferred to a program account, such as a marketplace. The literal owner in this case, would be the marketplace or PDA, but this address does not represent the wallet that has authority over the NFT.

pNFTs and cNFTs are not yet supported. To request support, reach out.

To see more, expand the "200 Successful Response" box below.

Request Body schema: application/json
jsonrpc
string
method
string
Array of items = 1 items

An array where the first and only item must be the mint address of the NFT

id
integer

Responses

Request samples

Content type
application/json
{
  • "jsonrpc": "2.0",
  • "method": "bca_NFTTrueOwner",
  • "params": [
    ],
  • "id": 1
}

Response samples

Content type
application/json
{
  • "trueOwner": "7YMM3S3HjCy1128r8e3c2BBpWANK7rzN3TR3jNTKQPpA",
  • "ownedSince": 1705946023,
  • "ownershipTransactionId": "2U1MLuqwaMVH4Bfa7N1g1DmT38ysmZBkPvdeK2JbbEE6Ae4nYY8DBgN2jEp69s7FTpigVkkW1jumRYHHpxXTfcGX"
}

Get the wallet's NFTs

Retrieves the NFTs owned by the wallet.

This retrieves NFTs based on the literal owner, not the true owner (see the difference above for the bca_NFTLiteralOwner and bca_NFTTrueOwner methods). For example, if a user has an NFT listed on a custodial marketplace, the literal owner would be the custodial marketplace, while the true owner would be the user. This endpoint would therefore not include that NFT.

This endpoint also does not consider cNFTs or pNFTs.

For support for true owner, cNFTs, and pNFTs, please reach out.

Request Body schema: application/json
jsonrpc
string
method
string
Array of items = 1 items

An array where the first and only item is a wallet address

id
integer

Responses

Request samples

Content type
application/json
{
  • "jsonrpc": "2.0",
  • "method": "bca_WalletNFTs",
  • "params": [
    ],
  • "id": 1
}

Response samples

Content type
application/json
{
  • "mintAddresses": [
    ]
}

Subscribe to account

Subscribe to accounts to receive updates on transactions interacting with them. These updates are pushed to a subscription queue, from which you can read and delete items. Only accounts that are NFTs are supported.

pNFTs and cNFTs are not yet supported. To request support, reach out.

Request Body schema: application/json
jsonrpc
string
method
string
Array of items = 1 items

An array where the first and only item must be another array of the accounts you want to subscribe to

id
integer

Responses

Request samples

Content type
application/json
{
  • "jsonrpc": "2.0",
  • "method": "bca_Track_AccountSubscribe",
  • "params": [
    ],
  • "id": 1
}

Delete subscription(s)

Unsubscribe from the specified accounts. You will no longer receive events for such accounts after calling this method.

Request Body schema: application/json
jsonrpc
string
method
string
Array of items = 1 items

An array where the first and only item must be another array of the accounts you want to unsubscribe from

id
integer

Responses

Request samples

Content type
application/json
{
  • "jsonrpc": "2.0",
  • "method": "bca_Track_AccountSubscribe",
  • "params": [
    ],
  • "id": 1
}

List subscriptions

List the accounts to which you are subscribed.

Request Body schema: application/json
jsonrpc
string
method
string
params
Array of arrays = 0 items

No parameters are required for this method.

id
integer

Responses

Request samples

Content type
application/json
{
  • "jsonrpc": "2.0",
  • "method": "bca_Track_ListSubscriptions",
  • "params": [ ],
  • "id": 1
}

Response samples

Content type
application/json
{
  • "subscriptions": [
    ]
}

Pull queue

Pull all items in the queue. You receive events in the queue when a new transaction involves an account to which you're subscribed.

Events expire after one day and are automatically removed from the queue.

You can specify whether to return the entire queue or approximately 10-50 elements from the queue.

Request Body schema: application/json
jsonrpc
string
method
string
Array of items = 1 items

An array where the first and only item must be a boolean indicating whether to pull the entire queue or partially pull it.

id
integer

Responses

Request samples

Content type
application/json
{
  • "jsonrpc": "2.0",
  • "method": "bca_Track_PullQueue",
  • "params": [
    ],
  • "id": 1
}

Response samples

Content type
application/json
[
  • {
    },
  • {
    }
]

Delete from queue

Remove the specified events from the queue.

Request Body schema: application/json
jsonrpc
string
method
string
Array of items = 1 items

An array where the first and only item must be another array of the event IDs representing the events you want to delete from the queue

id
integer

Responses

Request samples

Content type
application/json
{
  • "jsonrpc": "2.0",
  • "method": "bca_Track_DeleteFromQueue",
  • "params": [
    ],
  • "id": 1
}

Purge queue

List the accounts to which you are subscribed.

Request Body schema: application/json
jsonrpc
string
method
string
params
Array of arrays = 0 items

No parameters are required for this method.

id
integer

Responses

Request samples

Content type
application/json
{
  • "jsonrpc": "2.0",
  • "method": "bca_Track_PurgeQueue",
  • "params": [ ],
  • "id": 1
}

Wallet

Functions for using wallets, supported across several chains.

Generate seed phrase

See examples (Python, JavaScript).

Use this endpoint to securely and randomly generate a seed phrase for a wallet.

Cost: 0 Credit (Free) (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
path Parameters
blockchain
required
string
Enum: "avalanche" "binance_smart_chain" "ethereum" "near" "solana"

The blockchain you want to use

Request Body schema: application/json
n_words
number

The number of words to generate. Must be one of: 12, 15, 18, 21, or 24. Avalanche's default is 24. All other chains we support default to 12.

Responses

Request samples

Content type
application/json
{
  • "n_words": 12
}

Response samples

Content type
application/json
{
  • "secret_recovery_phrase": "fire owner display success half rescue pledge oval foam gossip window once"
}

Generate private key

See examples (Python, JavaScript).

Use this endpoint to securely and randomly generate a private key for a wallet.

Cost: 0 Credit (Free) (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
path Parameters
blockchain
required
string
Enum: "avalanche" "binance_smart_chain" "ethereum" "near" "solana"

The blockchain you want to use

Responses

Response samples

Content type
application/json
Example
{
  • "hex_private_key": "0x200b9e5baa38b0dc7551645be11b394e9bf2b04532e4af8824bed2b3de2e0dc0"
}

Derive private key

See examples (Python, JavaScript).

Use this endpoint to securely derive a private key for a wallet.

For example, if you have a seed phrase and want to derive the corresponding private key, use this endpoint.

Cost: 0 Credit (Free) (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
path Parameters
blockchain
required
string
Enum: "avalanche" "binance_smart_chain" "ethereum" "near" "solana"

The blockchain you want to use

Request Body schema: application/json
required
GeneralSecretRecoveryPhrase (object) or HexPrivateKey (object) or GeneralPrivateKey (object) or GeneralB58PrivateKey (object) (GeneralWallet)

The wallet authentication information used to sign and submit the transaction. Click the > arrow next to "wallet" on the left to see more details. See our Security section here.

Responses

Request samples

Content type
application/json
{
  • "wallet": {
    }
}

Response samples

Content type
application/json
Example
{
  • "hex_private_key": "0x200b9e5baa38b0dc7551645be11b394e9bf2b04532e4af8824bed2b3de2e0dc0"
}

Derive wallet identifier

See examples (Python, JavaScript).

Derive the identifier for a wallet.

Cost: 0 Credit (Free) (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
path Parameters
blockchain
required
string
Enum: "avalanche" "binance_smart_chain" "ethereum" "near" "solana"

The blockchain you want to use

Request Body schema: application/json
required
GeneralSecretRecoveryPhrase (object) or HexPrivateKey (object) or GeneralPrivateKey (object) or GeneralB58PrivateKey (object) (GeneralWallet)

The wallet authentication information used to sign and submit the transaction. Click the > arrow next to "wallet" on the left to see more details. See our Security section here.

Responses

Request samples

Content type
application/json
{
  • "wallet": {
    }
}

Response samples

Content type
application/json
Example
{
  • "hex_public_address": "0xB2b2d42C3adA171633E36b427F062f85A642F453",
  • "hex_public_key": "0x0f7182c2c2f79aca13847bed68c67662c021df868ee5d20a78df6095e4cd162610c63ec9050989a3755a18255cdd707e50678bfd762db3f0feea647610e974c4"
}

Get wallet's balance of X

See examples (Python, JavaScript).

See the balance of a wallet in the native blockchain currency (e.g., ETH, SOL) or any token (e.g., ERC-20, NFTs, SPL, etc.).

To get the balance of a specific token, supply the token_blockchain_identifier of the token.

You can also use this endpoint to see whether or not a person owns an NFT. Just supply the token_blockchain_identifier of the NFT. A balance of "1" means the person owns the NFT, and a balance of "0" means the person does not own the NFT.

Cost: 0.25 Credit (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
path Parameters
blockchain
required
string
Enum: "ethereum" "solana"

The blockchain you want to use

Request Body schema: application/json
blockchain_identifier
string

The address / public key of the wallet you're querying.

Examples:

  • Solana: GKNcUmNacSJo4S2Kq3DuYRYRGw3sNUfJ4tyqd198t6vQ
  • Ethereum: 0xa84b9478d203cd25dF722e83C87590f8028f6aAA
unit
string

The unit parameter is only applicable if you are trying to retrieve the balance of the native token (e.g., SOL, ETH, BNB).

Applicable units:

  • Solana: lamport, sol (1 SOL = 1e9 Lamports)
  • Ethereum: wei, gwei, eth
network
string

The network of the blockchain you selected

  • Solana: devnet, mainnet-beta
  • Ethereum: ropsten, mainnet

Defaults when not provided (not applicable to path parameters):

  • Solana: devnet
  • Ethereum: ropsten
token_blockchain_identifier
string
Default: null

The token_blockchain_identifier identifies the token you wish to transfer.

  • If you're transferring a native blockchain currency (e.g., SOL, ETH, BNB), then simply do not supply this value.
  • If you're transfering an NFT, then supply the token address of the NFT. On Solana, this is the mint_address or mint (the address of the mint).
  • If you're transfering a token, supply the token address. For Solana, you can find on this on the Solana Explorer (e.g., see SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt for Serum Token) for the token_address.

Examples:

  • Ethereum: 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
  • Solana: CK1LHEANTu7RFqN3XMzo2AnZhyus2W1vue1njrxLEM1d

Responses

Request samples

Content type
application/json
{
  • "blockchain_identifier": "GKNcUmNacSJo4S2Kq3DuYRYRGw3sNUfJ4tyqd198t6vQ",
  • "network": "mainnet-beta",
  • "token_blockchain_identifier": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
}

Response samples

Content type
application/json
{
  • "balance": 3.322105,
  • "decimals": 6,
  • "integer_balance": 3322105,
  • "network": "mainnet-beta"
}

Get an airdrop

See examples (Python, JavaScript).

  • Ethereum: Receive an airdrop of 0.001 ETH on Ropsten (not real ETH).
  • Solana: Use this endpoint to get an airdrop of SOL on the devnet (not real SOL). Amount of 0.015, which is the minimum amount of SOL you need to mint an NFT and then transfer it to another wallet.

Cost: 0 Credit (Free) (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
path Parameters
blockchain
required
string
Enum: "ethereum" "solana"

The blockchain you want to use

Request Body schema: application/json
recipient_blockchain_identifier
required
string

The address/public key to which to send the airdrop.

Examples:

  • Solana: GKNcUmNacSJo4S2Kq3DuYRYRGw3sNUfJ4tyqd198t6vQ
  • Ethereum: 0xa84b9478d203cd25dF722e83C87590f8028f6aAA

Responses

Request samples

Content type
application/json
{
  • "recipient_blockchain_identifier": "GKNcUmNacSJo4S2Kq3DuYRYRGw3sNUfJ4tyqd198t6vQ"
}

Response samples

Content type
application/json
Example
{
  • "transaction_blockchain_identifier": "38jivwh89t38hkN4dS2M585NZFRHbsGfmnuFb2MVDwrfTXdvYBamQPRo7QQNGdx8mfYahfkUV6s822nH3K7ej5nj",
  • "transaction_confirmed": true
}

Transfer crypto, a token, or an NFT to another wallet

See transfer ETH/SOL/crypto example (Python, JavaScript).

See transfer NFT/token example (Python, JavaScript).

This is a powerful function. It might be slightly confusing because there are several optional parameters, so take some time to review it.

This function can send

  • The native currency of the selected blockchain (e.g., SOL, ETH, BNB, etc.)
  • A token (e.g., an SPL token, ERC-20 token, etc.)
  • An NFT

You can sign and submit the transaction for confirmation; and you can select to simply return the compiled transaction so that you can submit it to the user for signing (e.g., via Phantom or Metamask; no private keys required in this case).

If you're transferring an NFT or a token, supply its respective token_blockchain_identifier.

SENDER: Note that the wallet information is used to authorize the sending of the tokens and identifies the source of the tokens. If return_compiled_transaction = false, we sign and submit the transaction (wallet is required in this case; do not provide a value for sender_blockchain_identifier). If return_compiled_transaction = true, we compile the transaction (sender_blockchain_identifier is required in this case; do not provide wallet).

RECIPIENT: recipient_blockchain_identifier identifies the receiver. This is entirely separate from the information used for the SENDER above. So, in this API call, there are two wallets involved, but only one (namely, the SENDER) is needed to authorize the transaction (if you want us to sign and submitting it).

FEE_PAYER (Solana only): The fee payer of the transaction defaults to wallet (or sender_blockchain_identifier). To set a different fee payer, provide a value for fee_payer_wallet.

Cost: 2 Credit (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
path Parameters
blockchain
required
string
Enum: "ethereum" "solana"

The blockchain you want to use

Request Body schema: application/json
recipient_blockchain_identifier
required
string

The blockchain identifier of the recipient to whom you want to send a token or NFT.

On Ethereum, this is the hex public address of the recipient (e.g., 0x150865ca659204a9a0cd0da00296c6b5db441172)

On Solana, this is the public key of the recipient (e.g., EW3nXn7X4NTWFKWaJgxKrFNoTSkop1cBUVHA21zrfF6u).

GeneralSecretRecoveryPhrase (object) or HexPrivateKey (object) or GeneralPrivateKey (object) or GeneralB58PrivateKey (object) (GeneralWallet)

The wallet authentication information used to sign and submit the transaction. Click the > arrow next to "wallet" on the left to see more details. See our Security section here.

token_blockchain_identifier
string

The token_blockchain_identifier identifies the token you wish to transfer.

  • If you're transferring a native blockchain currency (e.g., SOL, ETH, BNB), then simply do not supply this value.
  • If you're transfering an NFT, then supply the token address of the NFT. On Solana, this is the mint_address or mint (the address of the mint).
  • If you're transfering a token, supply the token address. For Solana, you can find on this on the Solana Explorer (e.g., see SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt for Serum Token) for the token_address.

Examples:

  • Ethereum: 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
  • Solana: CK1LHEANTu7RFqN3XMzo2AnZhyus2W1vue1njrxLEM1d
network
string

The network of the blockchain you selected

  • Solana: devnet, mainnet-beta
  • Ethereum: ropsten, mainnet

Defaults when not provided (not applicable to path parameters):

  • Solana: devnet
  • Ethereum: ropsten
amount
string
Default: "1"

This value must be a string. What you provide here depends on if you are sending an NFT, an SPL token, or SOL.

  • Native Currency (e.g., SOL, ETH, BNB): Supply this value denominated in the native currency (e.g., in SOL (but not in Lamports), or in ETH (but not in Wei)) in a string format. This does not need to be an integer. For example, if you want to send 0.0005 SOL, then amount = "0.0005". If you want to send 0.0005 ETH, then amount = "0.0005".
  • NFT: This must be 1.
  • Token: This must be an integer in string format. To convert from what you see on a wallet UI (e.g., 1 ATLAS, 1 USDC) to an integer value, you have to multiply that value by 10^x where x is the number of decimals. For example, to transfer 0.2 USDC, if USDC uses 6 decimals, then the amount is 0.2 * 10^6 = 200000.
    • For Solana, you can get the number of decimals for a given SPL token here. We are working on analogues of this endpoint for other blockchains.
return_compiled_transaction
boolean
Default: false
  • If false, we sign and submit the transaction (wallet is required in this case; do not provide a value for sender_blockchain_identifier).
  • If true, we compile the transaction (either wallet or sender_blockchain_identifier is required in this case; do not provide both).
sender_blockchain_identifier
string
Default: null

To understand the purpose of sender_blockchain_identifier first note the following: There are two ways you can complete a transfer transaction:

  • (1) we complete it for you with your wallet information or
  • (2) we return the raw instruction data that you can sign and submit yourself (no private keys required).

When you provide your wallet authentication, we are able to determine your wallet's blockchain identifier (public key or address) which is the sender public key of the transaction.

When you are not providing your wallet as authentication, we still need the sender_blockchain_identifier to be able to return the compiled transaction. Thus, you provide sender_blockchain_identifier if and only if you are not providing wallet authentication information and you are returning a compiled transaction.

You will receive an error if you provide both wallet and sender_blockchain_identifier. You will receive an error if you provide neither wallet nor sender_blockchain_identifier.

GeneralSecretRecoveryPhrase (object) or HexPrivateKey (object) or GeneralPrivateKey (object) or GeneralB58PrivateKey (object) (GeneralFeePayerWallet)

This feature is only supported for solana.

If you do NOT provide a wallet here, the fee payer of the transaction will be the wallet you provide or the sender_blockchain_identifier.

If you do provide a wallet, then the fee_payer_wallet will pay the fees of the transaction and any costs associated with creating a new associated token account (only if necessary; approx. 0.002 SOL when necessary). A new account is necessary if you are sending an NFT or SPL token to a user that has not received the same NFT or one of the SPL tokens before (thus, a new associated token account is needed).

Responses

Request samples

Content type
application/json
{
  • "wallet": {
    },
  • "token_blockchain_identifier": "CK1LHEANTu7RFqN3XMzo2AnZhyus2W1vue1njrxLEM1d"
}

Response samples

Content type
application/json
Example
{
  • "transaction_blockchain_identifier": "38jivwh89t38hkN4dS2M585NZFRHbsGfmnuFb2MVDwrfTXdvYBamQPRo7QQNGdx8mfYahfkUV6s822nH3K7ej5nj",
  • "transaction_confirmed": true
}

Transaction

Functions for interacting with transactions, supported across several chains.

Get the details of a transaction made on a blockchain

See examples (Python, JavaScript).

Get the details of a transaction made on the specified blockchain.

Cost: 0.25 Credit (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
path Parameters
blockchain
required
string
Enum: "ethereum" "solana"

The blockchain you want to use

network
required
string
Example: ropsten

The network of the blockchain you selected

  • Solana: devnet, mainnet-beta
  • Ethereum: ropsten, mainnet

Defaults when not provided (not applicable to path parameters):

  • Solana: devnet
  • Ethereum: ropsten
transaction_blockchain_identifier
required
string
Example: 0x5f36b787daa57bfe8568d69e24eae54ccb00720c6edfc826bd4a7b19c525eef4

The transaction signature of the transaction.

Examples:

  • Solana: 5wHu1qwD7q5ifaN5nwdcDqNFo53GJqa7nLp2BeeEpcHCusb4GzARz4GjgzsEHMkBMgCJMGa6GSQ1VG96Exv8kt2W
  • Ethereum: 0x5f36b787daa57bfe8568d69e24eae54ccb00720c6edfc826bd4a7b19c525eef4

Responses

Response samples

Content type
application/json
Example
{
  • "access_list": [ ],
  • "block_hash": "0x8d8880edf38aaf197c12418154e3ca8e0f41e68810f6c17e58b35e4cf107c1e7",
  • "block_number": "0xe23e90",
  • "chain_id": "0x1",
  • "from": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
  • "gas": "0x18a78",
  • "gas_price": "0x5eabd7e14",
  • "hash": "0xc28efff0334292eaac09fa611eba7e721970eb7a7b7dc3dd411a521869ec9810",
  • "input": "0x6a761202000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000000000000000000000000000000000000000044a9059cbb0000000000000000000000007364c516a0e6e784733e5700617ec99b174ffc710000000000000000000000000000000000000000000000000000000000989680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082cea0ebf9aa3df7daf8509150ff0366878a6110d1107858eec076d210d5ba45197845be2ce0b89444307bc85e16609bf3ef4adb1ea941ac4070f4be8b3c1018ce1c000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000",
  • "max_fee_per_gas": "0x746a528800",
  • "max_priority_fee_per_gas": "0x77359400",
  • "nonce": "0x31f",
  • "r": "0xc22d414961cfadb11943c16326b5e8bd29620ef5e764cfa8ef6f4a31509f9751",
  • "s": "0x190e71ef0bcb26e01f982ded821aeec4ff5548a4edd4648a7336fb5e2ea06dec",
  • "to": "0xa06c2b67e7435ce25a5969e49983ec3304d8e787",
  • "transaction_index": "0x3b",
  • "type": "0x2",
  • "v": "0x0",
  • "value": "0x0"
}

Name Service

Functions for interacting with name services.

Get the identifier

See examples (Python, JavaScript) [Coming Soon].

Get the blockchain identifier from a name.

e.g., Input vitalik.eth and output 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045

Cost: 0.25 Credit (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
path Parameters
blockchain
required
string
Enum: "ethereum" "solana"

The blockchain you want to use

network
required
string
Example: ropsten

The network of the blockchain you selected

  • Solana: devnet, mainnet-beta
  • Ethereum: ropsten, mainnet

Defaults when not provided (not applicable to path parameters):

  • Solana: devnet
  • Ethereum: ropsten
Request Body schema: application/json
name
string

Responses

Request samples

Content type
application/json
{
  • "name": "vitalik.eth"
}

Response samples

Content type
application/json
{
  • "blockchain_identifier": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
}

Get the name

See examples (Python, JavaScript) [Coming Soon].

Get the name from a blockchain identifier.

e.g., Input 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 and output vitalik.eth

Cost: 0.25 Credit (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
path Parameters
blockchain
required
string
Enum: "ethereum" "solana"

The blockchain you want to use

network
required
string
Example: ropsten

The network of the blockchain you selected

  • Solana: devnet, mainnet-beta
  • Ethereum: ropsten, mainnet

Defaults when not provided (not applicable to path parameters):

  • Solana: devnet
  • Ethereum: ropsten
Request Body schema: application/json
blockchain_identifier
string

Responses

Request samples

Content type
application/json
{
  • "blockchain_identifier": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
}

Response samples

Content type
application/json
{
  • "name": "vitalik.eth"
}

Blockchain Events

Track realtime blockchain events.

Subscribe to account

Subscribe to accounts to receive updates on transactions interacting with them. These updates are pushed to a subscription queue, from which you can read and delete items.

This currently only works for tracking NFTs. Events that are tracked include purchases, sales, call/put options, raffling, etc. etc. You can see the full list in the Pull Queue Endpoint > 200 Response Expanded > Event.

See Pricing on the Dashboard

Authorizations:
(APIKeyIDAPISecretKey)
Request Body schema: application/json
Array of objects (Subscription)

List of subscriptions

Responses

Request samples

Content type
application/json
{
  • "subscriptions": [
    ]
}

List subscriptions

List the accounts to which you are subscribed.

See Pricing on the Dashboard

Authorizations:
(APIKeyIDAPISecretKey)

Responses

Response samples

Content type
application/json
{
  • "subscriptions": [
    ]
}

Delete subscription(s)

Unsubscribe from the specified accounts. You will no longer receive events for such accounts after calling this method.

See Pricing on the Dashboard

Authorizations:
(APIKeyIDAPISecretKey)
Request Body schema: application/json
Array of objects (Subscription)

List of subscriptions

Responses

Request samples

Content type
application/json
{
  • "subscriptions": [
    ]
}

Pull queue

Pull all items in the queue. You receive events in the queue when a new transaction involves an account to which you're subscribed.

Events expire after one day and are automatically removed from the queue.

See Pricing on the Dashboard

Authorizations:
(APIKeyIDAPISecretKey)
query Parameters
return_entire_queue
required
boolean

Whether to return the entire queue or approximately 10-50 elements from the queue

network
any

The network of the chain you want to run on (e.g., devnet or mainnet-beta for solana)

chain
any

The chain (e.g., solana)

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    }
]

Delete from queue

Remove the specified events from the queue.

See Pricing on the Dashboard

Authorizations:
(APIKeyIDAPISecretKey)
Request Body schema: application/json
events
Array of strings

A list of event_ids to delete. When pulling events from the queue, each event will have a unique identifier labeled event_id.

Responses

Request samples

Content type
application/json
{
  • "events": [
    ]
}

Purge queue

List the accounts to which you are subscribed.

See Pricing on the Dashboard

Authorizations:
(APIKeyIDAPISecretKey)

Responses

Token

Functions for interacting with tokens.

Get a token's metadata

See examples (Python, JavaScript) [Coming Soon].

Get the metadata of a token.

Cost: 0.25 Credit (See Pricing)

Authorizations:
(APIKeyIDAPISecretKey)
path Parameters
blockchain
required
string
Enum: "ethereum" "solana"

The blockchain you want to use

network
required
string
Example: ropsten

The network of the blockchain you selected

  • Solana: devnet, mainnet-beta
  • Ethereum: ropsten, mainnet

Defaults when not provided (not applicable to path parameters):

  • Solana: devnet
  • Ethereum: ropsten
token_blockchain_identifier
required
string
Enum: "ethereum" "solana"

The identifier of the token (e.g., mint_address on Solana or token_address on Ethereum)

Responses

Response samples

Content type
application/json
{
  • "symbol": "USDC",
  • "name": "USD Coin",
  • "decimals": 9,
  • "minter_blockchain_identifier": null,
  • "total_supply": 1273041820
}

List all tokens

Authorizations:
(APIKeyIDAPISecretKey)
path Parameters
blockchain
required
string
Value: "solana"

The blockchain you want to use

network
required
string
Example: ropsten

The network of the blockchain you selected

  • Solana: devnet, mainnet-beta
  • Ethereum: ropsten, mainnet

Defaults when not provided (not applicable to path parameters):

  • Solana: devnet
  • Ethereum: ropsten

Responses

Response samples

Content type
application/json
[
  • {
    }
]