---
title: "Mint an NFT"
method: POST
path: "/v3/nft/mint"
tags: ["NFT (ERC-721 or compatible)"]
---

# Mint an NFT

`POST /v3/nft/mint`

## Request

- Base URL: `https://api.tatum.io`
- URL: `https://api.tatum.io/v3/nft/mint`
- Auth: API key in header `x-api-key`

/v3/nft/mint

**2 credits per API call**

You can mint NFTs using either of the following methods:

*   [Using NFT Express](#NftExpress)
*   [Natively on a blockchain](#NftNative)

### 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](https://tatum.io/pricing).  
        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](#NftExpressPrebuilt) or on [your own smart contract](#NftExpressOwn).

#### 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](https://docs.tatum.io/nft-express/mint-nfts-with-tatums-nft-express).

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](#operation/NftBurnErc721) 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](https://apidoc.tatum.io/tag/Algorand#operation/AlgorandBlockchainReceiveAsset) to their address.
2.  You [transfer the NFT](#operation/NftTransferErc721) 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](https://www.metaplex.com/), 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](https://docs.tatum.io/nft-express/use-nft-express-with-your-own-smart-contract) and the [article in the Tatum blog](https://blog.tatum.io/how-to-mint-nfts-using-tatums-nft-minter-965194d53c9f).

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

*   BNB Smart Chain
*   Celo
*   Ethereum
*   Harmony
*   Klaytn
*   Polygon

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](#operation/NftAddMinter).
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

\*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](https://tatum.io/pricing).  
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)](https://github.com/tatumio/tatum-kms) and provide the signature ID instead of the private key in the API. Alternatively, you can use the [Tatum JavaScript client](https://github.com/tatumio/tatum-js/tree/v2).

You can mint NFTs natively on the following blockchains:

*   Algorand
*   BNB Smart Chain
*   Celo
*   Ethereum
*   Harmony
*   Klaytn
*   KuCoin Community Chain
*   Polygon
*   Solana
*   TRON
*   Tezos
*   Flare
*   Cronos
*   Base
*   Avalanche
*   Fantom
*   Optimism

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](#operation/NftBurnErc721) 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](#NftExpressPrebuilt).
*   To mint NFTs natively on **BNB Smart Chain**, **Ethereum**, **Harmony**, **Klaytn**, **KuCoin Community Chain** or **Polygon**, 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 **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](#NftExpressPrebuilt).
*   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.

## Query parameters

- `testnetType` 'ethereum-sepolia' | 'flare-coston' | 'flare-coston2' | 'flare-songbird': Specifies the testnet type. The default is ethereum-sepolia for Ethereum (ETH) currency and flare-coston for Flare (FLR) currency. Valid testnet types depend on the specified currency.

## Headers

- `x-testnet-type` Schema (unresolved $ref)

## Request body

- union
  - MintNftExpress: <p>The <code>MintNftExpress</code> schema lets you mint NFTs on BNB Smart Chain, Celo, Ethereum, Harmony, Klaytn, and Polygon using <b>NTF Express</b> with the pre-built smart contract provided by Tatum.<br/>For more information, see "Use the pre-built smart contract provided by Tatum to mint NFTs" in <a href="#operation/NftMintErc721">Mint an NFT</a>.</p><br/>
    - `chain` 'BSC' | 'CELO' | 'ETH' | 'KLAY' | 'MATIC' | 'ONE', required: The blockchain to work with
    - `to` string, required: The blockchain address to send the NFT to
    - `url` string, required: The URL pointing to the NFT metadata; for more information, see <a href="https://eips.ethereum.org/EIPS/eip-721#specification" target="_blank">EIP-721</a>
  - MintNftExpressAlgorand: <p>The <code>MintNftExpressAlgorand</code> schema lets you mint NFTs on Algorand using <b>NTF Express</b> with the pre-built smart contract provided by Tatum.<br/>For more information, see "Use the pre-built smart contract provided by Tatum to mint NFTs" in <a href="#operation/NftMintErc721">Mint an NFT</a>.</p><br/>
    - `chain` 'ALGO', required: The blockchain to work with
    - `url` string, required: The URL pointing to the NFT metadata; for more information, see <a href="https://eips.ethereum.org/EIPS/eip-721#specification" target="_blank">EIP-721</a>
    - `name` string, required: The name of the NFT
    - `attr` object
      - `assetUnit` string: The unit name of the NFT
      - `clawback` string: The address of the clawback account that can claw back holdings of the NFT
      - `manager` string: The address of the manager account that can manage the configuration of the NFT or burn it; specify this parameter if you want to be able to <a href="#operation/NftBurnErc721">burn the minted NFT</a> any time later
      - `reserve` string: The address of the reserve account that holds the reserve (non-minted) units of the NFT
      - `freeze` string: The address of the freeze account that is used to freeze holdings of the NFT
      - `total` number: (For minting the NFT as a <a href="https://developer.algorand.org/docs/get-started/tokenization/nft/#fractional-nfts" target="_blank">fractional NFT</a>) The number of fractions that the minted NFT should be divided into<br/>The number must be a power of 10 and greater that 1, for example, 10, 100, 1000...<br/>If not set, the parameter defaults to 1, which means that one regular (not fractional) NFT will be minted.
      - `decimals` number: (For minting the NFT as a <a href="https://developer.algorand.org/docs/get-started/tokenization/nft/#fractional-nfts" target="_blank">fractional NFT</a>) The number of decimal places in a fraction of the minted NFT<br/>The number must be greater that 0 and equal to the logarithm in base 10 of the number of the fractions (see the <code>total</code> parameter); for example, if <code>total</code> is set to 10, <code>decimals</code> must be set to 1.<br/>If not set, the parameter defaults to 0, which means that one regular (not fractional) NFT will be minted.
  - MintNftExpressSolana: <p>The <code>MintNftExpressSolana</code> schema lets you mint NFTs on Solana using <b>NTF Express</b> with the pre-built smart contract provided by Tatum.<br/>For more information, see "Use the pre-built smart contract provided by Tatum to mint NFTs" in <a href="#operation/NftMintErc721">Mint an NFT</a>.</p><br/>
    - `chain` 'SOL', required: The blockchain to work with
    - `to` string, required: The blockchain address to send the NFT to
    - `metadata` SolanaNftExpressMetadata, required
      - `name` string, required: The name of the NFT
      - `symbol` string, required: The symbol or abbreviated name of the NFT
      - `sellerFeeBasisPoints` number, required: The royalty that will be paid to the authors of the minted NFT every time the NFT is transferred<br/>The royalty is calculated as a percentage of the NFT price. To set the royalty to 1%, set this parameter to <code>100</code>; to set 10%, set this parameter to <code>1000</code>; to set 50%, set this parameter to <code>5000</code>, and so on.<br/>To specify the NFT authors and their shares in the royalty, set the <code>creators</code> parameter.<br/>To disable the royalty for the NFT completely, set <code>sellerFeeBasisPoints</code> to <code>0</code> and do not set <code>creators</code>.
      - `uri` string, required: The URL pointing to the NFT metadata; for more information, see <a href="https://eips.ethereum.org/EIPS/eip-721#specification" target="_blank">EIP-721</a>
      - `collection` string: The blockchain address of the NFT collection where the NFT will be minted in. By default, the NFT is minted as not verified (is not considered a part of the collection). To verify the NFT in the collection, use the <a href="https://apidoc.tatum.io/tag/NFT-(ERC-721-or-compatible)#operation/NftVerifyInCollection" target="_blank">NFT verification API</a>. To know more about Solana collections and verification, refer to the <a href="https://docs.metaplex.com/programs/token-metadata/certified-collections" target="_blank">Solana user documentation</a>.
      - `mutable` boolean: Specifies whether the NFT metadata is mutable ("true") or immutable ("false"); if not set, defaults to "true"
      - `creators` SolanaNftMetadataCreator[]: The blockchain addresses where the royalties will be sent every time the minted NFT is transferred
        - `address` string, required: The blockchain address of the NFT creator
        - `verified` boolean, required: If set to "true", the NFT creator was verified. Only the address whose private key was used during the minting of the NFT can be a verified creator. If you are minting the NFT using NFT Express, set this parameter to "false".
        - `share` number, required: The share to be sent to the NFT creator (in %)
  - MintNftTezos: <p>The <code>MintNftTezos</code> schema lets you mint NFTs on Tezos.<br/>For more information, see "Minting NFTs natively on a blockchain" in <a href="#operation/NftMintErc721">Mint an NFT</a>.<br/>
    - `chain` 'TEZOS', required: The blockchain to work with
    - `url` string, required: The URL pointing to the NFT metadata</a>
    - `contractAddress` string, required: The blockchain address of the smart contract to build the NFT on
    - `ownerAddress` string, required: The blockchain address to send the NFT to
    - `tokenId` string, uint256, required: The ID of the NFT
    - `fromPrivateKey` string, required: The private key of the blockchain address that will pay the fee for the transaction
  - MintNftExpressTezos: <p>The <code>MintNftExpressTezos</code> schema lets you mint NFTs on Tezos using <b>NTF Express</b>. You don't need to provide the private key and Tatum will cover the minting fees. The price of the mint operation will be deducted from your credits. In order to use the mint you need to first deploy the smartcontract using NFT Express</p><br/>
    - `chain` 'TEZOS', required: The blockchain to work with
    - `url` string, required: The URL pointing to the NFT metadata</a>
    - `contractAddress` string, required: The blockchain address of the smart contract to build the NFT on
    - `ownerAddress` string, required: The blockchain address to send the NFT to
    - `tokenId` string, uint256, required: The ID of the NFT
  - MintNftMinter: <p>The <code>MintNftMinter</code> schema lets you mint NFTs on BNB Smart Chain, Celo, Ethereum, Harmony, Klaytn and Polygon using the <b>NTF minter</b>, a special blockchain address provided by Tatum that will cover the minting fees.<br/>For more information, see "Use your own smart contract to mint NFTs" in <a href="#operation/NftMintErc721">Mint an NFT</a>.</p><br/>
    - `chain` 'BSC' | 'CELO' | 'ETH' | 'KLAY' | 'MATIC' | 'ONE', required: The blockchain to work with
    - `contractAddress` string, required: The blockchain address of the smart contract to build the NFT on
    - `minter` string, required: The blockchain address of the Tatum NFT minter; this is the address that you added as an NFT minter to your NFT smart contract
    - `to` string, required: The blockchain address to send the NFT to
    - `tokenId` string, uint256, required: The ID of the NFT
    - `url` string, required: The URL pointing to the NFT metadata; for more information, see <a href="https://eips.ethereum.org/EIPS/eip-721#specification" target="_blank">EIP-721</a>
  - MintNft: <p>The <code>MintNft</code> schema lets you mint NFTs natively on BNB Smart Chain, Ethereum, Harmony, Klaytn, KuCoin Community Chain and Polygon and sign the transaction with your private key.<br/>For more information, see "Minting NFTs natively on a blockchain" in <a href="#operation/NftMintErc721">Mint an NFT</a>.</p><br/>
    - `chain` 'BSC' | 'ETH' | 'KLAY' | 'KCS' | 'MATIC' | 'ONE' | 'FLR' | 'CRO' | 'BASE' | 'AVAX' | 'OPTIMISM' | 'FTM', required: The blockchain to work with
    - `to` string, required: The blockchain address to send the NFT to
    - `contractAddress` string, required: The blockchain address of the smart contract to build the NFT on
    - `tokenId` string, uint256, required: The ID of the NFT
    - `url` string, required: The URL pointing to the NFT metadata; for more information, see <a href="https://eips.ethereum.org/EIPS/eip-721#specification" target="_blank">EIP-721</a>
    - `fromPrivateKey` string, required: The private key of the blockchain address that will pay the fee for the transaction
    - `nonce` number: The nonce to be set to the transaction; if not present, the last known nonce will be used
    - `fee` CustomFee: The custom defined fee; if not present, will be calculated automatically
      - `gasPrice` string, required: The price for one gas unit (in Gwei)
      - `gasLimit` string, required: The maximum number of gas units that you are willing to spend on processing the transaction at the provided gas price
  - MintNftKMS: <p>The <code>MintNftKMS</code> schema lets you mint NFTs natively on BNB Smart Chain, Ethereum, Harmony, Klaytn, KuCoin Community Chain, and Polygon and sign the transaction with your signature ID.<br/>For more information, see "Minting NFTs natively on a blockchain" in <a href="#operation/NftMintErc721">Mint an NFT</a>.</p><br/>
    - `chain` 'BSC' | 'ETH' | 'KLAY' | 'KCS' | 'MATIC' | 'ONE', required: The blockchain to work with
    - `to` string, required: The blockchain address to send the NFT to
    - `contractAddress` string, required: The blockchain address of the smart contract to build the NFT on
    - `tokenId` string, uint256, required: The ID of the NFT
    - `url` string, required: The URL pointing to the NFT metadata; for more information, see <a href="https://eips.ethereum.org/EIPS/eip-721#specification" target="_blank">EIP-721</a>
    - `signatureId` string, uuid, required: The KMS identifier of the private key of the blockchain address that will pay the fee for the transaction
    - `index` number: (Only if the signature ID is mnemonic-based) The index of the address to pay the transaction fee that was generated from the mnemonic
    - `nonce` number: The nonce to be set to the transaction; if not present, the last known nonce will be used
    - `fee` CustomFee: The custom defined fee; if not present, will be calculated automatically
      - `gasPrice` string, required: The price for one gas unit (in Gwei)
      - `gasLimit` string, required: The maximum number of gas units that you are willing to spend on processing the transaction at the provided gas price
  - MintNftAlgorand: <p>The <code>MintNftAlgorand</code> schema lets you mint NFTs natively on Algorand and sign the transaction with your private key.<br/>For more information, see "Minting NFTs natively on a blockchain" in <a href="#operation/NftMintErc721">Mint an NFT</a>.</p><br/>
    - `chain` 'ALGO', required: The blockchain to work with
    - `url` string, required: The URL pointing to the NFT metadata; for more information, see <a href="https://eips.ethereum.org/EIPS/eip-721#specification" target="_blank">EIP-721</a>
    - `name` string, required: The name of the NFT
    - `fromPrivateKey` string, required: The private key of the minting account; the transaction fee will be paid from this account
    - `fee` string: The transaction fee in Algos
    - `attr` object
      - `assetUnit` string: The unit name of the NFT
      - `clawback` string: The address of the clawback account that can claw back holdings of the NFT
      - `manager` string: The address of the manager account that can manage the configuration of the NFT or burn it; specify this parameter if you want to be able to <a href="#operation/NftBurnErc721">burn the minted NFT</a> any time later
      - `reserve` string: The address of the reserve account that holds the reserve (non-minted) units of the NFT
      - `freeze` string: The address of the freeze account that is used to freeze holdings of the NFT
      - `total` number: (For minting the a <a href="https://developer.algorand.org/docs/get-started/tokenization/nft/#fractional-nfts" target="_blank">fractional NFT</a>) The number of fractions that the minted NFT should be divided into<br/>The number must be a power of 10 and greater that 1, for example, 10, 100, 1000...<br/>If not set, the parameter defaults to 1, which means that one regular (not fractional) NFT will be minted.
      - `decimals` number: (For minting the NFT as a <a href="https://developer.algorand.org/docs/get-started/tokenization/nft/#fractional-nfts" target="_blank">fractional NFT</a>) The number of decimal places in a fraction of the minted NFT<br/>The number must be greater that 0 and equal to the logarithm in base 10 of the number of the fractions (see the <code>total</code> parameter); for example, if <code>total</code> is set to 10, <code>decimals</code> must be set to 1.<br/>If not set, the parameter defaults to 0, which means that one regular (not fractional) NFT will be minted.
  - MintNftAlgorandKMS: <p>The <code>MintNftAlgorandKMS</code> schema lets you mint NFTs natively on Algorand and sign the transaction with your signature ID.<br/>For more information, see "Minting NFTs natively on a blockchain" in <a href="#operation/NftMintErc721">Mint an NFT</a>.</p><br/>
    - `chain` 'ALGO', required: The blockchain to work with
    - `url` string, required: The URL pointing to the NFT metadata; for more information, see <a href="https://eips.ethereum.org/EIPS/eip-721#specification" target="_blank">EIP-721</a>
    - `name` string, required: The name of the NFT
    - `from` string, required: The address of the minting account
    - `signatureId` string, uuid, required: The KMS identifier of the private key of the minting account; the transaction fee will be paid from this account
    - `fee` string: The transaction fee in Algos
    - `attr` object
      - `assetUnit` string: The unit name of the NFT
      - `clawback` string: The address of the clawback account that can claw back holdings of the NFT
      - `manager` string: The address of the manager account that can manage the configuration of the NFT or burn it; specify this parameter if you want to be able to <a href="#operation/NftBurnErc721">burn the minted NFT</a> any time later
      - `reserve` string: The address of the reserve account that holds the reserve (non-minted) units of the NFT
      - `freeze` string: The address of the freeze account that is used to freeze holdings of the NFT
      - `total` number: (For minting the NFT as a <a href="https://developer.algorand.org/docs/get-started/tokenization/nft/#fractional-nfts" target="_blank">fractional NFT</a>) The number of fractions that the minted NFT should be divided into<br/>The number must be a power of 10 and greater that 1, for example, 10, 100, 1000...<br/>If not set, the parameter defaults to 1, which means that one regular (not fractional) NFT will be minted.
      - `decimals` number: (For minting the NFT as a <a href="https://developer.algorand.org/docs/get-started/tokenization/nft/#fractional-nfts" target="_blank">fractional NFT</a>) The number of decimal places in a fraction of the minted NFT<br/>The number must be greater that 0 and equal to the logarithm in base 10 of the number of the fractions (see the <code>total</code> parameter); for example, if <code>total</code> is set to 10, <code>decimals</code> must be set to 1.<br/>If not set, the parameter defaults to 0, which means that one regular (not fractional) NFT will be minted.
  - MintNftCelo: <p>The <code>MintNftCelo</code> schema lets you mint NFTs natively on Celo and sign the transaction with your private key.<br/>For more information, see "Minting NFTs natively on a blockchain" in <a href="#operation/NftMintErc721">Mint an NFT</a>.</p><br/>
    - `chain` 'CELO', required: The blockchain to work with
    - `to` string, required: The blockchain address to send the NFT to
    - `contractAddress` string, required: The blockchain address of the smart contract to build the NFT on
    - `tokenId` string, uint256, required: The ID of the NFT
    - `url` string, required: The URL pointing to the NFT metadata; for more information, see <a href="https://eips.ethereum.org/EIPS/eip-721#specification" target="_blank">EIP-721</a>
    - `feeCurrency` 'CELO' | 'CUSD' | 'CEUR': The currency in which the transaction fee will be paid.
    - `fee` CustomFee: The custom defined fee; if not present, will be calculated automatically
      - `gasPrice` string, required: The price for one gas unit (in Gwei)
      - `gasLimit` string, required: The maximum number of gas units that you are willing to spend on processing the transaction at the provided gas price
    - `fromPrivateKey` string, required: The private key of the blockchain address that will pay the fee for the transaction
    - `nonce` number: The nonce to be set to the transaction; if not present, the last known nonce will be used
  - MintNftKMSCelo: <p>The <code>MintNftKMSCelo</code> schema lets you mint NFTs natively on Celo and sign the transaction with your signature ID.<br/>For more information, see "Minting NFTs natively on a blockchain" in <a href="#operation/NftMintErc721">Mint an NFT</a>.</p><br/>
    - `chain` 'CELO', required: The blockchain to work with
    - `to` string, required: The blockchain address to send the NFT to
    - `contractAddress` string, required: The blockchain address of the smart contract to build the NFT on
    - `tokenId` string, uint256, required: The ID of the NFT
    - `url` string, required: The URL pointing to the NFT metadata; for more information, see <a href="https://eips.ethereum.org/EIPS/eip-721#specification" target="_blank">EIP-721</a>
    - `feeCurrency` 'CELO' | 'CUSD' | 'CEUR', required: The currency in which the transaction fee will be paid
    - `fee` CustomFee: The custom defined fee; if not present, will be calculated automatically
      - `gasPrice` string, required: The price for one gas unit (in Gwei)
      - `gasLimit` string, required: The maximum number of gas units that you are willing to spend on processing the transaction at the provided gas price
    - `signatureId` string, uuid, required: The KMS identifier of the private key of the blockchain address that will pay the fee for the transaction
    - `index` number: (Only if the signature ID is mnemonic-based) The index of the address to pay the transaction fee that was generated from the mnemonic
    - `nonce` number: The nonce to be set to the transaction; if not present, the last known nonce will be used
  - MintNftSolana: <p>The <code>MintNftSolana</code> schema lets you mint NFTs natively on Solana and sign the transaction with your private key.<br/>For more information, see "Minting NFTs natively on a blockchain" in <a href="#operation/NftMintErc721">Mint an NFT</a>.</p><br/>
    - `chain` 'SOL', required: The blockchain to work with
    - `to` string, required: The blockchain address to send the NFT to
    - `from` string, required: The blockchain address that will pay the fee for the transaction
    - `fromPrivateKey` string, required: The private key of the blockchain address that will pay the fee for the transaction
    - `feePayer` string: Address on the Solana blockchain, from which the fee will be paid for transaction. Defaults to from.
    - `feePayerPrivateKey` string: Private key of the fee payer address.
    - `collectionVerifierPrivateKey` string: The private key of the collection verifier (owner) who will verify the NFT in the NFT collection where the NFT is minted in. The blockchain address of this collection is specified in the <code>collection</code> parameter in the <code>metadata</code> section of the request body. To know more about Solana collections and verification, refer to the <a href="https://docs.metaplex.com/programs/token-metadata/certified-collections" target="_blank">Solana user documentation</a>.
    - `metadata` SolanaNftMetadata, required
      - `name` string, required: The name of the NFT
      - `symbol` string, required: The symbol or abbreviated name of the NFT
      - `sellerFeeBasisPoints` number, required: The royalty that will be paid to the authors of the minted NFT every time the NFT is transferred<br/>The royalty is calculated as a percentage of the NFT price. To set the royalty to 1%, set this parameter to <code>100</code>; to set 10%, set this parameter to <code>1000</code>; to set 50%, set this parameter to <code>5000</code>, and so on.<br/>To specify the NFT authors and their shares in the royalty, set the <code>creators</code> parameter.<br/>To disable the royalty for the NFT completely, set <code>sellerFeeBasisPoints</code> to <code>0</code> and do not set <code>creators</code>.
      - `uri` string, required: The URL pointing to the NFT metadata; for more information, see <a href="https://eips.ethereum.org/EIPS/eip-721#specification" target="_blank">EIP-721</a>
      - `collection` string: The blockchain address of the NFT collection where the NFT will be minted in. Specify the private key of the collection verifier in the <code>collectionVerifierPrivateKey</code> parameter of the request body to get the NFT verified in the collection after the NFT has been minted. To know more about Solana collections and verification, refer to the <a href="https://docs.metaplex.com/programs/token-metadata/certified-collections" target="_blank">Solana user documentation</a>.
      - `mutable` boolean: Specifies whether the NFT metadata is mutable ("true") or immutable ("false"); if not set, defaults to "true"
      - `creators` SolanaNftMetadataCreator[]: The blockchain addresses where the royalties will be sent every time the minted NFT is transferred
        - `address` string, required: The blockchain address of the NFT creator
        - `verified` boolean, required: If set to "true", the NFT creator was verified. Only the address whose private key was used during the minting of the NFT can be a verified creator. If you are minting the NFT using NFT Express, set this parameter to "false".
        - `share` number, required: The share to be sent to the NFT creator (in %)
  - MintNftSolanaKMS: <p>The <code>MintNftSolanaKMS</code> schema lets you mint NFTs natively on Solana and sign the transaction with your signature ID.<br/>For more information, see "Minting NFTs natively on a blockchain" in <a href="#operation/NftMintErc721">Mint an NFT</a>.</p><br/>
    - `chain` 'SOL', required: The blockchain to work with
    - `to` string, required: The blockchain address to send the NFT to
    - `from` string, required: The blockchain address that will pay the fee for the transaction
    - `signatureId` string, uuid, required: The KMS identifier of the private key of the blockchain address that will pay the fee for the transaction
    - `feePayer` string: Address on the Solana blockchain, from which the fee will be paid for transaction. Defaults to from.
    - `feePayerSignatureId` string, uuid: Identifier of the private key used for paying the gas costs in signing application. Defaults to the signatureId.
    - `metadata` SolanaNftMetadataKMS, required
      - `name` string, required: The name of the NFT
      - `symbol` string, required: The symbol or abbreviated name of the NFT
      - `sellerFeeBasisPoints` number, required: The royalty that will be paid to the authors of the minted NFT every time the NFT is transferred<br/>The royalty is calculated as a percentage of the NFT price. To set the royalty to 1%, set this parameter to <code>100</code>; to set 10%, set this parameter to <code>1000</code>; to set 50%, set this parameter to <code>5000</code>, and so on.<br/>To specify the NFT authors and their shares in the royalty, set the <code>creators</code> parameter.<br/>To disable the royalty for the NFT completely, set <code>sellerFeeBasisPoints</code> to <code>0</code> and do not set <code>creators</code>.
      - `uri` string, required: The URL pointing to the NFT metadata; for more information, see <a href="https://eips.ethereum.org/EIPS/eip-721#specification" target="_blank">EIP-721</a>
      - `collection` string: The blockchain address of the NFT collection where the NFT will be minted in. The minted NFT will get verified in the collection on behalf of the blockchain address specified in the <code>from</code> parameter. To know more about Solana collections and verification, refer to the <a href="https://docs.metaplex.com/programs/token-metadata/certified-collections" target="_blank">Solana user documentation</a> and <a href="https://apidoc.tatum.io/tag/NFT-(ERC-721-or-compatible)#operation/NftVerifyInCollection" target="_blank">NFT verification API</a>.
      - `mutable` boolean: Specifies whether the NFT metadata is mutable ("true") or immutable ("false"); if not set, defaults to "true"
      - `creators` SolanaNftMetadataCreator[]: The blockchain addresses where the royalties will be sent every time the minted NFT is transferred
        - `address` string, required: The blockchain address of the NFT creator
        - `verified` boolean, required: If set to "true", the NFT creator was verified. Only the address whose private key was used during the minting of the NFT can be a verified creator. If you are minting the NFT using NFT Express, set this parameter to "false".
        - `share` number, required: The share to be sent to the NFT creator (in %)
  - MintNftTron: <p>The <code>MintNftTron</code> schema lets you mint NFTs natively on TRON and sign the transaction with your private key.<br/>For more information, see "Minting NFTs natively on a blockchain" in <a href="#operation/NftMintErc721">Mint an NFT</a>.</p><br/>
    - `chain` 'TRON', required: The blockchain to work with
    - `to` string, required: The blockchain address to send the NFT to
    - `contractAddress` string, required: The blockchain address of the smart contract to build the NFT on
    - `tokenId` string, uint256, required: The ID of the NFT
    - `url` string, required: The URL pointing to the NFT metadata; for more information, see <a href="https://eips.ethereum.org/EIPS/eip-721#specification" target="_blank">EIP-721</a>
    - `feeLimit` number, required: The maximum amount to be paid as the transaction fee (in TRX)
    - `fromPrivateKey` string, required: The private key of the blockchain address that will pay the fee for the transaction
  - MintNftKMSTron: <p>The <code>MintNftKMSTron</code> schema lets you mint NFTs natively on TRON and sign the transaction with your signature ID.<br/>For more information, see "Minting NFTs natively on a blockchain" in <a href="#operation/NftMintErc721">Mint an NFT</a>.</p><br/>
    - `chain` 'TRON', required: The blockchain to work with
    - `to` string, required: The blockchain address to send the NFT to
    - `contractAddress` string, required: The blockchain address of the smart contract to build the NFT on
    - `tokenId` string, uint256, required: The ID of the NFT
    - `url` string, required: The URL pointing to the NFT metadata; for more information, see <a href="https://eips.ethereum.org/EIPS/eip-721#specification" target="_blank">EIP-721</a>
    - `feeLimit` number, required: The maximum amount to be paid as the transaction fee (in TRX)
    - `from` string, required: The blockchain address that will pay the fee for the transaction
    - `signatureId` string, uuid, required: The KMS identifier of the private key of the blockchain address that will pay the fee for the transaction
    - `index` number: (Only if the signature ID is mnemonic-based) The index of the address to pay the transaction fee that was generated from the mnemonic

## Response `200`

OK

- union
  - TransactionHash
    - `txId` string, required: The hash (ID) of the transaction
  - SolanaMintedResult
    - `txId` string: The ID of the transaction
    - `nftAddress` string: The blockchain address of the minted NFT
    - `nftAccountAddress` string: The blockchain address that received the minted NFT; this address was created under the recipient's account address (the one in the <code>to</code> parameter of the request body), is owned by the recipient's address, and has the same private key
  - AlgorandMintedResult
    - `txId` string: The ID of the transaction
    - `assetIndex` number: The ID of the minted NFT
    - `confirmed` boolean: If set to "true", the transaction was included in the block within five rounds; otherwise, returned set to "false". "false" does not mean that the transaction was not included in the block; the Tatum API just does not wait for that much time to return the response.
  - SignatureId
    - `signatureId` string, uuid, required: The internal Tatum ID of the prepared transaction for Key Management Sysytem (KMS) to sign<br/>This is different from the <code>signatureId</code> parameter that you provided in the request body. The <code>signatureId</code> parameter in the request body specifies the signature ID associated with the private key in KMS.

## Other responses

- `400`: Bad Request
- `401`: Unauthorized. Not valid or inactive subscription key present in the HTTP Header.
- `403`: Forbidden. The request is authenticated, but it is not possible to perform the operation due to logical error or invalid permissions.
- `500`: Internal server error. There was an error on the server during the processing of the request.

---

[API](https://skmtc.dev/tatum/apis/smart-contracts.md) - [All operations](https://skmtc.dev/tatum/apis/smart-contracts/llms.txt) - [OpenAPI document](https://skmtc.dev/tatum/apis/smart-contracts/revisions/c0146043bb37?raw)
