Using approve function of metaplex I had transferred the delegate of a nft to another wallet. How can I use the revoke function so that the second wallet can self revoke itself as the delegate without the signature of the nft holding wallet.

This is what I tried, here secondWalletKey is the keypair of the current delegate and walletId is the publicKey of the nft holder.

          const nftOrSft = {
            address: new PublicKey(nftMint),
            tokenStandard: 0,

            const revokeTxnBuilder = metaplex
                authority: {
                  __kind: "self",
                  delegate: secondWalletKey,
                delegate: {
                  type: "StandardV1",
                  owner: walletId,
                  delegate: secondWalletKey.publicKey,

But this gives me the error Invalid owner. Any idea as to how to overcome this?

1 Answer 1


Metaplex divides its many delegate variants into two classes: some are considered token delegates while the rest are considered metadata delegates. According to the metaplex docs, self-revoke only works for metadata delegates.

The Standard variant belongs to the token-delegate class and therefore doesn't support self-revokes.

This site is temporarily in read-only mode and not accepting new answers.

Not the answer you're looking for? Browse other questions tagged .