Quantum
  • Welcome to Quantum
  • Developer portal
    • Pricing
  • Self-Custody Infrastructure
    • Pincode Management
    • Private Key Management
  • Quickstart guide
  • Authentication
    • API Authentication
  • Faucets
  • Networks & URLs
  • Walletify Api
    • Overview
    • Getting started
    • User Management
    • Signing Methods
    • Testnet Assets
    • Basic Guides
      • Create a user
      • Retrieve a user
      • Update a user
      • Delete a user
      • Create a signing method
      • Update a signing method
      • Delete a signing method
      • Create a wallet
      • Retrieve wallet
      • Archive a wallet
      • Import a wallet
      • Export a wallet
      • Retrieve native balance
      • Retrieve ERC20 tokens
      • Retrieve NFTs
      • Transfer a native token
      • Transfer an ERC20 token
      • Transfer an NFT
      • Transfer a fungible token
      • Signatures
      • Read a contract
      • Execute a contract call
      • Get Transaction status
      • Resubmit a transaction
      • Get wallet events
      • Webhooks
    • Advanced Guides
      • Burn an NFT
      • Filter Spam NFTs
      • Filter NSFW NFTs
      • SWAP Token Pairs
      • Gasless/Meta Transactions
      • Sign RAW Transactions
      • Using Fiat Onramp with Walletify-API
      • Deploy an Ethereum contract
      • Integrate with WalletConnect
      • Set Up NFT Token Gating
      • Chain Specific Fields
      • Integrate with WalletConnect
      • Encrypted PIN Transfer
  • Nft Wizard Api
    • Overview
    • Getting started
    • Basic Guides
      • Get any NFT info
      • Get any NFT contract
      • Get NFTs by any wallet
      • Get wallets by any NFT
      • Create contract
      • Retrieve Contract
      • Delete Contract
      • Check Contract Status
      • Retrieve Contract Metadata
      • Update Contract Metadata
      • Create Token-type (NFT template)
      • Retrieve Token-type (NFT template)
      • Delete Token-type (NFT Template)
      • Check Token-type Status
      • Retrieve Token-type Metadata
      • Update Token-type Metadata
      • Mint an NFT
      • Batch Mint NFTs
      • Update NFT Metadata
      • Retrieve NFT Metadata
      • Add Audio to your NFTs
      • Add Video to your NFTs
      • Store NFT Media
      • Webhooks
    • Advanced Guides
      • Mass Minting
      • Speed Up Minting
      • Dynamic NFTs
      • Configure Royalties
      • Create Company Minter Wallet
      • Retrieve Company Minter Wallets
      • Store NFT Metadata on IPFS
      • View NFT on sandbox/testnet
    • NFT Configuration
      • Attributes
      • Animation & Media
      • Collection Info
      • Max Supply
      • Mint Number
      • Burnable
      • Metadata Storage
  • TMINTER API
    • Overview
    • Getting started
    • Basic Guide
      • Retrieve Any NFT Information
      • Retrieve NFT Contract Information
      • Retrieve NFTs by Wallet Address
      • Retrieve Wallets by NFT
      • Create a New NFT Contract
      • Retrieve a Contract
      • Delete a Contract
      • Check Contract Status
      • Retrieve Contract Metadata
      • Update Contract Metadata
      • Create Token-Type
      • Retrieve Token-Type
      • Delete Token-Type
      • Check Token-Type Status
      • Retrieve Token-Type Metadata
      • Update Token-Type Metadata
      • Mint a Single NFT
      • Batch Mint Multiple NFTs
      • Update NFT Metadata
      • Retrieve NFT Metadata
      • Add Audio to Your NFTs
      • Add Video to Your NFTs
      • Store NFT Media
      • Webhooks for NFT Events
    • Advance Guide
      • Dynamic NFT Creation
      • Token Economics and Supply Control
      • Advanced Minting: Royalty Distribution
      • Cross-Chain NFT Minting
      • NFT Sharding (Fractional Ownership)
      • Batch NFT Minting with Custom Metadata
      • Add Interactivity to NFTs
      • Advanced Media Integration: VR and AR
      • Webhook Triggers for Automated Processes
Powered by GitBook
On this page
  • What are NFTs?
  • Reasons for Burning an NFT
  • How to burn an NFT?
  • 1. List the NFTs for a wallet
  • 2. Burn
  • 3. Burn Batch (Burn multiple NFTs at once)
  1. Walletify Api
  2. Advanced Guides

Burn an NFT

In this guide we will go through the process of burning an NFT

What are NFTs?

NFT, or non-fungible token, refers to a distinctive digital asset typically constructed on blockchain platforms. Unlike cryptocurrencies like Bitcoin or Ethereum, which are interchangeable and have identical values, NFTs are unique and cannot be duplicated or swapped for other assets. This characteristic makes them well-suited for representing digital assets such as art, collectibles, or other exclusive items.

