SetApprovalForAll: what it means to grant access to all your NFTs

The setApprovalForAll function is a method on the ERC721 standard (and others) that allows an NFT owner to grant another address permission to transfer all of their tokens on their behalf. This can be useful for a variety of purposes, such as:

  • Listing your NFTs on an exchange
  • Participating in a liquidity mining program (i.e. staking)
  • Allowing a third-party service to manage your NFTs

In this guide we’ll dive into what is means,

What does “setApprovalForAll” mean

The setApprovalForAll function is a mechanism in smart contracts that allows granting access to multiple NFTs from a specific collection to another contract. This function is commonly used to enable interactions between contracts, such as marketplace contracts, airdrop contracts, or staking contracts. By calling this function, you authorize the contract to manage your NFTs from that particular collection.


Why would you give access to all your NFTs?

There are various scenarios where granting access to all your NFTs from a specific collection can be beneficial. For instance: - Marketplace Contracts: By approving a marketplace contract, you allow it to handle the listing, sale, or auction of your NFTs from that collection on your behalf. - Airdrop Contracts: Certain projects or platforms use airdrop contracts to distribute tokens or NFTs to eligible users. Granting access to the airdrop contract ensures you can receive these airdropped NFTs. - Staking Contracts: Staking contracts often require access to your NFTs for the purpose of utilizing them as collateral or for participation in staking mechanisms. It is also important to note that granting access to all your NFTs at once can save a lot of gas instead of approving one NFT at a time where you would have to call the same approve function multiple times.

Considerations when calling this function

It is crucial to exercise caution when calling the setApprovalForAll function. Before granting access to your NFTs, ensure that you trust the contract you are interacting with. Verify that the contract is secure, audited, and from a reputable source. By doing so, you can mitigate the risk of unauthorized use or mishandling of your NFTs.

Example of calling setApprovalForAll

If you've encountered the Metamask warning message, Your NFT may be at risk as shown in the image below, let's understand what it means and how it works:

Notion image

Let’s explain what’s going on here and how this works:


The warning appears when there is an interaction between two different contracts and approval is required. Specifically, it refers to the approval from the NFT Contract to the Marketplace contract. Once a token has been approved from one contract to the other, it can be utilized and even transferred by the receiving contract.


Now, let's clarify the statement from Metamask that says, You're granting access to all your NFTs, including ones you might own in the future. This statement pertains to the dashboard's use of the setApprovalForAll function, which enables the Marketplace contract to access your future NFTs from that specific collection. It's important to note that this access is limited to NFTs from the same collection and does not extend to NFTs from other collections. Each collection has its own unique address.

This approval process is necessary to ensure that NFTs can be listed for sale or auctioned on the Marketplace contract. Rest assured, these operations are secure and audited since thirdweb contracts prioritize safety.


How to revoke approval

If you wish to revoke the approval you previously granted to a contract, you have the ability to do so. In the thirdweb dashboard, navigate to the NFT Contract and head over to the Explorer tab, You should be able to see the function setApprovalForAll. Paste in the address of the contract you want to revoke Approval from and set the boolean to falseas shown in the image below, This will remove the permission for the contract to manage your NFTs from that specific collection.

Notion image


The setApprovalForAll function is a powerful tool that can be used for a variety of purposes. However, it is important to use it with caution and to revoke the permission as soon as you no longer need it.



Can’t get this working? If you’ve followed the above and still have issues, contact our support team for help.

Did this answer your question?