Skip to main content

wallet_watchAsset

MetaMaskExperimental

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.

Params

(2)

1. type (required)

string

Supports 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.

Allowed values:
ERC20ERC721ERC1155

2. options (required)

address
string
required

The address of the token contract.

symbol
string

A ticker symbol or shorthand, up to 11 characters (optional for ERC-20 tokens).

>= 2 characters<= 11 characters
decimals
number

The number of token decimals (optional for ERC-20 tokens).

image
string

A string URL of the token logo (optional for ERC-20 tokens).

tokenId
string

The unique identifier of the NFT (required for ERC-721 and ERC-1155 tokens).

Result

(WatchAssetResult)

true if the token was added, false otherwise.

boolean

Errors

CodeMessage
-32602Must specify address, symbol, and decimals.
-32602Invalid symbol: not a string.
-32602Invalid symbol '${symbol}': longer than 11 characters.
-32602Invalid decimals '${decimals}': must be 0 <= 36.
-32602Invalid address '${address}'.
-32602Asset type is required.
-32602Both address and tokenId are required.
-32602Invalid address.
-32000Suggested NFT is not owned by the selected account.
-32000Suggested NFT of type ${standard} does not match received type ${type}.
-32002Unable 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.

Examples

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"
}
}
});

Result

true

Params

type

options


Request

await window.ethereum.request({
"method": "wallet_watchAsset",
"params": {}
});