NFTs are commonly established using the ERC721 standard on the Ethereum blockchain. This standard outlines a set of regulations and functions that an NFT contract must adhere to, enabling different NFTs to be compatible and easily traded. Additionally, the concept of ERC1155 has also gained prominence in the blockchain community. ERC1155 is a more advanced token standard that allows for the creation of both fungible and non-fungible tokens within the same smart contract.

This has led to the development of more efficient and cost-effective ways of managing and trading multiple tokens on the blockchain. Our NFT API deploys our battle tested ERC1155 Contracts, allowing you to enjoy its functionality to its fullest potential.

Several popular applications for NFTs include collecting and exchanging digital art, generating distinctive in-game items for video games, and authenticating ownership of tangible assets like real estate or luxury goods.

📘

For token creation we support ERC1155 for most of the chains, except for IMX which uses ERC721

Reasons for Burning an NFT

An NFT can’t be ‘deleted’, however it can be ‘burned’. Once an NFT is minted or uploaded to the blockchain, it is considered immutable; this means it will exist on the blockchain forever. An NFT can be ‘burned’ by being sent to an inaccessible address, as it is removed from circulation.

There exist various justifications for the desire to burn an NFT (non-fungible token). Some potential explanations encompass:

  • Disposing of an unwanted or unnecessary NFT: If in possession of an NFT that is no longer desirable or required, burning serves as a means to permanently eliminate it from circulation. This action proves beneficial, particularly when the NFT occupies unnecessary space on the blockchain or when ensuring its non-utilization by any other party in the future is crucial.

  • Demonstrating ownership of an NFT: In specific instances, burning an NFT can serve as proof of ownership. For instance, when an NFT symbolizes a physical asset, such as artwork or a collectible, incinerating the NFT serves as evidence of ownership over the physical asset and the right to dispose of it.

  • Diminishing the supply of a specific NFT: Occasionally, burning an NFT aids in reducing its overall supply, potentially driving up its value. For example, if a limited quantity of a particular NFT is accessible, burning some of them heightens the scarcity of the remaining NFTs, thereby potentially enhancing their value.

  • Engaging in creative expression: Some individuals opt to burn NFTs as a form of artistic expression. For instance, an artist might create an NFT and subsequently incinerate it as part of a performance or installation. In this context, the act of burning the NFT constitutes an artistic expression in itself.

On the whole, the decision to burn an NFT is a personal choice, contingent upon individual circumstances and objectives bound to your actual use case. It is crucial to thoroughly contemplate the implications of this irreversible action before proceeding.

📘

The owner of the token has the right to burn it.

How to burn an NFT?

To burn an NFT, the wallet that owns the NFT needs to execute the burn function on the NFT Contract.

🚧

Requirements:

  1. ID of the wallet that holds the NFT

  2. The public wallet address that holds the NFT

  3. Token ID that is to be burned

  4. Contract address of the NFT

As input parameters of the burn function we have:

  • id: Token ID of the NFT that will get burned

  • account (address): Wallet address where the NFT is held

  • amount: Number of tokens to be burned, in case of an ERC1155 token

Following the documentation, we can see the burn function:

To call the burn function on the contract, we have to prepare the endpoint for that. We will do it at a later stage.

We can use the endpoint to list the NFTs, then we can choose from the list the NFT we want to burn.

More importantly, from the response we will fetch the Token ID and the Contract Address of the NFT, both required parameters to call the burn function.

Let’s do this step by step.

1. List the NFTs for a wallet

Call the following endpoint to list all NFTs held in the wallet:

HTTP

 GET /api/wallets/{walletId}/nonfungibles

Path Variables:

walletId: This is the ID of a wallet.

Response Body:

📘

From here we choose the NFT that will be burned, thus, we take the required parameters for the burn function:

  • result.id: This is the token ID of the NFT

  • result.contract.address: This is the contract address of the NFT

JSON

{
    "success": true,
    "result": [
        {
            "id": "68",
            "name": "Test NFT that will be burned",
            "animationUrls": [],
            "fungible": false,
            "contract": {
                "name": "Quantum",
                "description": "Example contract created using the QUANTUM NFT API Mauro created it",
                "address": "0x750d09e481ece126e0e9902d4bc546a6968b5b4a",
                "symbol": "VE",
                "media": [
                    {
                        "type": "image",
                        "value": "https://lh3.googleusercontent.com/jCPj6BmSaq63HFJ1WdRQ8QbJCDYW_FcUCEQ_2_OPe4p9aZpveDXJEoi8jJnPDbM18dtVt3CoUIHn1tMSewCdcwfuef1sSlw-Ow"
                    }
                ],
                "type": "ERC_1155",
                "verified": false,
                "premium": false,
                "categories": [],
                "url": "https://quantum.io",
                "imageUrl": "https://lh3.googleusercontent.com/jCPj6BmSaq63HFJ1WdRQ8QbJCDYW_FcUCEQ_2_OPe4p9aZpveDXJEoi8jJnPDbM18dtVt3CoUIHn1tMSewCdcwfuef1sSlw-Ow"
            },
            "attributes": [
                {
                    "type": "property",
                    "name": "Token Type ID",
                    "value": "67"
                },
                {
                    "type": "property",
                    "name": "Max Supply",
                    "value": "10"
                }
            ],
            "balance": 1,
            "finalBalance": 1,
            "transferFees": false
        }
    ]
}

