# Справочник Blockchain Data API

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

## Обзор

Используйте этот справочник Blockchain Data API для составления REST-запросов к индексированным блокам, транзакциям, адресам, токенам, NFT, активности на DEX, токенизированным акциям и актуальности наборов данных. Чтобы выбрать набор данных и проверить его доступность в сетях, начните с [каталога наборов данных](https://docs.blockvectra.com/ru/datasets/); для получения балансов токенов кошелька и истории переводов следуйте [руководству по активам кошелька](https://docs.blockvectra.com/en/guides/wallet-assets/).

* **Базовый URL**: `https://api.blockvectra.com/v1/data` — каждый маршрут, кроме `/chains`, предваряется идентификатором сети (например, `https://api.blockvectra.com/v1/data/{chain}/…`)
* **Протокол**: HTTP `GET` (плюс `POST` для пакетного поиска токенов по адресу `/{chain}/tokens:batch`), ответы в формате JSON
* **Аутентификация**: требуется API key — передавайте свой ключ в заголовке запроса `x-api-key`. Запросы учитываются и тарифицируются в Compute Units (CU); тарифицируются только успешные ответы 2xx
* **Ethereum**: покрытие данных определяется значением `coverage.from_block` в `GET /v1/data/chains` и охватывает меньший набор данных — см. [Поддерживаемые сети → Ethereum](https://docs.blockvectra.com/ru/chains/#ethereum)

Веса CU для Data API перечислены на странице [Цены](https://blockvectra.com/ru/pricing/) и возвращаются методом `GET /v1/plans`. Примеры запросов и форматы ответов см. в разделе [Быстрый старт → Вызовы Data API](https://docs.blockvectra.com/ru/quickstart/#4-call-the-data-api). Информацию о версионировании путей, правилах обратной совместимости и рекомендациях по SDK см. в разделе [Версионирование и совместимость API](https://docs.blockvectra.com/ru/api/versioning/).

## Сети

Data API предоставляет индексированные данные отдельно для каждой сети: `https://api.blockvectra.com/v1/data/{chain}/…`.

Доступные наборы данных и возможности различаются в зависимости от сети; полную матрицу возможностей см. в разделе [Поддерживаемые сети](https://docs.blockvectra.com/ru/chains/). Запрос `GET https://api.blockvectra.com/v1/data/chains` возвращает параметры `features`, `coverage`, `finality` и `limits` для каждой сети. Запросы за пределами покрытия набора данных возвращают HTTP `422 no_coverage` (не тарифицируется); неизвестная или непубличная сеть возвращает HTTP `404` с `error.code` `not_found` (не тарифицируется; имена сетей должны быть указаны точными слагами в нижнем регистре).

## Ошибки

Каждый ответ с ошибкой имеет вид `{"error":{"code","message"}}`; только `409 not_indexed_yet` может дополнительно содержать `indexed_through` (наивысший проиндексированный блок в этой сети), и это поле отсутствует, если у сети еще нет проиндексированных данных. Коды, с которыми клиенты сталкиваются чаще всего:

| Статус | `error.code`           | Значение                                                                                                                                                                                                                       | Действие                                                                                                                                                                                                                             |
| ------ | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `402`  | `insufficient_balance` | Платный баланс или бесплатный грант исчерпан; если баланс известен, `error.data` содержит `balance_units` и `balance_cu` (не тарифицируется)                                                                                   | Пополните баланс ончейн на [странице биллинга](https://console.blockvectra.com/billing/) в консоли или дождитесь обновления бесплатного лимита                                                                                       |
| `404`  | `not_found`            | Неизвестная или непубличная сеть `{chain}`, либо объект не существует                                                                                                                                                          | Исправьте запрос                                                                                                                                                                                                                     |
| `409`  | `not_indexed_yet`      | Запрос обращается к блоку выше `as_of_block` (новейший полностью записанный блок; содержит `indexed_through`), хеш указывает на блок выше `as_of_block`, либо у сети еще нет проиндексированных данных (без `indexed_through`) | При наличии `indexed_through` выполняйте опрос, пока ваш блок или `to_block` не станет меньше или равен ему; без него подождите, пока сеть начнет индексацию (поле `coverage.has_data` в `GET /v1/data/chains` показывает состояние) |
| `422`  | `no_coverage`          | Постоянное отсутствие данных: сеть не поддерживает эту возможность, либо блок находится раньше начала покрытия индексации/трассировки                                                                                          | Измените запрос; повторная попытка не поможет                                                                                                                                                                                        |
| `429`  | `rate_limited`         | Превышен лимит CU для ключа (ответ содержит `Retry-After`) или лимит вызовов для аккаунта (без `Retry-After`); не тарифицируется                                                                                               | Повторите попытку через `Retry-After` секунд                                                                                                                                                                                         |
| `429`  | `cost_exceeds_burst`   | Один запрос требует больше CU, чем пиковая емкость ключа; без `Retry-After` (не тарифицируется)                                                                                                                                | Разделите запрос; повторная отправка в исходном виде не будет успешной                                                                                                                                                               |
| `503`  | `unavailable`          | Временно недоступно; ответ содержит `Retry-After`. Также возвращается для исторических запросов в сети, где `coverage.from_block` в данный момент имеет значение `null`                                                        | Повторите попытку через `Retry-After` секунд                                                                                                                                                                                         |
| `503`  | `gateway_overloaded`   | Достигнут лимит параллельных запросов аккаунта по всем его ключам и сетям, либо сервис временно перегружен; `Retry-After: 1` (не тарифицируется)                                                                               | Уменьшите число параллельных запросов по всему аккаунту и подождите `Retry-After` секунд перед повторной попыткой                                                                                                                    |

## Список эндпоинтов

Ниже представлена оригинальная спецификация на английском языке.

<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>
