> ## Documentation Index
> Fetch the complete documentation index at: https://sequence-0fb8d9e6-shop-docs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Tokens API

## Obtiene la lista de tokens ERC20, ERC721 y ERC1155 y metadatos en cualquier wallet.

*Método `GetTokenBalances` de Sequence Indexer:*

* Solicitud: POST /rpc/Indexer/GetTokenBalances
* Content-Type: application/json
* Cuerpo (en JSON):
  * `accountAddress` (string) -- la dirección de cuenta del wallet
  * `includeMetadata` (booleano - opcional - por defecto: false) -- alterna si los metadatos del token se incluyen en la respuesta
  * `metadataOptions` (objeto - opcional) -- opciones adicionales para metadatos
    * `verifiedOnly` (booleano - opcional) -- devuelve solo contratos 'verificados' para ayudar a reducir spam
    * `includeContracts` (\[]string - opcional) -- lista de direcciones de contrato específicas que siempre se incluirán, incluso si verifiedOnly está activado.
  * `includeCollectionTokens` (booleano - opcional - por defecto: true) -- alterna para representar tokens ERC721 / ERC1155 como un solo ítem resumen en la respuesta

<CodeGroup>
  ```shell Curl
  curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: AQAAAAAAAF_JvPALhBthL7VGn6jV0YDqaFY" https://polygon-indexer.sequence.app/rpc/Indexer/GetTokenBalances -d '{ "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9", "includeMetadata": true }'
  ```

  ```ts Typescript
  // Works in both a Webapp (browser) or Node.js:
  import { SequenceIndexer } from '@0xsequence/indexer'

  const indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'AQAAAAAAAF_JvPALhBthL7VGn6jV0YDqaFY')

  // try any account address you'd like :)
  const accountAddress = '0xabc...'

  // query Sequence Indexer for all token balances of the account on Polygon
  const tokenBalances = await indexer.getTokenBalances({
  	accountAddress: accountAddress,
  	includeMetadata: true
  })
  console.log('tokens in your account:', tokenBalances)
  ```

  ```go Go
  import (
  	"context"
  	"fmt"
  	"log"
  	"net/http"

  	"github.com/0xsequence/go-sequence/indexer"
  )

  func GetTokenBalances(accountAddress string) {
  	seqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "AQAAAAAAAF_JvPALhBthL7VGn6jV0YDqaFY")

  	includeMetadata := true

  	tokenBalances, _, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, &includeMetadata, nil, nil)
  	if err != nil {
  		log.Fatal(err)
  	}
  	fmt.Println("tokenBalances:", tokenBalances)
  }
  ```
</CodeGroup>

<Note>
  **CONSEJO PRO: obtener IDs de tokens ERC721/1155**

  Notará que, por defecto, `GetTokenBalances` devolverá como máximo una instancia de token de cada contrato.
  Para obtener balances de tokens ERC721/1155, debe pasar el `contractAddress` al método `GetTokenBalances`.
  Esto devolverá todos los tokens que posee `accountAddress` del `contractAddress` especificado.
  Consulte la sección siguiente para más información.
</Note>

## Obtenga los IDs de token, balances y metadatos de colecciones ERC721 y ERC1155.

*Método `GetTokenBalances` de Sequence Indexer:*

* Solicitud: POST /rpc/Indexer/GetTokenBalances
* Content-Type: application/json
* Cuerpo (en JSON):
  * `accountAddress` (string) -- la dirección de cuenta del wallet
  * `contractAddress` (string) -- la dirección del contrato de la colección ERC721 / ERC1155
  * `includeMetadata` (booleano - opcional - por defecto: false) -- alterna si los metadatos del token se incluyen en la respuesta
  * `metadataOptions` (objeto - opcional) -- opciones adicionales para metadatos
    * `verifiedOnly` (booleano - opcional) -- devuelve solo contratos 'verificados' para ayudar a reducir spam
    * `includeContracts` (\[]string - opcional) -- lista de direcciones de contrato específicas que siempre se incluirán, incluso si verifiedOnly está activado.

<br />

**Ejemplo: `GetTokenBalances` de un contrato + dirección de cuenta en Polygon usando un `PROJECT_ACCESS_KEY`**

<CodeGroup>
  ```bash Curl
  curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: PROJECT_ACCESS_KEY" https://polygon-indexer.sequence.app/rpc/Indexer/GetTokenBalances -d '{ "contractAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9", "includeMetadata": true }'
  ```

  ```typescript Typescript
  // Works in both a Webapp (browser) or Node.js:
  import { SequenceIndexer } from '@0xsequence/indexer'

  const indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'AQAAAAAAAF_JvPALhBthL7VGn6jV0YDqaFY')

  // try any contract and account address you'd like :)
  const contractAddress = '0x631998e91476DA5B870D741192fc5Cbc55F5a52E'
  const accountAddress = '0xabc...'

  // query Sequence Indexer for all nft balances of the account on Polygon
  const nftBalances = await indexer.getTokenBalances({
  	contractAddress: contractAddress,
  	accountAddress: accountAddress,
  	includeMetadata: true
  })

  console.log('collection of items:', nftBalances)
  ```

  ```go Go
  import (
  	"context"
  	"fmt"
  	"log"
  	"net/http"

  	"github.com/0xsequence/go-sequence/indexer"
  )

  func GetTokenBalances(contractAddress, accountAddress string) {
  	seqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "AQAAAAAAAF_JvPALhBthL7VGn6jV0YDqaFY")

  	includeMetadata := true

  	metadataOptions := indexer.MetadataOptions{
  		VerifiedOnly:     true, // Set to true if you want to fetch only verified contracts
  		UnverifiedOnly:   false,
  		IncludeContracts: nil, // Provide a list of specific contracts to include, if any
  	}

  	nftBalances, _, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, nil, nil, &metadataOptions, nil, nil)
  	if err != nil {
  		log.Fatal(err)
  	}

  	fmt.Println("nftBalances:", nftBalances)
  }
  ```
</CodeGroup>
