openapi: 3.0.0 info: title: EVM Balance Get Metadata API version: '2.2' servers: - url: https://deep-index.moralis.io/api/v2.2 security: - ApiKeyAuth: [] tags: - name: Get Metadata paths: /nft/{address}/{token_id}: get: security: - ApiKeyAuth: [] summary: Get NFT metadata description: Fetch metadata for a specific NFT. Includes on-chain metadata as well as off-chain metadata, floor prices, rarity and more where available. tags: - Get Metadata x-tag-sdk: nft operationId: getNFTMetadata parameters: - in: query name: chain description: The chain to query required: false schema: $ref: '#/components/schemas/chainList' - in: path name: address description: The address of the NFT contract required: true schema: type: string example: '0x524cab2ec69124574082676e6f654a18df49a048' - in: path name: token_id description: The ID of the token required: true schema: type: string example: '1' - in: query name: format description: The format of the token ID required: false schema: type: string example: decimal default: decimal enum: - decimal - hex - in: query name: normalizeMetadata description: Should normalized metadata be returned? required: false schema: type: boolean default: true - in: query name: media_items description: Should preview media data be returned? required: false schema: type: boolean default: false - in: query name: include_prices description: Should NFT last sale prices be included in the result? required: false schema: type: boolean default: false responses: '200': description: Returns the specified NFT. content: application/json: schema: $ref: '#/components/schemas/nft' x-mcp-prompt: Submit the contract address and token ID to fetch the NFT’s metadata. Use this when users ask for details about a specific NFT or need its attributes for display. /nft/{address}/{token_id}/metadata/resync: get: security: - ApiKeyAuth: [] summary: Resync NFT metadata description: Update an NFT’s metadata, either from its current token URI or a new one. Choose sync for immediate results or async for background processing. tags: - Get Metadata x-tag-sdk: nft operationId: reSyncMetadata parameters: - in: query name: chain description: The chain to query required: false schema: $ref: '#/components/schemas/chainList' - in: path name: address description: The address of the NFT contract required: true schema: type: string example: '0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB' - in: path name: token_id description: The ID of the token required: true schema: type: string example: '1' - in: query name: flag description: The type of resync to operate required: false schema: type: string example: uri default: uri enum: - uri - metadata - in: query name: mode description: To define the behaviour of the endpoint required: false schema: type: string example: sync default: async enum: - async - sync responses: '200': description: (In sync mode) Resync request executed. content: application/json: schema: $ref: '#/components/schemas/metadataResync' '202': description: The resync request was received and will be executed. content: application/json: schema: $ref: '#/components/schemas/metadataResync' '404': description: (In sync mode) Resync request executed and metadata could not be updated. content: application/json: schema: $ref: '#/components/schemas/metadataResync' x-mcp-prompt: Submit the contract address, token ID, and sync mode (sync/async). Specify metadata or token URI refresh. Use this when users report outdated NFT metadata or need refreshed token details. /erc20/metadata: get: security: - ApiKeyAuth: [] summary: Get ERC20 token metadata by contract description: Retrieve metadata (name, symbol, decimals, logo) for an ERC20 token contract, as well as off-chain metadata, total supply, categories, logos, spam status and more. tags: - Get Metadata x-tag-sdk: token operationId: getTokenMetadata parameters: - in: query name: chain description: The chain to query required: false schema: $ref: '#/components/schemas/chainList' - in: query name: addresses description: The addresses to get metadata for required: true schema: type: array maxItems: 10 items: type: string example: '0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0' responses: '200': description: Get the metadata for a given ERC20 token contract address (name, symbol, decimals, logo). content: application/json: schema: type: array items: $ref: '#/components/schemas/erc20Metadata' x-mcp-prompt: Enter the token contract address to fetch its metadata. Use this when users need basic information about a token or are verifying contract details. /erc20/metadata/symbols: get: security: - ApiKeyAuth: [] summary: Get ERC20 token metadata by symbols description: Fetch metadata (name, symbol, decimals, logo) for a list of ERC20 token symbols. deprecated: true tags: - Get Metadata x-tag-sdk: token operationId: getTokenMetadataBySymbol parameters: - in: query name: chain description: The chain to query required: false schema: $ref: '#/components/schemas/chainList' - in: query name: symbols description: The symbols to get metadata for required: true schema: type: array items: type: string example: LINK responses: '200': description: Returns metadata for a given token contract address (name, symbol, decimals, logo). content: application/json: schema: type: array items: $ref: '#/components/schemas/erc20Metadata' x-mcp-prompt: Provide a list of token symbols to retrieve their metadata. Use this when users request metadata for tokens by symbol or are exploring multiple tokens. components: schemas: nft: required: - token_address - token_id - contract_type - name - symbol - possible_spam properties: token_address: type: string description: The address of the NFT contract example: '0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB' token_id: type: string description: The token ID of the NFT example: '15' owner_of: type: string description: The wallet address of the owner of the NFT example: '0x9c83ff0f1c8924da96cb2fcb7e093f78eb2e316b' token_hash: type: string description: The token hash example: 502cee781b0fb40ea02508b21d319ced block_number: type: string description: The block number when the amount or owner changed example: '88256' block_number_minted: type: string description: The block number when the NFT was minted example: '88256' contract_type: type: string description: The type of NFT contract standard example: ERC721 token_uri: type: string description: The URI to the metadata of the token metadata: type: string description: The metadata of the token normalized_metadata: $ref: '#/components/schemas/normalizedMetadata' description: A normalized metadata version of the NFT's metadata. media: $ref: '#/components/schemas/media' description: A set of links to 'thumbnail / preview' media files minter_address: type: string description: The address that minted the NFT example: '0x9c83ff0f1c8924da96cb2fcb7e093f78eb2e316b' last_token_uri_sync: type: string description: When the token_uri was last updated last_metadata_sync: type: string description: When the metadata was last updated amount: type: string description: The quantity of this item that the user owns (used by ERC1155) example: '1' name: type: string description: The name of the NFT contract example: CryptoKitties symbol: type: string description: The symbol of the NFT contract example: RARI possible_spam: type: boolean description: Indicates if a contract is possibly a spam contract example: 'false' verified_collection: type: boolean description: Indicates if a contract is verified example: 'false' rarity_rank: type: number description: The rarity rank example: 21669 rarity_percentage: type: number description: The rarity percentage example: 98 rarity_label: type: string description: The rarity label example: Top 98% last_sale: type: object description: Details about the most recent sale involving this token. nullable: true required: - transaction_hash - block_timestamp - price - price_formatted - buyer_address - seller_address - payment_token properties: transaction_hash: type: string description: The transaction hash of the last sale example: '0x19e14f34b8f120c980f7ba05338d64c00384857fb9c561e2c56d0f575424a95c' block_timestamp: type: string description: The block timestamp of the last sale example: '2023-04-04T15:59:11.000Z' buyer_address: type: string description: The buyer address of the last sale example: '0xcb1c1fde09f811b294172696404e88e658659905' seller_address: type: string description: The seller address of the last sale example: '0x497a7dee2f13db161eb2fec060fa783cb041419f' price: type: string description: The price of the last sale example: '7300000000000000' price_formatted: type: string description: The formatted price of the last sale example: '0.0073' usd_price_at_sale: type: string description: The USD price of the last sale example: '13.61' current_usd_value: type: string description: The USD price of the last sale at the current value example: '15.53' token_address: type: string description: The token address that is sold example: '0xe8778996e096b39705c6a0a937eb587a1ebbda17' token_id: type: string description: The token ID that is sold example: '170' payment_token: type: object description: The ERC20 token that is being traded with required: - token_name - token_symbol - token_logo - token_decimals - token_address properties: token_name: type: string description: The token name example: Ether token_symbol: type: string description: The token symbol example: ETH token_logo: type: string description: The token logo example: https://cdn.moralis.io/eth/0x.png token_decimals: type: string description: The token decimals example: '18' token_address: type: string description: The token address example: '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee' list_price: type: object properties: listed: type: boolean description: Indicates if the NFT is listed for sale example: true price: type: string description: The price of the NFT example: '27008' price_currency: type: string description: The currency of the price example: eth price_usd: type: string description: The price of the NFT in USD example: '13.61' marketplace: type: string description: The marketplace where the NFT is listed example: opensea floor_price: type: string description: The floor price of collection the NFT belongs to example: '12345' floor_price_usd: type: string description: The floor price of the contract in USD example: '12345.4899' floor_price_currency: type: string description: The currency of the floor price example: eth normalizedMetadata: properties: name: type: string description: The name or title of the NFT example: Moralis Mug description: type: string description: A detailed description of the NFT example: Moralis Coffee nug 3D Asset that can be used in 3D worldspaces. This NFT is presented as a flat PNG, a Unity3D Prefab and a standard fbx. image: type: string description: The URL of the NFT's image example: https://arw2wxg84h6b.moralishost.com:2053/server/files/tNJatzsHirx4V2VAep6sc923OYGxvkpBeJttR7Ks/de504bbadadcbe30c86278342fcf2560_moralismug.png external_link: type: string description: A link to additional information example: https://giphy.com/gifs/loop-recursion-ting-aaODAv1iuQdgI external_url: type: string description: A link to additional information example: https://giphy.com/gifs/loop-recursion-ting-aaODAv1iuQdgI animation_url: type: string description: An animated version of the NFT's image example: https://giphy.com/gifs/food-design-donuts-o9ngTPVYW4qo8 attributes: type: array items: $ref: '#/components/schemas/normalizedMetadataAttribute' normalizedMetadataAttribute: properties: trait_type: type: string description: The trait title or descriptor example: Eye Color value: type: object description: The value of the attribute example: hazel display_type: type: string description: The type the attribute value should be displayed as example: string max_value: type: number description: For numeric values, the upper range example: 100 trait_count: type: number description: The number of possible values for this trait example: 7 order: type: number description: Order the trait should appear in the attribute list. example: 1 mediaCollection: properties: low: description: Preview media file, lowest quality (for images 100px x 100px) $ref: '#/components/schemas/mediaItem' medium: description: Preview media file, medium quality (for images 250px x 250px) $ref: '#/components/schemas/mediaItem' high: description: Preview media file, highest quality (for images 500px x 500px) $ref: '#/components/schemas/mediaItem' required: - original - low - medium - high chainList: type: string example: eth default: eth enum: - eth - '0x1' - sepolia - '0xaa36a7' - polygon - '0x89' - bsc - '0x38' - bsc testnet - '0x61' - avalanche - '0xa86a' - fantom - '0xfa' - cronos - '0x19' - arbitrum - '0xa4b1' - chiliz - '0x15b38' - chiliz testnet - '0x15b32' - gnosis - '0x64' - gnosis testnet - '0x27d8' - base - '0x2105' - base sepolia - '0x14a34' - optimism - '0xa' - polygon amoy - '0x13882' - linea - '0xe708' - moonbeam - '0x504' - moonriver - '0x505' - moonbase - '0x507' - linea sepolia - '0xe705' - flow - '0x2eb' - flow-testnet - '0x221' - ronin - '0x7e4' - ronin-testnet - '0x31769' - lisk - '0x46f' - lisk-sepolia - '0x106a' - pulse - '0x171' - sei-testnet - '0x530' - sei - '0x531' - monad - '0x8f' metadataResync: required: - status properties: status: type: string description: The status of the resync request media: properties: mimetype: type: string description: The mimetype of the media file [see https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types] category: enum: - image - audio - video status: enum: - success - processing - unsupported_media - invalid_url - host_unavailable - temporarily_unavailable description:
| success | The NFT Preview was created / retrieved successfully |
| processing | The NFT Preview was not found and has been submitted for generation. |
| unsupported_media | The mime-type of the NFT's media file indicates a type not currently supported. |
| invalid_url | The 'image' URL from the NFT's metadata is not a valid URL and cannot be processed. |
| host_unavailable | The 'image' URL from the NFT's metadata returned an HttpCode indicating the host / file is not available. |
| temporarily_unavailable | The attempt to load / parse the NFT media file failed (usually due to rate limiting) and will be tried again at next request. |