# Referencia de la Data API de blockchain

> Source: https://docs.blockvectra.com/es/api/data/

## Visión general

Use esta referencia de la Data API de blockchain para construir solicitudes REST para bloques indexados, transacciones, direcciones, tokens, NFT, actividad en DEX, acciones tokenizadas y actualización de conjuntos de datos. Para elegir un conjunto de datos y comprobar la disponibilidad por cadena, comience con el [directorio de conjuntos de datos](https://docs.blockvectra.com/en/datasets/); para consultar saldos de tokens de billeteras e historial de transferencias, siga la [guía de activos de billetera](https://docs.blockvectra.com/es/guides/wallet-assets/).

* **URL base**: `https://api.blockvectra.com/v1/data` — todas las rutas excepto `/chains` tienen como prefijo un identificador de cadena (p. ej., `https://api.blockvectra.com/v1/data/{chain}/…`)
* **Protocolo**: HTTP `GET` (además de `POST` para consultas de tokens por lotes en `/{chain}/tokens:batch`), respuestas JSON
* **Autenticación**: se requiere API key — envíe su clave en el encabezado de solicitud `x-api-key`. Las solicitudes se miden y facturan en Compute Units (CU); solo se facturan las respuestas exitosas 2xx
* **Ethereum**: la cobertura de datos está determinada por `coverage.from_block` en `GET /v1/data/chains`, y cubre un conjunto menor de conjuntos de datos — consulte [Cadenas compatibles → Ethereum](https://docs.blockvectra.com/es/chains/#ethereum)

Los pesos en CU de la Data API se enumeran en la página de [Precios](https://blockvectra.com/es/pricing/) y los devuelve `GET /v1/plans`. Consulte [Inicio rápido → Llamar a la Data API](https://docs.blockvectra.com/es/quickstart/#4-call-the-data-api) para ver ejemplos de solicitudes y formatos de respuesta. Para el control de versiones de rutas, las reglas de compatibilidad con versiones anteriores y las recomendaciones de SDK, consulte [Control de versiones y compatibilidad de la API](https://docs.blockvectra.com/en/api/versioning/).

## Cadenas

La Data API sirve datos indexados delimitados a cada cadena: `https://api.blockvectra.com/v1/data/{chain}/…`.

Los conjuntos de datos y las características disponibles varían según la cadena; consulte [Cadenas compatibles](https://docs.blockvectra.com/es/chains/) para ver la matriz completa de capacidades. `GET https://api.blockvectra.com/v1/data/chains` informa las `features`, `coverage`, `finality` y `limits` de cada cadena. Las solicitudes fuera de la cobertura de un conjunto de datos devuelven HTTP `422 no_coverage` (no facturado); una cadena desconocida o no pública devuelve HTTP `404` con `error.code` `not_found` (no facturado; los nombres de cadena deben ser slugs exactos en minúsculas).

## Errores

Cada respuesta de error es `{"error":{"code","message"}}`; solo `409 not_indexed_yet` puede añadir `indexed_through` (el bloque indexado más alto en esa cadena), y está ausente cuando la cadena aún no tiene datos indexados. Códigos con los que los usuarios se encuentran más a menudo:

| Estado | `error.code`           | Significado                                                                                                                                                                                                                            | Acción                                                                                                                                                                                                           |
| ------ | ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `402`  | `insufficient_balance` | Saldo de pago o asignación gratuita agotados; cuando se conoce el saldo, `error.data` incluye `balance_units` y `balance_cu` (no facturado)                                                                                            | Recargue on-chain en la [página de Facturación](https://console.blockvectra.com/billing/) de la consola, o espere a que se reponga la asignación gratuita                                                        |
| `404`  | `not_found`            | `{chain}` desconocida o no pública, o el objeto no existe                                                                                                                                                                              | Corrija la solicitud                                                                                                                                                                                             |
| `409`  | `not_indexed_yet`      | La solicitud va más allá de `as_of_block` (el bloque más reciente completamente escrito; incluye `indexed_through`), el hash se resuelve por encima de `as_of_block`, o la cadena aún no tiene datos indexados (sin `indexed_through`) | Con `indexed_through`, sondee hasta que su bloque o `to_block` esté en él o por debajo de él; sin él, espere a que la cadena comience a indexar (`coverage.has_data` en `GET /v1/data/chains` muestra el estado) |
| `422`  | `no_coverage`          | Brecha permanente: la cadena carece de esa capacidad, o el bloque es anterior a la cobertura indexada/trace                                                                                                                            | Cambie la solicitud; reintentar no ayudará                                                                                                                                                                       |
| `429`  | `rate_limited`         | Límite de tasa de CU de la clave (la respuesta incluye `Retry-After`) o límite de tasa de llamadas de la cuenta (sin `Retry-After`); no facturado                                                                                      | Reintente después de `Retry-After` segundos                                                                                                                                                                      |
| `429`  | `cost_exceeds_burst`   | Una sola solicitud cuesta más que la capacidad de ráfaga de la clave; sin `Retry-After` (no facturado)                                                                                                                                 | Divida la solicitud; reintentar tal como se envió nunca tendrá éxito                                                                                                                                             |
| `503`  | `unavailable`          | Temporalmente no disponible; la respuesta incluye `Retry-After`. También se devuelve para solicitudes históricas en una cadena cuyo `coverage.from_block` es actualmente `null`                                                        | Reintente después de `Retry-After` segundos                                                                                                                                                                      |
| `503`  | `gateway_overloaded`   | Se alcanzó el límite de concurrencia de la cuenta en todas sus claves y cadenas, o el servicio está temporalmente ocupado; `Retry-After: 1` (no facturado)                                                                             | Reduzca las solicitudes concurrentes en toda la cuenta y espere `Retry-After` segundos antes de reintentar                                                                                                       |

## Índice de endpoints

A continuación se presenta la especificación original en 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>
