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

Справочник запросов Blockchain Data API: REST-эндпоинты, аутентификация по API key, параметры, схемы ответов, ошибки и веса CU для индексированных данных блокчейна.

Обзор

Используйте этот справочник Blockchain Data API для составления REST-запросов к индексированным блокам, транзакциям, адресам, токенам, NFT, активности на DEX, токенизированным акциям и актуальности наборов данных. Чтобы выбрать набор данных и проверить его доступность в сетях, начните с каталога наборов данных; для получения балансов токенов кошелька и истории переводов следуйте руководству по активам кошелька.

  • Базовый 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

Веса CU для Data API перечислены на странице Цены и возвращаются методом GET /v1/plans. Примеры запросов и форматы ответов см. в разделе Быстрый старт → Вызовы Data API. Информацию о версионировании путей, правилах обратной совместимости и рекомендациях по SDK см. в разделе Версионирование и совместимость API.

Сети

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

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

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

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

Chain

МетодПутьОписание
GET/chainsList 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}/transactionsList a block's transactions
GET/{chain}/transactions/{hash}Get a transaction by hash

Status

МетодПутьОписание
GET/{chain}/status/freshnessFreshness and lag per dataset

Addresses

МетодПутьОписание
GET/{chain}/addresses/{address}/transactionsList an address's transactions
GET/{chain}/addresses/{address}/transfersList an address's token transfers
GET/{chain}/addresses/{address}/balancesList an address's ERC-20 balances

Tokens

МетодПутьОписание
GET/{chain}/tokens/{token}/transfersList a token contract's transfers
GET/{chain}/tokens/{token}/holdersList a token's holders
GET/{chain}/tokens/{token}Get token metadata
POST/{chain}/tokens:batchBatch get token metadata

NFTs

МетодПутьОписание
GET/{chain}/nfts/{contract}/{token_id}Get one NFT's owner/holders
GET/{chain}/nftsList NFTs owned by an address

DEX

МетодПутьОписание
GET/{chain}/dex/swapsList DEX swaps by pool or token
GET/{chain}/dex/pricesDaily DEX token prices

Stocks

МетодПутьОписание
GET/{chain}/stocksDaily leaderboard of tokenized stocks
GET/{chain}/stocks/{token}Get one tokenized stock

Traces

МетодПутьОписание
GET/{chain}/blocks/{number}/tracesHistorical callTracer trace tree for a whole block
GET/{chain}/transactions/{hash}/traceHistorical callTracer trace tree for one transaction

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

Последнее обновление:

На этой странице