Mint an NFT

100 credits per API call on Flow
2 credits per API call on the other blockchains

You can mint NFTs using either of the following methods:

Minting NFTs using NFT Express

NFT Express is Tatum's feature that helps you mint NFTs easier than minting natively on a blockchain.

  • You do not need to enter your private key or signature ID.
    NFT Express uses the private key provided by Tatum.
  • You do not need to hold crypto or keep addresses topped up with crypto to pay for minting transactions.
    • To use NFT Express on the mainnet, you have to have a paid pricing plan.
      Tatum covers your transaction fees for NFT minting and pays for them from its own blockchain address. Then, the fee amount paid by Tatum is converted to the number of credits, and these credits are deducted from the monthly credit allowance of your paid pricing plan.
      The transaction fees and the corresponding numbers of credits deducted from your allowance vary depending on what blockchain you mint NFTs on.
    • On the testnet, only one credit is deducted from the monthly credit allowance for transaction fee. You can mint NFTs with NFT Express regardless of your pricing plan.

With NFT Express, you can choose whether to mint NFTs on the pre-built NFT smart contract provided by Tatum or on your own smart contract.

Use the pre-built smart contract provided by Tatum to mint NFTs

If you want to mint NFTs using the pre-built smart contract, you do not need to deploy your own NFT smart contract. You do not need to provide the address of the NFT smart contract and the token ID in the request body either. The address of the smart contract and the token ID are provided automatically by Tatum.
The token ID is autogenerated. It starts with 0 and is increased by 1 for each new NFT. The token ID is calculated separately for each supported blockchain and its mainnet and testnet.
For more information, see our user documentation.

You can mint NFTs on the pre-built smart contract provided by Tatum on the following blockchains:

  • Algorand
  • BNB Smart Chain
  • Celo
  • Ethereum
  • Harmony
  • Klaytn
  • Polygon
  • Solana

Depending on what blockchain you use, choose the request body schema to use in the API call.

  • To mint NFTs on BNB Smart Chain, Celo, Ethereum, Harmony, Klaytn, or Polygon, use this API with the MintNftExpress schema of the request body.
  • To mint NFTs on Algorand, use this API with the MintNftExpressAlgorand schema of the request body.
    To be able to burn the minted NFTs any time later, specify the address of the manager account in the manager parameter.
    An NFT minted on Algorand is automatically transferred to your blockchain address. After the NFT is minted, you have to transfer it to the recipient's address. The recipient has to agree in advance to receive your NFT because Algorand charges users for storing NFTs on their addresses, and an Algorand blockchain address by default does not receive NFTs unless explicitly agreed.
    This how it works:
  • To mint NFTs on Tezos, use this API with the MintNftExpressTezos schema of the request body. In order to use this function, it is necessary to deploy the contract using NFT Express
    1. The recipient agrees to receive the NFT to their address.
    2. You transfer the NFT to the recipient's address (use the transferNftAlgoExpress schema of the request body).
      NOTE: On the mainnet, Tatum covers your transaction fees for the NFT transfer and pays for them from its own blockchain address. Then, the fee amount paid by Tatum is converted to the number of credits, and these credits are deducted from the monthly credit allowance of your paid pricing plan. On the testnet, only one credit is deducted from the monthly credit allowance for transaction fee.
  • To mint NFTs on Solana, use this API with the MintNftExpressSolana schema of the request body.
    Solana uses the Metaplex Protocol, a smart contract and metadata standard for creating and working with NFTs. When you mint an NFT on Solana with NFT Express, the pre-built smart contract based on the Metaplex Protocol is used.
    When an NFT is minted 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). This address is returned in the nftAccountAddress parameter in the response body, is owned by the recipient's address, and has the same private key.
    The response body also returns the address of the minted NFT itself, which is held in the nftAddress parameter.

Use your own smart contract to mint NFTs

If you want to mint NFTs using your own smart contract, you are going to use an NTF minter, a special blockchain address provided by Tatum that will cover the minting fees. The number of credits equivalent to the fees will be then deducted from the monthly credit allowance of your paid pricing plan.

For more information, see our user documentation and the article in the Tatum blog.

You can mint NFTs on your own smart contract on the following blockchains:

  • BNB Smart Chain
  • Celo
  • Ethereum
  • Harmony
  • Klaytn
  • Polygon
  • Horizen Eon

To mint NFTs using your own smart contract, do the following:

  1. In the table located under this section, find the blockchain address of the Tatum NFT minter for your blockchain and network (mainnet or testnet).
  2. Add the minter address as an NFT minter to your smart contract.
  3. Use this API with the MintNftMinter schema of the request body.
    In the request body, enter the following information:
    • chain is the blockchain that you use.
    • to is the blockchain address where to send the minted NFT to.
    • url is the URL of the NFT metadata.
    • minter is the address of the NFT minter that you found in Step 1.
    • contractAddress is the address of your NFT smart contract.
    • tokenId is the the token ID of the NFT.
      For example:
      {
        "chain": "CELO",
        "to": "0x8ce4e40889a13971681391aad29e88efaf91f784",
        "url": "ipfs://QmXJJ6UF5WkF4WTJvsdhiA1etGwBLfpva7Vr9AudGMe3pj",
        "contractAddress": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
        "tokenId": "0123",
        "minter": "0xBC2eBA680EE50d685cc4Fe65f102AA70AfB27D3F"
      }
      
      When you make an API call with this request body, the private key of the NFT minter will be added to the request body automatically:
      {
        "chain": "CELO",
        "to": "0x8ce4e40889a13971681391aad29e88efaf91f784",
        "url": "ipfs://QmXJJ6UF5WkF4WTJvsdhiA1etGwBLfpva7Vr9AudGMe3pj",
        "contractAddress": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
        "tokenId": "0123",
        "minter": "0xBC2eBA680EE50d685cc4Fe65f102AA70AfB27D3F",
        "fromPrivateKey": "0x05e150c73f1920ec14caa1e0b6aa09940899678051a78542840c2668ce5080c2"
      }
      

