> ## Documentation Index
> Fetch the complete documentation index at: https://docs.serialized.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Token Metadata: batch

> Batch twin: the metadata of up to 100 tokens in one call, EVM and Solana mixed freely. Response in input order, one slot per item, billed per item.

`POST /v1/token/metadata` · **1 per item credit**

Batch twin: the metadata of up to 100 `{chain, address}` items in one call, EVM and Solana mixed freely. The response comes back `200` in input order, one slot per item: `{ data }`, exactly the body of [`GET /v1/token/metadata`](/endpoints/token-metadata) for that token, or `{ error: { code, message } }` for that item alone (unknown token, malformed address), never `null`. One bad item never costs you the rest of the lot. Billed per item.

<Note>A slot's `data` is exactly what `GET /v1/token/metadata` returns: `iconUrl` and `headerUrl` are always fetchable `https` URLs (`null` when no image is available), `dexPaid` is `true`, `false` or `null` (status unknown).</Note>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST 'https://api.serialized.xyz/v1/token/metadata' \
    -H 'Authorization: YOUR_API_KEY' -H 'Content-Type: application/json' \
    -d '{"items":[{"chain":"evm:8453","address":"0x4ed4e862860bed51a9570b96d89af5e1b0efefed"},{"chain":"solana","address":"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"},{"chain":"solana","address":"11111111111111111111111111111112"}]}'
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "data": [
      {
        "data": {
          "chain": "evm:8453",
          "address": "0x4ed4e862860bed51a9570b96d89af5e1b0efefed",
          "name": "Degen",
          "symbol": "DEGEN",
          "decimals": 18,
          "iconUrl": "https://serialized.cloud/token/b278eb86-27e7-4fd3-ae7a-1014e2d1b60d/icon",
          "headerUrl": "https://cdn.dexscreener.com/cms/images/b0bbfdf2aa7c44176f77b9e541ae3e247c358f0ee1aed5dbe171f5cd5f8f5cd1?width=1500&height=500&quality=90",
          "websiteUrl": "https://www.degen.tips/",
          "twitterUrl": "https://twitter.com/degentokenbase",
          "telegramUrl": "https://t.me/degentokenbase",
          "discordUrl": null,
          "description": null,
          "dexPaid": true,
          "dexPaidAt": null
        }
      },
      {
        "data": {
          "chain": "solana",
          "address": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263",
          "name": "Bonk",
          "symbol": "Bonk",
          "decimals": 5,
          "iconUrl": "https://serialized.cloud/token/4b7ac198-4d41-460d-9d4a-e0a1aa399d4b/icon",
          "headerUrl": "https://cdn.dexscreener.com/cms/images/e2667fc59737e727f0fd18e7e534c67e371ee40689068e72d30b5bc12bf63c2d?width=1500&height=500&quality=90",
          "websiteUrl": "https://www.bonkcoin.com",
          "twitterUrl": "https://twitter.com/bonk_inu",
          "telegramUrl": "https://t.me/Official_Bonk_Inu",
          "discordUrl": "https://discord.gg/qaQa6M6mN2",
          "description": null,
          "dexPaid": true,
          "dexPaidAt": null
        }
      },
      {
        "error": {
          "code": "NOT_FOUND",
          "message": "Token 11111111111111111111111111111112 on solana"
        }
      }
    ],
    "meta": {
      "asOf": 1788980723721
    }
  }
  ```
</ResponseExample>


## OpenAPI

````yaml openapi.json POST /v1/token/metadata
openapi: 3.1.0
info:
  title: Serialized Data API
  description: >-
    On-chain data for trading apps - tokens, candles, token filters. Built on
    our own indexers. 18 EVM chains + Solana, live.
  version: 0.1.0
servers:
  - url: https://demo.serialized.xyz
    description: 'Demo: no key needed, read endpoints, rate-limited per IP'
  - url: https://api.serialized.xyz
    description: 'Production: your API key in the Authorization header'
security:
  - apiKey: []
  - {}
paths:
  /v1/token/metadata:
    post:
      summary: 'Token Metadata: batch'
      description: >-
        Batch twin: the metadata of up to 100 tokens in one call, EVM and Solana
        mixed freely. Response in input order, one slot per item: `{ data }`,
        the body of the single GET for that token, or `{ error: { code, message
        } }` for that item alone (unknown token, malformed address), never
        `null`, so one bad item never costs you the rest of the lot. Billed per
        item.
      operationId: token-metadata-batch
      requestBody:
        required: true
        content:
          application/json:
            schema:
              additionalProperties: false
              type: object
              required:
                - items
              properties:
                items:
                  minItems: 1
                  maxItems: 100
                  type: array
                  items:
                    additionalProperties: false
                    type: object
                    required:
                      - chain
                      - address
                    properties:
                      chain:
                        type: string
                      address:
                        type: string
                  description: 1 to 100 of `{chain, address}`, across chains.
                  example:
                    - chain: evm:8453
                      address: 0x4ed4…
                    - chain: solana
                      address: DezXAZ…
                  x-default:
                    - chain: evm:8453
                      address: 0x4ed4…
                    - chain: solana
                      address: DezXAZ…
      responses:
        '200':
          description: Standard `{ data, meta }` envelope.
components:
  securitySchemes:
    apiKey:
      type: apiKey
      name: Authorization
      in: header
      description: Your raw API key (not needed on the demo server).

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.