# Referência da Data API de blockchain

> Source: https://docs.blockvectra.com/pt-br/api/data/

## Visão geral

Use esta referência da Data API de blockchain para construir requisições REST para blocos indexados, transações, endereços, tokens, NFTs, atividade em DEX, ações tokenizadas e atualização dos dados. Para escolher um conjunto de dados e verificar a disponibilidade das redes, comece pelo [diretório de conjuntos de dados](https://docs.blockvectra.com/en/datasets/); para saldos de tokens e histórico de transferências de carteiras, siga o [guia de ativos de carteiras](https://docs.blockvectra.com/en/guides/wallet-assets/).

* **URL base**: `https://api.blockvectra.com/v1/data` — toda rota, exceto `/chains`, recebe o prefixo com um identificador de rede (por exemplo, `https://api.blockvectra.com/v1/data/{chain}/…`)
* **Protocolo**: HTTP `GET` (além de `POST` para consultas de tokens em lote em `/{chain}/tokens:batch`), respostas em JSON
* **Autenticação**: API key obrigatória — envie sua chave no cabeçalho de requisição `x-api-key`. As requisições são medidas e cobradas em Compute Units (CU); apenas respostas 2xx bem-sucedidas são cobradas
* **Ethereum**: a cobertura de dados é determinada por `coverage.from_block` em `GET /v1/data/chains` e abrange um conjunto menor de conjuntos de dados — consulte [Redes compatíveis → Ethereum](https://docs.blockvectra.com/en/chains/#ethereum)

Os pesos de CU da Data API estão listados na página de [Preços](https://blockvectra.com/en/pricing/) e são retornados por `GET /v1/plans`. Consulte [Início rápido → Chamar a Data API](https://docs.blockvectra.com/en/quickstart/#4-call-the-data-api) para ver exemplos de requisições e formatos de resposta. Para versionamento de caminhos, regras de compatibilidade retroativa e recomendações de SDKs, consulte [Versionamento e compatibilidade da API](https://docs.blockvectra.com/en/api/versioning/).

## Redes

A Data API serve dados indexados com escopo por rede: `https://api.blockvectra.com/v1/data/{chain}/…`.

Os conjuntos de dados e recursos disponíveis variam por rede; consulte [Redes compatíveis](https://docs.blockvectra.com/en/chains/) para ver a matriz completa de recursos. `GET https://api.blockvectra.com/v1/data/chains` informa `features`, `coverage`, `finality` e `limits` de cada rede. Requisições fora da cobertura de um conjunto de dados retornam HTTP `422 no_coverage` (não cobrado); uma rede desconhecida ou não pública retorna HTTP `404` com `error.code` `not_found` (não cobrado; os nomes das redes devem ser slugs exatos em letras minúsculas).

## Erros

Toda resposta de erro tem o formato `{"error":{"code","message"}}`; apenas `409 not_indexed_yet` pode adicionar `indexed_through` (o bloco indexado mais alto nessa rede), e ele fica ausente quando a rede ainda não tiver dados indexados. Códigos que os clientes encontram com mais frequência:

| Status | `error.code`           | Significado                                                                                                                                                                                                           | Ação                                                                                                                                                                                                     |
| ------ | ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `402`  | `insufficient_balance` | Saldo pago ou cota gratuita esgotada; quando o saldo é conhecido, `error.data` inclui `balance_units` e `balance_cu` (não cobrado)                                                                                    | Recarregue on-chain na [página de faturamento](https://console.blockvectra.com/billing/) do console ou aguarde a cota gratuita renovar                                                                   |
| `404`  | `not_found`            | `{chain}` desconhecida ou não pública, ou o objeto não existe                                                                                                                                                         | Corrija a requisição                                                                                                                                                                                     |
| `409`  | `not_indexed_yet`      | A requisição atinge acima de `as_of_block` (bloco mais recente gravado por completo; inclui `indexed_through`), o hash resolve acima de `as_of_block` ou a rede ainda não tem dados indexados (sem `indexed_through`) | Com `indexed_through`, faça polling até que seu bloco ou `to_block` esteja nele ou abaixo dele; sem ele, aguarde a rede começar a indexar (`coverage.has_data` em `GET /v1/data/chains` mostra o estado) |
| `422`  | `no_coverage`          | Lacuna permanente: a rede não possui esse recurso ou o bloco está antes da cobertura indexada/trace                                                                                                                   | Altere a requisição; tentar novamente não ajudará                                                                                                                                                        |
| `429`  | `rate_limited`         | Limite de taxa de CU da chave (a resposta inclui `Retry-After`) ou limite de taxa de chamadas da conta (sem `Retry-After`); não cobrado                                                                               | Tente novamente após `Retry-After` segundos                                                                                                                                                              |
| `429`  | `cost_exceeds_burst`   | Uma única requisição custa mais do que a capacidade de rajada da chave; sem `Retry-After` (não cobrado)                                                                                                               | Divida a requisição; tentar novamente como enviada nunca terá sucesso                                                                                                                                    |
| `503`  | `unavailable`          | Temporariamente indisponível; a resposta traz `Retry-After`. Também retornado para requisições históricas em uma rede cujo `coverage.from_block` é atualmente `null`                                                  | Tente novamente após `Retry-After` segundos                                                                                                                                                              |
| `503`  | `gateway_overloaded`   | O limite de simultaneidade da conta em todas as suas chaves e redes foi atingido, ou o serviço está temporariamente ocupado; `Retry-After: 1` (não cobrado)                                                           | Reduza as requisições simultâneas em toda a conta e aguarde `Retry-After` segundos antes de tentar novamente                                                                                             |

## Índice de endpoints

A seguir está a especificação original em inglês.

<div lang="en">

### Chain

- GET /chains — List supported chains
- GET /{chain}/blocks/{number} — Get a block by number
- GET /{chain}/blocks/hash/{hash} — Get a block by hash
- GET /{chain}/blocks/{number}/transactions — List a block's transactions
- GET /{chain}/transactions/{hash} — Get a transaction by hash

### Status

- GET /{chain}/status/freshness — Freshness and lag per dataset

### Addresses

- GET /{chain}/addresses/{address}/transactions — List an address's transactions
- GET /{chain}/addresses/{address}/transfers — List an address's token transfers
- GET /{chain}/addresses/{address}/balances — List an address's ERC-20 balances

### Tokens

- GET /{chain}/tokens/{token}/transfers — List a token contract's transfers
- GET /{chain}/tokens/{token}/holders — List a token's holders
- GET /{chain}/tokens/{token} — Get token metadata
- POST /{chain}/tokens:batch — Batch get token metadata

### NFTs

- GET /{chain}/nfts/{contract}/{token_id} — Get one NFT's owner/holders
- GET /{chain}/nfts — List NFTs owned by an address

### DEX

- GET /{chain}/dex/swaps — List DEX swaps by pool or token
- GET /{chain}/dex/prices — Daily DEX token prices

### Stocks

- GET /{chain}/stocks — Daily leaderboard of tokenized stocks
- GET /{chain}/stocks/{token} — Get one tokenized stock

### Traces

- GET /{chain}/blocks/{number}/traces — Historical callTracer trace tree for a whole block
- GET /{chain}/transactions/{hash}/trace — Historical callTracer trace tree for one transaction

</div>