The following table lists the blockchain addresses of the Tatum NFT minters for the testnet and mainnet of the supported blockchains:

Blockchain Minter address - testnet* Minter address - mainnet**
BNB Smart Chain 0xc16ae5e8c985b906935a0cadf4e24f0400531883 0x49678AAB11E001eb3cB2cBD9aA96b36DC2461A94
Celo 0xBC2eBA680EE50d685cc4Fe65f102AA70AfB27D3F 0x49678AAB11E001eb3cB2cBD9aA96b36DC2461A94
Ethereum 0x53e8577C4347C365E4e0DA5B57A589cB6f2AB848 0x49678AAB11E001eb3cB2cBD9aA96b36DC2461A94
Harmony 0x8906f62d40293ddca77fdf6714c3f63265deddf0 0x49678AAB11E001eb3cB2cBD9aA96b36DC2461A94
Klaytn 0x80d8bac9a6901698b3749fe336bbd1385c1f98f2 0x49678AAB11E001eb3cB2cBD9aA96b36DC2461A94
Polygon 0x542b9ac4945a3836fd12ad98acbc76a0c8b743f5 0x49678AAB11E001eb3cB2cBD9aA96b36DC2461A94
Horizen Eon 0x53e8577c4347c365e4e0da5b57a589cb6f2ab848 0x625805bf8fe714589ea8c90dbc294e656104c7b3

*If a minter blockchain address on the testnet does not have sufficient funds to cover the transaction fee, add some amount to it using a crypto faucet of the blockchain.

**To be able to use NFT Express on the mainnet, you have to have a paid pricing plan.
For Ethereum specifically, we recommend an Enterprise Plan because transaction fees on Ethereum are very high.

Minting NFTs natively on a blockchain

When minting an NFT natively on a blockchain, you are using your own smart contract. You are charged a fee for the transaction, and you must sign the transaction with the private key of the blockchain address from which the fee will be deducted.

Providing the private key in the API is not a secure way of signing transactions, because the private key can be stolen or exposed. Your private keys should never leave your security perimeter. You should use the private keys only for testing a solution you are building on the testnet of a blockchain.

For signing transactions on the mainnet, we strongly recommend that you use the Tatum Key Management System (KMS) and provide the signature ID instead of the private key in the API. Alternatively, you can use the Tatum JavaScript client.

You can mint NFTs natively on the following blockchains:

  • Algorand
  • BNB Smart Chain
  • Celo
  • Ethereum
  • Flow
  • Harmony
  • Klaytn
  • KuCoin Community Chain
  • Polygon
  • Solana
  • TRON
  • Tezos
  • Horizen Eon
  • Flare
  • Cronos
  • Base

Depending on what blockchain you use, choose the request body schema to use in the API call.

  • To mint NFTs natively on Algorand and:
    • To sign the transaction with your private key, use this API with the MintNftAlgorand schema of the request body.
    • To sign the transaction with your signature ID, use this API the MintNftAlgorandKMS schema of the request body.
      NOTE:
      • To be able to burn the minted NFTs any time later, specify the address of the manager account in the manager parameter.
      • An NFT minted on Algorand is automatically transferred to your blockchain address. After the NFT is minted, you have to transfer it to the recipient's address. The recipient has to agree in advance to receive your NFT because Algorand charges users for storing NFTs on their addresses, and an Algorand blockchain address by default does not receive NFTs unless explicitly agreed. For more information about how it works, see the section about minting NFTs on Algorand using the pre-built NFT smart contract provided by Tatum.
  • To mint NFTs natively on BNB Smart Chain, Ethereum, Harmony, Klaytn, KuCoin Community Chain, Polygon or Horizen Eon, and:
    • To sign the transaction with your private key, use this API with the MintNft schema of the request body.
    • To sign the transaction with your signature ID, use this API the MintNftKMS schema of the request body.
  • To mint NFTs natively on Celo and:
    • To sign the transaction with your private key, use this API with the MintNftCelo schema of the request body.
    • To sign the transaction with your signature ID, use this API the MintNftKMSCelo schema of the request body.
  • To mint NFTs natively on Flow and:
    • To sign the transaction with your private key, use this API with the MintNftFlowPK schema of the request body.
    • To sign the transaction with your signature ID, use this API the MintNftFlowMnemonic schema of the request body.
    • To sign the transaction with your wallet mnemonic, use this API the MintNftFlowKMS schema of the request body.
  • To mint NFTs natively on Solana and:
    • To sign the transaction with your private key, use this API with the MintNftSolana schema of the request body.
    • To sign the transaction with your signature ID, use this API the MintNftSolanaKMS schema of the request body.
      NOTE: When an NFT is minted on Solana, a new blockchain address is created to receive the NFT under the recipient's account address. After the NFT is minted, you have to transfer it to the recipient's address. For more information about how it works, see the section about minting NFTs on Solana using the pre-built NFT smart contract provided by Tatum.
  • To mint NFTs natively on TRON and:
    • To sign the transaction with your private key, use this API with the MintNftTron schema of the request body.
    • To sign the transaction with your signature ID, use this API the MintNftKMSTron schema of the request body.
  • To mint NFTs natively on Tezos and:
    • To sign the transaction with your private key, use this API with the MintNftTezos schema of the request body.
Language
Authorization
Header
Click Try It! to start a request and see the response here!