MetaMask
Experimental
Multichain API
wallet_watchAsset
Summary: Tracks a token in MetaMask.
Requests that the user track the specified token in MetaMask. Returns a boolean indicating if the token was successfully added. Once added, the token is indistinguishable from those added using legacy methods, such as a centralized registry. Introduced by EIP-747.
Parameters
type enum
requiredSupports ERC-20, ERC-721, and ERC-1155 tokens. Support for ERC-721 and ERC-1155 tokens is experimental and currently only available on the extension (not on mobile). See MIP-1 and MIP proposal lifecycle for more information.
Enum:
"ERC20"
"ERC721"
"ERC1155"
options object
requiredWatchAssetOptions
Returns
WatchAssetResult boolean
true
if the token was added, false
otherwise.
Errors
Code
Message
-32602
Must specify address, symbol, and decimals.
-32602
Invalid symbol: not a string.
-32602
Invalid symbol '${symbol}': longer than 11 characters.
-32602
Invalid decimals '${decimals}': must be 0 <= 36.
-32602
Invalid address '${address}'.
-32602
Asset type is required.
-32602
Both address and tokenId are required.
-32602
Invalid address.
-32000
Suggested NFT is not owned by the selected account.
-32000
Suggested NFT of type ${standard} does not match received type ${type}.
-32002
Unable to verify ownership. Possibly because the standard is not supported or the user's currently selected network does not match the chain of the asset in question.
Customize request
Parameter
Value
Connect your MetaMask wallet to run requests successfully.
Request
await window.ethereum.request({
"method": "wallet_watchAsset",
"params": {
type: "ERC20",
options: {
address: "0xb60e8dd61c5d32be8058bb8eb970870f07233155",
symbol: "FOO",
decimals: 18,
image: "https://foo.io/token-image.svg"
}
},
});
Example response
true