Tatum
Search…
Use NFT Express to Mint NFTs on Solana
NFT Express uses the same simple API endpoint that you would use to mint NFTs for your own smart contracts with Tatum.
However, with NFT Express you no longer need to enter the following:
  • private key
  • smart contract address
  • or token ID
This guide explains how to use NFT Express to mint NFTs specifically on Solana. To learn how to use NFT express on other blockchains:

Prerequisites

Tatum plan

When used on the mainnet, NFT Express works only with paid Tatum plans. Tatum covers the minting fee for you and then deducts the corresponding number of credits from your monthly credit allowance.
To use NFT Express, you need an API key with a paid Tatum plan. Visit the Tatum Dashboard to sign up for one.
For details about Tatum’s plans pricing and allowances, visit Pricing & Plans.

Tatum JavaScript SDK (optional)

You must enter the API key in the environment variables in your IDE or into the header of the direct API request.
To use JavaScript, download and install the Tatum JavaScript SDK.

Mint an NFT with NFT Express

Minting NFTs on Solana is a two-step process:
  • First you mint an NFT.
  • Then you transfer the NFT.
This is due to the Solana’s use of the Metaplex Protocol. When you mint an NFT on Solana with NFT Express, the pre-built smart contract based on the Metaplex Protocol is used.

Mint an NFT

Using MintNftExpressSolana schema, enter the API key in the environment variables in your IDE or into the header of the direct API request.
Request
JavaScript
cURL
const resp = await fetch(
`https://api-eu1.tatum.io/v3/nft/mint`,
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-key': 'YOUR_API_KEY_HERE'
},
body: JSON.stringify({
chain: 'SOL',
to: 'FykfMwA9WNShzPJbbb9DNXsfgDgS3XZzWiFgrVXfWoPJ',
metadata: {
name: 'My NFT.',
symbol: 'NFT_SYMBOL',
sellerFeeBasisPoints: 0,
uri: 'https://my_token_data.com',
creators: [
{
address: 'FykfMwA9WNShzPJbbb9DNXsfgDgS3XZzWiFgrVXfWoPJ',
verified: 1,
share: 10
}
]
}
})
}
);
curl -i -X POST \
https://api-eu1.tatum.io/v3/nft/mint \
-H 'Content-Type: application/json' \
-H 'x-api-key: YOUR_API_KEY_HERE' \
-d '{
"chain": "SOL",
"to": "FykfMwA9WNShzPJbbb9DNXsfgDgS3XZzWiFgrVXfWoPJ",
"metadata": {
"name": "My NFT.",
"symbol": "NFT_SYMBOL",
"sellerFeeBasisPoints": 0,
"uri": "https://my_token_data.com",
"creators": [
{
"address": "FykfMwA9WNShzPJbbb9DNXsfgDgS3XZzWiFgrVXfWoPJ",
"verified": 1,
"share": 10
}
]
}
}'
Request parameters:
  • chain SOL for Solana in this specific case.
  • to The recipient’s address to which the NFT will be sent.
  • metadata
    • name The name of the minted NFT token.
    • symbol The symbol of the minted NFT token.
    • sellerFeeBasisPoints Percentage points of the seller fee.
    • uri Metadata of the minted NFT token. For details, see the Ethereum site.
    • creators Royalty receivers for NFT transfers.
      • address The address of the NFT creator.
      • verified Status of the creator; verified = 1, non-verified = 0.
        âš 
        A verified creator is a private key that signs the transaction. When you use NFT Express, the only verified creator is the Tatum’s minting address. If you want to send royalties to third parties, simply enter 0.
      • share Share to be sent to the creator in percent.
Response
{
"txId": "4kiRkAWjjr5t3rBKmYQ5d2e3xjgnRRttB5GtUz2F4sz5wwC7NnV74qCZ1KN1b37qsnjkKknsJPGXdcPhzHpkiMAs",
"nftAddress": "4afZBmAneN2j6gDHH8zdrNWkCqfMC3XPH2cpFKtYMSVe",
"nftAccountAddress": "A8BSHPJcB5ZGCT6yo6pz2RYqnypTSpzTAFSBhtTQmsEE"
}
What happens on the background?
  • The private key and contract address will be by default set to Tatum’s pre-deployed smart contract and our private key on the blockchain that you specified.
  • The token ID will be generated automatically.
  • The gas fees will be deducted as credits from your monthly credit allowance from the paid Tatum plan you have selected.
You can mint as many NFTs as you want without devising the logic and setting up your own NFT solution.

Transfer the minted NFT

When you mint an NFT on Solana, a new blockchain address is created to receive the NFT under the recipient's account address (the one in the to parameter of the request body).
You may think of it as of an ‘alias’ address owned by the recipient’s address. The two addresses share the private key. You will find this new address in the nftAccountAddress parameter in the response body.
The response body also returns the address of the minted NFT itself, which is held in the nftAddress parameter.
As you have probably guessed, after the NFT is minted, you must transfer it from the ‘alias’ address to the recipient's actual address.
To do that, you use the transferNftSolana or transferNftSolanaKMS schema of the request body.
JavaScript
cURL
const resp = await fetch(
`https://api-eu1.tatum.io/v3/nft/transaction`,
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-key': 'YOUR_API_KEY_HERE'
},
body: JSON.stringify({
chain: 'SOL',
from: 'FykfMwA9WNShzPJbbb9DNXsfgDgS3XZzWiFgrVXfWoPJ',
to: 'FykfMwA9WNShzPJbbb9DNXsfgDgS3XZzWiFgrVXfWoPJ',
contractAddress: '3tzudv5KaoqmieWiBUqzWokKEtTvx1wQMapVKeH7CHaq',
fromPrivateKey: '3abc79a31093e4cfa4a724e94a44906cbbc3a32e2f75f985a28616676a5dbaf1de8d82a7e1d0561bb0e1b729c7a9b9b1708cf2803ad0ca928a332587ace391ad'
})
}
);
​
const data = await resp.json();
console.log(data);
curl -i -X POST \
https://api-eu1.tatum.io/v3/nft/transaction \
-H 'Content-Type: application/json' \
-H 'x-api-key: YOUR_API_KEY_HERE' \
-d '{
"chain": "SOL",
"from": "FykfMwA9WNShzPJbbb9DNXsfgDgS3XZzWiFgrVXfWoPJ",
"to": "FykfMwA9WNShzPJbbb9DNXsfgDgS3XZzWiFgrVXfWoPJ",
"contractAddress": "3tzudv5KaoqmieWiBUqzWokKEtTvx1wQMapVKeH7CHaq",
"fromPrivateKey": "3abc79a31093e4cfa4a724e94a44906cbbc3a32e2f75f985a28616676a5dbaf1de8d82a7e1d0561bb0e1b729c7a9b9b1708cf2803ad0ca928a332587ace391ad"
}'
In the request body:
  • Set the contractAddress parameter to the address from the nftAddress parameter in the response body of the minting call.
  • Set both from and to parameters to the recipient's address from the to parameter in the response body of the minting call.