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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.