Skip to main content

wallet_watchAsset

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. Currently support for ERC721 and ERC1155 tokens is limited to the extension (not on mobile) and is considered experimental. See MIP-1 and MIP proposal lifecycle for more information.

Params

(2)

1. type (required)

string

Supports ERC-20, ERC-721, and ERC-1155 tokens. Currently support for ERC721 and ERC1155 tokens is limited to the extension (not on mobile) and is considered experimental. 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": {}
});