👍

Now you should have the following:

  1. Token ID of the NFT

  2. Contract address of the NFT

  3. Wallet ID that holds the NFT

  4. Public wallet address that holds the NFT

2. Burn

Now we need to prepare the execute function to call the burn function as follows:

HTTP

 GET /api/transactions/execute
Parameter
Param Type
Value
Description

Signing-Method

Header

id:value

id: This is the ID of the signing method value: This is the value of the signing method

Request Body:

Parameter
Description
Data Type
Mandatory?

transactionRequest.type

This will be CONTRACT_EXECUTION

String

✅

transactionRequest.walletId

The ID of the wallet holding the NFT

String

✅

transactionRequest.to

The contract address of the NFT

String

✅

transactionRequest.secretType

The blockchain of the NFT (in this case, its MATIC)

String

✅

transactionRequest.functionName

This will be burn

String

✅

transactionRequest.inputs

An array of inputs for the burn function (see example below)

Array

✅

JSON

{
    "transactionRequest": {
        "type": "CONTRACT_EXECUTION",
        "walletId": "a1a72692-ca76-4579-9ad3-bf18af625f10",
        "to": "0x750d09e481ece126e0e9902d4bc546a6968b5b4a",
        "secretType": "MATIC",
        "functionName": "burn",
        "inputs": [
            {
                "type": "uint256",
                "value": "68" //This is the token ID
            },
            {
                "type": "address",
                "value": "0xcDBfaDa367f1B19a3db9DD01f67F43AB99dcB762" // This is the wallet address holding the NFT
            },
            {
                "type": "uint256",
                "value": "1" //The number of NFTs to burn
            }
        ]
    }
}

3. Burn Batch (Burn multiple NFTs at once)

Last but not least, for the NFT Contracts that were created using ERC1155, we can burn multiple tokens at once. To do so, instead of the burn function, we need to call burnbatch, as shown in here. The burnBatch function uses Arrays as an input parameter for id and amount.

📘

The NFTs have to be from the same contract address in order to batch burn them all.

As input parameters of the burn function we have:

  • ids: Token ID's of the NFT that will get burned

  • account (address): Wallet address where the NFTs are held

  • amounts: Number of tokens to be burned, in case of an ERC1155 token

Call the following endpoint to burn multiple NFTs together.

HTTP

 GET /api/transactions/execute
Parameter
Param Type
Value
Description

Signing-Method

Header

id:value

id: This is the ID of the signing method value: This is the value of the signing method

Request Body:

Parameter
Description
Data Type
Mandatory?

transactionRequest.type

This will be CONTRACT_EXECUTION

String

✅

transactionRequest.walletId

The ID of the wallet holding the NFT

String

✅

transactionRequest.to

The contract address of the NFT

String

✅

transactionRequest.secretType

The blockchain of the NFT (in this case, its MATIC)

String

✅

transactionRequest.functionName

This will be burnBatch

String

✅

transactionRequest.inputs

An array of inputs for the burn function (see example below)

Array

✅

JSON

{
    "transactionRequest": {
        "type": "CONTRACT_EXECUTION",
        "walletId": "a400142a-77b1-4cfa-87cd-7efbd599294d",
        "to": "0xe42256f396710cba4d5efb3800d21092afaf2d48",
        "secretType": "MATIC",
        "functionName": "burnBatch",
        "inputs": [
            {
                "type": "uint256[]",
                "value": "[101,103,105,107,109]" //These are the token ID's
            },
            {
                "type": "address",
                "value": "0x2c5092A1968F3f261010dA53bD70f4543D4a0c35" //This is the contract address of the NFTs
            },
            {
                "type": "uint256[]",
                "value": "[1,1,1,1,1]" //These are the amount of tokens you want to burn
            }
        ]
    }
}
PreviousAdvanced GuidesNextFilter Spam NFTs

Last updated 9 months ago

When creating the it has to be created as "burnable": true, such a parameter is defined upon creation and cannot be updated afterwards.

Burn an NFT

For this guide, we have a wallet that owns a specific NFT. To list the NFTs for a given Wallet ID, we can use the endpoint to the NFTs , this way we can corroborate the whole process.

Request Endpoint:

Request Endpoint:

Once we have called the burn function using the endpoint, we can corroborate if it was burned by listing the NFTs owned by the wallet as shown above. We will not see it listed.

Burn Multiple Tokens

Request Endpoint:

Token Type
list
reference
reference
execute
reference
Burn an NFT
Burn an NFT