> For the complete documentation index, see [llms.txt](https://docs.chiliz.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.chiliz.com/develop/basics/how-tos/how-to-get-the-metadata-of-a-specific-nft.md).

# How to get the metadata of a specific NFT

## What is NFT metadata?

NFT metadata is the set of descriptive information stored off-chain that details the attributes, properties, and additional content associated with an NFT. These details can be an image URL, its name, description, and attributes related to its uniqueness and ownership.

## How to do it with Moralis

Moralis has an NFT API that you can make use of, and they even provide a code sample for the wallet history use-case:

* [Get NFT metadata](https://docs.moralis.io/web3-data-api/evm/reference/get-nft-metadata?address=0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB\&token_id=1\&chain=eth\&format=decimal\&normalizeMetadata=true\&media_items=false)

To adapt their code sample, replace the reference to Ethereum with their ID for Chiliz Chain, `0x15b38`:

```typescript
import Moralis from 'moralis';

try {
  await Moralis.start({
    apiKey: "YOUR_API_KEY"
  });

  const response = await Moralis.EvmApi.nft.getNFTMetadata({
    "chain": "0x15b38", // This is for Chiliz Chain Mainnet.
                        // For Spicy Testnet, use "0x15b32".
    "format": "decimal",
    "normalizeMetadata": true,
    "mediaItems": false,
    "address": "0xYourNFTContractAddress",
    "tokenId": "1"
  });

  console.log(response.raw);
} catch (e) {
  console.error(e);
}
```

## How to do it with Tatum

Tatum has an NFT submodule to its blockchain abstraction tool that we can make use of, and they even provide a code sample for the metadata-retrieval use-case:

* [Get the metadata of a specific NFT](https://docs.tatum.io/docs/get-the-metadata-of-a-specific-nft)

To adapt their code sample, replace the reference to Ethereum with Chiliz Chain:

```typescript
import {TatumSDK, Network, Chiliz, ResponseDto, NftTokenDetail} from '@tatumio/tatum'

const tatum = await TatumSDK.init<Chiliz>({network: Network.CHILIZ})

const metadata: ResponseDto<NftTokenDetail|null> = await tatum.nft.getNftMetadata({
  tokenAddress: '0xYourNFTContractAddress', // replace with your collection
  tokenId: '1'
})

console.log(metadata.data)
```

## How to do it with thirdweb

thirdweb we can take inspiration from source code hosted on their documentation site:

* [ThirdwebNftMedia](https://portal.thirdweb.com/react/v4/components/ThirdwebNftMedia#usage)

Here is how we could adapt that into code to retrieve metadata:

```typescript
const { ThirdwebSDK } = require("@thirdweb-dev/sdk");

const sdk = new ThirdwebSDK("https://rpc.ankr.com/chiliz");
const nftContractAddress = "0xYourNFTContractAddress";
const tokenId = "YourTokenID";

async function getNFTMetadata() {
  try {
    const nftContract = await sdk.getNFTCollection(nftContractAddress);
    const nftMetadata = await nftContract.get(tokenId);
    console.log(`Metadata of NFT ${tokenId}:`, nftMetadata);
  } catch (error) {
    console.error("Error fetching NFT metadata:", error);
  }
}

getNFTMetadata();
```

## How to do it with Nodit

Nodit provides the following code sample [in their doc](https://developer.nodit.io/reference/chiliz-getnftmetadatabytokenids):

```typescript
const url = 'https://web3.nodit.io/v1/chiliz/mainnet/nft/getNftMetadataByTokenIds';
const options = {
  method: 'POST',
  headers: {
    accept: 'application/json',
    'content-type': 'application/json',
    'X-API-KEY': 'nodit-demo'
  },
  body: JSON.stringify({
    tokens: [
      {contractAddress: '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D', tokenId: '1'},
      {contractAddress: '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D', tokenId: '2'}
    ]
  })
};

fetch(url, options)
  .then(res => res.json())
  .then(json => console.log(json))
  .catch(err => console.error(err));
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.chiliz.com/develop/basics/how-tos/how-to-get-the-metadata-of-a-specific-nft.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
