Быстрый старт

Узнайте высоту блока без ключа, создайте API key, выполните первый аутентифицированный запрос, а затем запрашивайте активность акций, выгружайте логи или принимайте вебхуки.

Разработчики и AI Agent могут протестировать публичный RPC без ключа, а затем создать ключ для продолжения работы.

1. Получение высоты блока без ключа

Вызовите публичный эндпоинт JSON-RPC для примера сети robinhood_mainnet без создания аккаунта и передачи API key:

curl -s "https://api.blockvectra.com/v1/robinhood_mainnet/public" \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'

Значение id: 1 в ответе соответствует этому запросу; result — шестнадцатеричная высота блока, которая может меняться между вызовами. Если ответ содержит error, проверьте его код и причину. См. бесплатные публичные эндпоинты RPC, где перечислены публичные методы, диапазоны истории и лимиты на IP.

2. Создание API key

Перейдите в консоль, войдите с помощью GitHub, Google или кошелька Ethereum (аккаунт создается при первом входе) и создайте API key. Секретный ключ отображается только один раз: сохраните его в надежном месте и задайте в переменной окружения BLOCKVECTRA_API_KEY. Не используйте его в клиентском коде браузера. Новые аккаунты получают 30,000,000 CU при регистрации — банковская карта не требуется.

У вас еще нет API key?

Если у вас есть кошелек Ethereum: следуйте руководству по программной регистрации, чтобы зарегистрироваться и создать API key с помощью подписи кошелька Ethereum без браузера. Если у вас нет кошелька: попросите пользователя войти на console.blockvectra.com, создать ключ и задать его в переменной окружения BLOCKVECTRA_API_KEY. Не просите пользователя вставлять ключ в чат.

3. Отправка первого аутентифицированного запроса

Запросите высоту блока той же сети с заголовком x-api-key. URL заканчивается названием сети, без завершающего слэша:

: "${BLOCKVECTRA_API_KEY:?Set BLOCKVECTRA_API_KEY first}"

curl -s "https://api.blockvectra.com/v1/robinhood_mainnet" \
  -H 'Content-Type: application/json' \
  -H "x-api-key: $BLOCKVECTRA_API_KEY" \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'

result снова содержит шестнадцатеричную высоту блока. Этот запрос расходует CU; см. справочник JSON-RPC для ознакомления с весами методов и кодами ошибок, а также Цены с актуальными тарифами. Новый ключ вступает в силу примерно через 5 секунд; если вы получаете invalid_api_key, подождите немного и повторите попытку. При возникновении других сбоев см. раздел Распространенные ошибки ниже.

4. Переход к бизнес-задачам

Справочник

API keys и баланс

Готовый стартовый шаблон: blockvectra/agent-quickstart

Каждый ключ выглядит как префикс rgw_, за которым следуют 64 шестнадцатеричных символа, например rgw_1f2e... (сокращено). Храните его в секрете — любой, у кого есть ключ, может расходовать ваш баланс.

При недостаточном балансе сервер возвращает HTTP 402 (код ошибки JSON-RPC -32020; Data API error.code insufficient_balance). Перейдите на страницу биллинга в консоли, чтобы проверить баланс и способы пополнения.

Тестирование без ключа

Вы можете сразу вызывать публичную конечную точку JSON-RPC без создания аккаунта или указания API key.

# Прямая публичная конечная точка:
curl -s "https://api.blockvectra.com/v1/robinhood_mainnet/public" \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'

# Или с шаблоном резервного API key (по умолчанию публичный, если BLOCKVECTRA_API_KEY не задан):
curl -s "https://api.blockvectra.com/v1/robinhood_mainnet/${BLOCKVECTRA_API_KEY:-public}" \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'

Конечная точка в примере ниже ограничена по частоте запросов с одного IP (3 запр/с, burst 20, макс. размер пакета 10). Запросы, превышающие лимиты, возвращают HTTP 429 с причиной public_rate_limit или public_pool_busy (с заголовком Retry-After); неподдерживаемые методы возвращают ошибку JSON-RPC -32601 (method_not_public).

Публичные конечные точки по сетям

  • Arbitrum One: https://api.blockvectra.com/v1/arb_mainnet/public — Чтение и отправка подписанных транзакций (eth_sendRawTransaction)
  • Base: https://api.blockvectra.com/v1/base_mainnet/public — Чтение и отправка подписанных транзакций (eth_sendRawTransaction)
  • BNB Smart Chain: https://api.blockvectra.com/v1/bsc_mainnet/public — Чтение и отправка подписанных транзакций (eth_sendRawTransaction)
  • Ethereum: https://api.blockvectra.com/v1/eth_mainnet/public — Чтение и отправка подписанных транзакций (eth_sendRawTransaction)
  • Ethereum Sepolia: https://api.blockvectra.com/v1/eth_sepolia/public — Чтение и отправка подписанных транзакций (eth_sendRawTransaction)
  • HyperEVM: https://api.blockvectra.com/v1/hyperevm_mainnet/public — Только для чтения
  • Polygon: https://api.blockvectra.com/v1/polygon_mainnet/public — Чтение и отправка подписанных транзакций (eth_sendRawTransaction)
  • Robinhood Chain: https://api.blockvectra.com/v1/robinhood_mainnet/public — Чтение и отправка подписанных транзакций (eth_sendRawTransaction)
  • Robinhood Chain Testnet: https://api.blockvectra.com/v1/robinhood_testnet/public — Чтение и отправка подписанных транзакций (eth_sendRawTransaction)

Следующие два публичных эндпоинта метаданных показывают статус сервиса и конфигурацию каждой сети; они не требуют API key и не тарифицируются.

Проверка статуса сервиса и состояния сетей

curl https://api.blockvectra.com/v1/status

Возвращает временную метку проверки checked_at, рабочий статус сервиса gateway.status, а также прогресс синхронизации узла sync, высоту головного блока и задержку head для каждой поддерживаемой сети:

{
  "checked_at": "2026-10-03T13:30:47Z",
  "gateway": {
    "status": "ok"
  },
  "chains": [
    {
      "chain": "bsc_mainnet",
      "name": "BNB Smart Chain",
      "chain_id": 56,
      "jsonrpc": true,
      "data": true,
      "data_features": [
        "blocks",
        "transactions",
        "address_transactions",
        "transfers",
        "token_metadata",
        "freshness"
      ],
      "data_status": "ok",
      "data_head_block": 125492675,
      "data_head_age_seconds": 3,
      "status": "ok",
      "sync": {
        "stage": "synced",
        "node_block": 125492676,
        "target_block": null
      },
      "head": {
        "block": 125492676,
        "time": "2026-10-03T13:30:45Z",
        "lag_seconds": 2
      }
    }
  ]
}

Запрос поддерживаемых сетей и политик методов

curl https://api.blockvectra.com/v1/chains

Возвращает chain_id каждой поддерживаемой сети, флаги возможностей для JSON-RPC, Data API и WebSocket, политики разрешенных и запрещенных методов (methods.allow и methods.deny), лимит диапазона блоков логов в одном запросе max_logs_block_range и окно исторического состояния state_window_blocks:

{
  "chains": [
    {
      "chain": "bsc_mainnet",
      "name": "BNB Smart Chain",
      "chain_id": 56,
      "jsonrpc": true,
      "data": true,
      "ws": false,
      "subscriptions": [],
      "methods": {
        "allow": [
          "eth_blockNumber",
          "eth_call",
          "eth_chainId",
          "eth_getLogs"
        ],
        "deny": [
          "eth_newFilter",
          "eth_subscribe",
          "eth_unsubscribe"
        ]
      },
      "max_logs_block_range": 1000,
      "state_window_blocks": 990000,
      "info": {}
    }
  ]
}

Выбор сети

Каждый эндпоинт BlockVectra привязан к определенной сети: запросы JSON-RPC содержат имя сети {chain} в пути URL, а запросы Data API начинаются с него. Список доступных на данный момент сетей и их идентификаторов см. в разделе Поддерживаемые сети.

Сеть{chain}Chain IDTracingПубличный эндпоинтWebSocketData APIЧисло методов с API keyWebhook-уведомленияОтправка транзакцийОтправка транзакций (публичная конечная точка без key)Окно истории состоянияМаксимальный диапазон блоков для eth_getLogsНаборы данных Data APIСвязанные тестовые сетиСвязанные руководства
arb_mainnet: RPC и Data APIarb_mainnet42161✓https://api.blockvectra.com/v1/arb_mainnet/publicНе поддерживаетсяДоступно43Поддерживается · Подтверждения 1–1 (по умолчанию 1)
Руководство по Webhook-уведомлениям
ПоддерживаетсяПоддерживаетсяИсторическое состояние за последние 6,000 блоков1,000 блоковБлоки, Транзакции, Транзакции адреса, Переводы, Метаданные токенов, Свежесть данныхНеизвестноНеизвестно
base_mainnet: RPC и Data APIbase_mainnet8453—https://api.blockvectra.com/v1/base_mainnet/publicНе поддерживаетсяДоступно39Поддерживается · Подтверждения 1–1 (по умолчанию 1)
Руководство по Webhook-уведомлениям
ПоддерживаетсяПоддерживаетсяИсторическое состояние за последние 10,000 блоков1,000 блоковБлоки, Транзакции, Транзакции адреса, Переводы, Метаданные токенов, Свежесть данныхНеизвестноBase
bsc_mainnet: RPC и Data APIbsc_mainnet56—https://api.blockvectra.com/v1/bsc_mainnet/publicНе поддерживаетсяДоступно25Поддерживается · Подтверждения 1–1 (по умолчанию 1)
Руководство по Webhook-уведомлениям
ПоддерживаетсяПоддерживаетсяИсторическое состояние за последние 100 блоков1,000 блоковБлоки, Транзакции, Транзакции адреса, Переводы, Метаданные токенов, Свежесть данныхНеизвестноНеизвестно
Ethereum: RPC и Data APIeth_mainnet1✓https://api.blockvectra.com/v1/eth_mainnet/publicНе поддерживаетсяДоступно38Поддерживается · Подтверждения 1–1 (по умолчанию 1)
Руководство по Webhook-уведомлениям
ПоддерживаетсяПоддерживаетсяИсторическое состояние за последние 250,000 блоков1,000 блоковБлоки, Транзакции, Транзакции адреса, Переводы, Метаданные токенов, Свежесть данныхНеизвестноНеизвестно
eth_sepolia: RPC и Data APIeth_sepolia11155111—https://api.blockvectra.com/v1/eth_sepolia/publicНе поддерживаетсяДоступно29Поддерживается · Подтверждения 1–1 (по умолчанию 1)
Руководство по Webhook-уведомлениям
ПоддерживаетсяПоддерживаетсяНеизвестно1,000 блоковБлоки, Транзакции, Транзакции адреса, Переводы, Метаданные токенов, Свежесть данныхНеизвестноНеизвестно
HyperEVM: RPC и Data APIhyperevm_mainnet999—https://api.blockvectra.com/v1/hyperevm_mainnet/publicНе поддерживаетсяДоступно24Поддерживается · Подтверждения 1–1 (по умолчанию 1)
Руководство по Webhook-уведомлениям
Не поддерживаетсяНе поддерживаетсяНеизвестно1,000 блоковБлоки, Транзакции, Транзакции адреса, Переводы, Метаданные токенов, Балансы, Держатели, NFT, Свежесть данныхНеизвестноHyperEVM backfill and polling
polygon_mainnet: RPC и Data APIpolygon_mainnet137✓https://api.blockvectra.com/v1/polygon_mainnet/publicНе поддерживаетсяДоступно43Поддерживается · Подтверждения 1–1 (по умолчанию 1)
Руководство по Webhook-уведомлениям
ПоддерживаетсяПоддерживаетсяИсторическое состояние за последние 126 блоков1,000 блоковБлоки, Транзакции, Транзакции адреса, Переводы, Метаданные токенов, Свежесть данныхНеизвестноНеизвестно
Robinhood Chain: RPC и Data APIrobinhood_mainnet4663✓https://api.blockvectra.com/v1/robinhood_mainnet/publicПоддерживается (newHeads, logs)Доступно43Поддерживается · Подтверждения 1–1 (по умолчанию 1)
Руководство по Webhook-уведомлениям
ПоддерживаетсяПоддерживаетсяИсторическое состояние за последние 900 блоков1,000 блоковБлоки, Транзакции, Транзакции адреса, Переводы, Метаданные токенов, Балансы, Держатели, NFT, Свопы DEX, Цены DEX, Токенизированные акции, Трассировки, Свежесть данныхНеизвестноRobinhood Chain
Stock token multiplier

Tokenized stocks
robinhood_testnet: RPCrobinhood_testnet46630✓https://api.blockvectra.com/v1/robinhood_testnet/publicПоддерживается (newHeads, logs)Пока недоступно43Поддерживается · Подтверждения 1–1 (по умолчанию 1)
Руководство по Webhook-уведомлениям
ПоддерживаетсяПоддерживаетсяИсторическое состояние за последние 1,023 блоков1,000 блоковНе поддерживаетсяНеизвестноTestnet faucet
Robinhood Chain Testnet starter

Следующие шаги с API key

arb_mainnet

eth_getLogs

set -eu
MAX_LOGS_BLOCK_RANGE=1000
head=$(curl -fsS 'https://api.blockvectra.com/v1/arb_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' | python3 -c 'import json,sys; print(int(json.load(sys.stdin)["result"],16))')
from=$((head >= MAX_LOGS_BLOCK_RANGE ? head - MAX_LOGS_BLOCK_RANGE + 1 : 0))
from_hex=$(printf '0x%x' "$from")
to_hex=$(printf '0x%x' "$head")
curl -fsS 'https://api.blockvectra.com/v1/arb_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' \
  -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"$from_hex\",\"toBlock\":\"$to_hex\"}]}"
eth_getLogs

Data API

curl -fsS 'https://api.blockvectra.com/v1/data/arb_mainnet/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"
Data API

Создать подписку Webhook · Создать подписку Webhook · Использование и CU · Пополнить баланс

base_mainnet

eth_getLogs

set -eu
MAX_LOGS_BLOCK_RANGE=1000
head=$(curl -fsS 'https://api.blockvectra.com/v1/base_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' | python3 -c 'import json,sys; print(int(json.load(sys.stdin)["result"],16))')
from=$((head >= MAX_LOGS_BLOCK_RANGE ? head - MAX_LOGS_BLOCK_RANGE + 1 : 0))
from_hex=$(printf '0x%x' "$from")
to_hex=$(printf '0x%x' "$head")
curl -fsS 'https://api.blockvectra.com/v1/base_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' \
  -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"$from_hex\",\"toBlock\":\"$to_hex\"}]}"
eth_getLogs

Data API

curl -fsS 'https://api.blockvectra.com/v1/data/base_mainnet/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"
Data API

Создать подписку Webhook · Создать подписку Webhook · Использование и CU · Пополнить баланс

bsc_mainnet

eth_getLogs

set -eu
MAX_LOGS_BLOCK_RANGE=1000
head=$(curl -fsS 'https://api.blockvectra.com/v1/bsc_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' | python3 -c 'import json,sys; print(int(json.load(sys.stdin)["result"],16))')
from=$((head >= MAX_LOGS_BLOCK_RANGE ? head - MAX_LOGS_BLOCK_RANGE + 1 : 0))
from_hex=$(printf '0x%x' "$from")
to_hex=$(printf '0x%x' "$head")
curl -fsS 'https://api.blockvectra.com/v1/bsc_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' \
  -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"$from_hex\",\"toBlock\":\"$to_hex\"}]}"
eth_getLogs

Data API

curl -fsS 'https://api.blockvectra.com/v1/data/bsc_mainnet/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"
Data API

Создать подписку Webhook · Создать подписку Webhook · Использование и CU · Пополнить баланс

Ethereum

eth_getLogs

set -eu
MAX_LOGS_BLOCK_RANGE=1000
head=$(curl -fsS 'https://api.blockvectra.com/v1/eth_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' | python3 -c 'import json,sys; print(int(json.load(sys.stdin)["result"],16))')
from=$((head >= MAX_LOGS_BLOCK_RANGE ? head - MAX_LOGS_BLOCK_RANGE + 1 : 0))
from_hex=$(printf '0x%x' "$from")
to_hex=$(printf '0x%x' "$head")
curl -fsS 'https://api.blockvectra.com/v1/eth_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' \
  -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"$from_hex\",\"toBlock\":\"$to_hex\"}]}"
eth_getLogs

Data API

curl -fsS 'https://api.blockvectra.com/v1/data/eth_mainnet/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"
Data API

Создать подписку Webhook · Создать подписку Webhook · Использование и CU · Пополнить баланс

eth_sepolia

eth_getLogs

set -eu
MAX_LOGS_BLOCK_RANGE=1000
head=$(curl -fsS 'https://api.blockvectra.com/v1/eth_sepolia' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' | python3 -c 'import json,sys; print(int(json.load(sys.stdin)["result"],16))')
from=$((head >= MAX_LOGS_BLOCK_RANGE ? head - MAX_LOGS_BLOCK_RANGE + 1 : 0))
from_hex=$(printf '0x%x' "$from")
to_hex=$(printf '0x%x' "$head")
curl -fsS 'https://api.blockvectra.com/v1/eth_sepolia' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' \
  -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"$from_hex\",\"toBlock\":\"$to_hex\"}]}"
eth_getLogs

Data API

curl -fsS 'https://api.blockvectra.com/v1/data/eth_sepolia/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"
Data API

Создать подписку Webhook · Создать подписку Webhook · Использование и CU · Пополнить баланс

HyperEVM

eth_getLogs

set -eu
MAX_LOGS_BLOCK_RANGE=1000
head=$(curl -fsS 'https://api.blockvectra.com/v1/hyperevm_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' | python3 -c 'import json,sys; print(int(json.load(sys.stdin)["result"],16))')
from=$((head >= MAX_LOGS_BLOCK_RANGE ? head - MAX_LOGS_BLOCK_RANGE + 1 : 0))
from_hex=$(printf '0x%x' "$from")
to_hex=$(printf '0x%x' "$head")
curl -fsS 'https://api.blockvectra.com/v1/hyperevm_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' \
  -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"$from_hex\",\"toBlock\":\"$to_hex\"}]}"
eth_getLogs

Data API

curl -fsS 'https://api.blockvectra.com/v1/data/hyperevm_mainnet/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"
Data API

Создать подписку Webhook · Создать подписку Webhook · Использование и CU · Пополнить баланс

polygon_mainnet

eth_getLogs

set -eu
MAX_LOGS_BLOCK_RANGE=1000
head=$(curl -fsS 'https://api.blockvectra.com/v1/polygon_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' | python3 -c 'import json,sys; print(int(json.load(sys.stdin)["result"],16))')
from=$((head >= MAX_LOGS_BLOCK_RANGE ? head - MAX_LOGS_BLOCK_RANGE + 1 : 0))
from_hex=$(printf '0x%x' "$from")
to_hex=$(printf '0x%x' "$head")
curl -fsS 'https://api.blockvectra.com/v1/polygon_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' \
  -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"$from_hex\",\"toBlock\":\"$to_hex\"}]}"
eth_getLogs

Data API

curl -fsS 'https://api.blockvectra.com/v1/data/polygon_mainnet/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"
Data API

Создать подписку Webhook · Создать подписку Webhook · Использование и CU · Пополнить баланс

Robinhood Chain

eth_getLogs

set -eu
MAX_LOGS_BLOCK_RANGE=1000
head=$(curl -fsS 'https://api.blockvectra.com/v1/robinhood_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' | python3 -c 'import json,sys; print(int(json.load(sys.stdin)["result"],16))')
from=$((head >= MAX_LOGS_BLOCK_RANGE ? head - MAX_LOGS_BLOCK_RANGE + 1 : 0))
from_hex=$(printf '0x%x' "$from")
to_hex=$(printf '0x%x' "$head")
curl -fsS 'https://api.blockvectra.com/v1/robinhood_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' \
  -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"$from_hex\",\"toBlock\":\"$to_hex\"}]}"
eth_getLogs

Data API

curl -fsS 'https://api.blockvectra.com/v1/data/robinhood_mainnet/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"
Data API

WebSocket

echo '{"jsonrpc":"2.0","id":1,"method":"eth_subscribe","params":["newHeads"]}' | websocat --no-close -H="x-api-key: $BLOCKVECTRA_API_KEY" 'wss://api.blockvectra.com/v1/robinhood_mainnet'
WebSocket

Создать подписку Webhook · Создать подписку Webhook · Использование и CU · Пополнить баланс

robinhood_testnet

eth_getLogs

set -eu
MAX_LOGS_BLOCK_RANGE=1000
head=$(curl -fsS 'https://api.blockvectra.com/v1/robinhood_testnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' | python3 -c 'import json,sys; print(int(json.load(sys.stdin)["result"],16))')
from=$((head >= MAX_LOGS_BLOCK_RANGE ? head - MAX_LOGS_BLOCK_RANGE + 1 : 0))
from_hex=$(printf '0x%x' "$from")
to_hex=$(printf '0x%x' "$head")
curl -fsS 'https://api.blockvectra.com/v1/robinhood_testnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' \
  -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"$from_hex\",\"toBlock\":\"$to_hex\"}]}"
eth_getLogs

WebSocket

echo '{"jsonrpc":"2.0","id":1,"method":"eth_subscribe","params":["newHeads"]}' | websocat --no-close -H="x-api-key: $BLOCKVECTRA_API_KEY" 'wss://api.blockvectra.com/v1/robinhood_testnet'
WebSocket

Создать подписку Webhook · Создать подписку Webhook · Использование и CU · Пополнить баланс

HyperEVM

Блоки HyperEVM включают системные транзакции HyperCore (с адреса 0x2222…2222 или 0x20…, gasPrice 0).

Отправка транзакций в этой сети пока не поддерживается (eth_sendRawTransaction возвращает -32601 method_not_allowed); методы чтения работают в обычном режиме.

Все примеры на этой странице используют robinhood_mainnet.

Совет: выберите в матрице выше сеть, поддерживающую нужный сервис, метод и окно истории для примера, а затем замените robinhood_mainnet на соответствующее имя {chain}. Один и тот же API key работает во всех поддерживаемых сетях.

Другие варианты аутентификации и примеры на разных языках

Эндпоинты JSON-RPC привязаны к сети: POST /v1/{chain}/{api_key} с ключом в пути или POST /v1/{chain} с ключом в заголовке x-api-key. {chain} — это имя сети, которое также используется в Data API; для Robinhood Chain это robinhood_mainnet, поэтому эндпоинт на этой странице имеет вид https://api.blockvectra.com/v1/robinhood_mainnet. Вызов eth_subscribe по HTTP возвращает -32601; подписки WebSocket перечислены для каждой сети в разделе Поддерживаемые сети. API отправляет заголовок Access-Control-Allow-Origin: *, однако вам следует хранить свой API key в секрете и выполнять запросы из бэкенд-сервиса, а не из клиентского кода браузера.

Вы можете передать ключ одним из трех способов: в пути URL (POST /v1/{chain}/{api_key}, при этом используется только ключ из пути, а оба заголовка игнорируются), в заголовке x-api-key или в заголовке Authorization: Bearer <api_key>.

Ключ в пути URL

: "${BLOCKVECTRA_API_KEY:?Set BLOCKVECTRA_API_KEY first}"

curl -s "https://api.blockvectra.com/v1/robinhood_mainnet/$BLOCKVECTRA_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'

Ключ в заголовке запроса

: "${BLOCKVECTRA_API_KEY:?Set BLOCKVECTRA_API_KEY first}"

curl -s "https://api.blockvectra.com/v1/robinhood_mainnet" \
  -H 'Content-Type: application/json' \
  -H "x-api-key: $BLOCKVECTRA_API_KEY" \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'

Без завершающего слэша

При передаче ключа в заголовке вызывайте https://api.blockvectra.com/v1/robinhood_mainnet точно так, как показано: URL заканчивается именем сети, без завершающего слэша. JSON-RPC обслуживается только по путям /v1/{chain} и /v1/{chain}/{api_key}. Завершающий слэш (например, /v1/{chain}/) или запрос без сегмента сети (например, /v1 или /v1/) возвращает 404 с пустым телом.

Заголовок Authorization: Bearer <api_key> также поддерживается. При запросе POST /v1/{chain} непустой заголовок x-api-key имеет приоритет перед Bearer, а Bearer используется только в том случае, если x-api-key отсутствует или пуст. Формат с ключом в пути игнорирует оба заголовка.

Пакетные запросы

Отправьте массив, чтобы выполнить несколько вызовов в одном запросе (до 100 вызовов в пакете). Обратите внимание, что каждый API key имеет корзину CU (пополнение cu_per_sec, емкость burst_cu — по умолчанию 400 CU/s и всплеск (burst) 1,600 CU; отображается для каждого ключа в таблице Keys в консоли); отдельный запрос (включая весь пакет JSON-RPC), суммарный объем CU которого превышает емкость burst ключа, отклоняется с ошибкой -32022 request_exceeds_burst даже при соблюдении лимита в 100 вызовов на пакет; разделите его на более мелкие пакеты. В этом примере за один цикл запроса считываются идентификатор сети и баланс аккаунта:

curl -s "https://api.blockvectra.com/v1/robinhood_mainnet" \
  -H 'Content-Type: application/json' \
  -H "x-api-key: $BLOCKVECTRA_API_KEY" \
  -d '[
    {"jsonrpc":"2.0","id":1,"method":"eth_chainId"},
    {"jsonrpc":"2.0","id":2,"method":"eth_getBalance","params":["0x1111111111111111111111111111111111111111","latest"]}
  ]'

Ответы возвращаются в виде массива в том же порядке, что и запросы, сопоставляясь по полю id.

Если сервер отклоняет пакет целиком (недостаточный баланс, ограничение частоты запросов, превышение burst-лимита или превышение допустимого размера пакета; см. Распространенные ошибки ниже), он возвращает один объект ошибки JSON-RPC вместо массива; в режиме viem batch: true это отображается как неинформативная ошибка UnknownRpcError, поэтому повторите одиночный вызов, чтобы увидеть фактическую ошибку.

Тарификация Compute Units (CU)

Каждый тарифицируемый вызов расходует Compute Units (CU): простые вызовы, такие как eth_blockNumber или eth_chainId, стоят меньше всего, стандартные операции чтения вроде eth_getBlockByNumber стоят немного больше, более тяжелые вызовы, такие как eth_call или eth_getLogs, стоят еще дороже, а методы трассировки выполнения (например, debug_traceTransaction) обходятся дороже всего. Плата за использование списывается с аккаунта за каждый почасовой период с округлением в меньшую сторону до целых расчетных единиц (1 единица = 1,000 CU), а остаток переносится на следующий период (таким образом, суммарно за все периоды списывается floor(всего CU / 1,000)); расчет происходит примерно через 15 минут после окончания периода. Например: 508 CU перенесенных + 2557 CU потребленных = 3065 CU, в результате чего списываются 3 расчетные единицы и 65 CU переносятся на следующий период. Актуальные цены см. в разделе Цены.

Полная таблица весов каждого метода и коды ошибок представлены в разделе Справочник API → JSON-RPC — на этой странице рассматривается только формат запросов.

Распространенные ошибки

Что вы сделалиЧто возвращаетсяДействие
Неизвестная или еще не открытая публично сетьHTTP 404 с JSON-телом error.data.reason: "unknown_chain"Проверьте имя сети в URL
Запрос без сегмента сети (например, /v1 или /v1/)HTTP 404 с пустым теломУкажите имя сети в URL (/v1/{chain})
API key отсутствует, неизвестен или отключенHTTP 401, код JSON-RPC -32024 (missing_api_key или invalid_api_key)Используйте действующий активный API key (новые или смененные ключи вступают в силу на всех инстансах примерно в течение 5 секунд; в это время они могут возвращать 401 invalid_api_key или 503 -32021 (с заголовком Retry-After), если биллинговое состояние временно не подтверждено, поэтому подождите немного и повторите попытку)
Баланс равен нулю или отрицательныйHTTP 402, код JSON-RPC -32020Пополните баланс или дождитесь бесплатного начисления
Запросы отправляются слишком часто (ограничение частоты или временная перегрузка)HTTP 429 (или 200), код JSON-RPC -32005Повторите попытку позже (соблюдайте Retry-After при наличии)
Отдельный запрос или пакет превышает burst-емкость ключа (burst_cu, по умолчанию 1,600 CU; скорость по умолчанию 400 CU/s), либо пакет бесплатного плана превышает лимит вызовов/с (25 вызовов/с)HTTP 429, код JSON-RPC -32022 (request_exceeds_burst)Разделите запрос на более мелкие пакеты (в текущем виде он никогда не выполнится)
Вышестоящий узел временно недоступенHTTP 200, код JSON-RPC -32603 (upstream unavailable), не тарифицируетсяПовторите запрос
Историческое состояние за пределами окна состояния сети (см. state_window_blocks в GET /v1/chains)HTTP 200, код JSON-RPC -32011, не тарифицируетсяЗапросите более недавний блок
Транзакция или блок не найдены, либо ответ слишком велик; в Ethereum запросы блоков, квитанций и логов за пределами недавнего окна также возвращают -32000 "old data not available due to pruning" (не тарифицируется; см. Поддерживаемые сети → Ethereum)HTTP 200, код JSON-RPC -32000Измените запрос (проверьте хеш или номер блока; некорректные хеши трассировки возвращают ошибку "transaction not found")
Трейсер не разрешен, или превышен таймаут трассировки (вызовы debug_trace)HTTP 200, код JSON-RPC -32602, не тарифицируетсяИспользуйте разрешенный нативный трейсер (callTracer, flatCallTracer, prestateTracer, 4byteTracer, noopTracer или опустите параметр) и таймаут ≤ 30 с
Метод не разрешен списком методов данной сети (см. Поддерживаемые сети)HTTP 200, код JSON-RPC -32601, не тарифицируетсяВызывайте только разрешенные для сети методы
Некорректный синтаксис JSON в теле запросаHTTP 200, код JSON-RPC -32700, не тарифицируетсяИсправьте синтаксис JSON в запросе
Более 100 вызовов в одном пакетеHTTP 200, код JSON-RPC -32600 (batch too large), не тарифицируетсяРазделите пакет так, чтобы в нем было не более 100 вызовов

Перечисленные выше отклоненные запросы никогда не тарифицируются. За каждый принятый вызов, получивший ответ, взимается плата в соответствии с опубликованным весом метода в CU; в таблице кодов ошибок перечислены случаи, которые не тарифицируются (см. колонку Billed в разделе Коды ошибок).

Вызовы Data API

Data API предоставляет доступ к данным блокчейна только для чтения (блоки, транзакции, балансы, держатели, активность на DEX и многое другое) в формате REST/JSON. Все маршруты, за исключением GET https://api.blockvectra.com/v1/data/chains, содержат префикс с идентификатором сети: robinhood_mainnet — это идентификатор сети (поле chain, возвращаемое эндпоинтом /chains и в объекте meta), используемый во всех приведенных ниже путях. Эндпоинт GET https://api.blockvectra.com/v1/data/chains возвращает список только публичных сетей и только поле {"data": [...]} (без meta и next_cursor). Запросы измеряются и тарифицируются в Compute Units (CU); тарифицируются только успешные ответы 2xx.

Для каждого запроса требуется тот же API key, что и для JSON-RPC — передавайте его в заголовке x-api-key. Каждый успешный ответ, привязанный к сети, использует единую структуру обертки: data (полезная нагрузка), next_cursor (непрозрачная строка, присутствует только при наличии следующей страницы — в противном случае ключ отсутствует вовсе, никогда не равен null) и meta (chain, chain_slug (верхний регистр chain), chain_external_id, as_of_block, safe_block, finalized_block, coverage, refreshed_at; refreshed_at может быть null, что означает неизвестное время обновления данных и необходимость считать их устаревшими — эндпоинты на основе блоков всегда возвращают значение). Ответы с ошибками обычно содержат {"error":{"code","message"}} — 409 not_indexed_yet дополнительно возвращает indexed_through (наибольший проиндексированный блок). Неизвестная или непубличная сеть возвращает HTTP 404 с error.code not_found (не тарифицируется; имена сетей должны быть точными слагами в нижнем регистре); отсутствующий, неизвестный или отключенный API key возвращает HTTP 401 с error.code missing_api_key или invalid_api_key. Запросы, превысившие лимит частоты, возвращают HTTP 429 (error.code rate_limited, data.reason: "key_rate_limit"), а при исчерпании баланса возвращается HTTP 402 (error.code insufficient_balance); оба случая не тарифицируются. Значения, которые могут превышать 2^53 (балансы, объемы токенов), передаются в виде десятичных строк, а не JSON-чисел.

Получение блока по номеру:

curl -s "https://api.blockvectra.com/v1/data/robinhood_mainnet/blocks/72838701" \
  -H "x-api-key: $BLOCKVECTRA_API_KEY"
{
  "data": {
    "number": 72838701,
    "hash": "0x9f2c1e7a4b6d3f805e1c9a72b4d6f1e0a3c8b5d7e2f4a1c6b9d3e7f0a2c4b6d8",
    "parent_hash": "0x1a3c5e7f9b1d3f5a7c9e1b3d5f7a9c1e3b5d7f9a1c3e5b7d9f1a3c5e7b9d1f3a",
    "timestamp": "2026-09-26T05:41:07Z",
    "miner": "0x00000000000000000000000000000000000a4b05",
    "gas_limit": 32000000,
    "gas_used": 4821932,
    "base_fee_per_gas": "100000000",
    "state_root": "0x2b4d6f8a1c3e5b7d9f1a3c5e7b9d1f3a5c7e9b1d3f5a7c9e1b3d5f7a9c1e3b5d",
    "transactions_root": "0x3c5e7b9d1f3a5c7e9b1d3f5a7c9e1b3d5f7a9c1e3b5d7f9a1c3e5b7d9f1a3c5e",
    "receipts_root": "0x4d6f8a1c3e5b7d9f1a3c5e7b9d1f3a5c7e9b1d3f5a7c9e1b3d5f7a9c1e3b5d7f",
    "tx_count": 239,
    "size": 48213,
    "l1_block_number": null,
    "extra": {}
  },
  "meta": {
    "chain": "robinhood_mainnet",
    "chain_slug": "ROBINHOOD_MAINNET",
    "chain_external_id": "eip155:4663",
    "as_of_block": 72838957,
    "safe_block": 72838800,
    "finalized_block": 72838701,
    "coverage": "full",
    "refreshed_at": "2026-09-27T02:15:03Z"
  }
}

Номер блока выше проиндексированной вершины (as_of_block) возвращает 409 (error.code: "not_indexed_yet") с полем indexed_through, указывающим на наивысший проиндексированный блок — данные еще не готовы, повторите попытку позже. Номер блока, предшествующий покрываемой истории сети (coverage.from_block), возвращает 422 (error.code: "no_coverage"). В пределах диапазона покрытия номер блока на уровне или ниже as_of_block при отсутствии активной записи (никогда не индексировался или откатился в результате реорганизации) возвращает 404 (error.code: "not_found").

Проверка свежести данных (насколько каждый отслеживаемый набор данных отстает от вершины сети — полезно для страницы статуса или предварительной проверки перед отправкой запроса):

curl -s "https://api.blockvectra.com/v1/data/robinhood_mainnet/status/freshness" \
  -H "x-api-key: $BLOCKVECTRA_API_KEY"
{
  "data": [
    {
      "dataset": "blocks",
      "category": "raw",
      "max_block_number": 72838957,
      "max_day": null,
      "max_time": "2026-09-27T02:15:01Z",
      "seconds_behind": 0,
      "blocks_behind": null,
      "days_behind": null,
      "checked_at": "2026-09-27T02:15:07Z"
    }
  ],
  "meta": {
    "chain": "robinhood_mainnet",
    "chain_slug": "ROBINHOOD_MAINNET",
    "chain_external_id": "eip155:4663",
    "as_of_block": 72838957,
    "safe_block": 72838800,
    "finalized_block": 72838701,
    "coverage": "full",
    "refreshed_at": "2026-09-27T02:15:07Z"
  }
}

(Сокращено: в ответе возвращается по одной строке для каждого набора данных; показана только строка blocks. В строке traces также содержатся поля coverage_from_block, coverage_to_block и coverage_complete.)

Если данные о свежести для данной сети временно недоступны, возвращается 503 (error.code: "unavailable") вместо частичного результата; ответ содержит заголовок Retry-After (в секундах) — подождите указанное время перед повторным запросом.

Список балансов ERC-20 для адреса (снимок ненулевых балансов с сортировкой по токену):

curl -s "https://api.blockvectra.com/v1/data/robinhood_mainnet/addresses/0x1111111111111111111111111111111111111111/balances" \
  -H "x-api-key: $BLOCKVECTRA_API_KEY"
{
  "data": [
    { "token": "0x0bd7d308f8e1639fab988df18a8011f41eacad73", "balance": "185371464119396", "symbol": "WETH", "decimals": 18 },
    { "token": "0x2295f15bd4914ae9b4685f01d52f4e6f89bf8b03", "balance": "10000000000000000", "symbol": "WNVDA", "decimals": 18 }
  ],
  "meta": {
    "chain": "robinhood_mainnet",
    "chain_slug": "ROBINHOOD_MAINNET",
    "chain_external_id": "eip155:4663",
    "as_of_block": 72838957,
    "safe_block": 72838800,
    "finalized_block": 72838701,
    "coverage": "full",
    "refreshed_at": "2026-09-27T02:10:00Z"
  }
}

Для адреса без ненулевых балансов по-прежнему возвращается 200 с data: [] — никогда не 404. Передавайте параметр ?limit= (по умолчанию 50, максимум 500) и возвращаемый next_cursor для постраничной навигации.

Полный перечень эндпоинтов — блоки, транзакции, адреса, токены, NFT, DEX, токенизированные акции — доступен в разделе Справочник API → Data API.

Дополнительные материалы

FAQ

Какие сети поддерживаются?

Количество поддерживаемых сетей — 9: Arbitrum One, Base, BNB Smart Chain, Ethereum, Ethereum Sepolia, HyperEVM, Polygon, Robinhood Chain, Robinhood Chain Testnet. Список соответствует GET /v1/chains и обновляется при добавлении новых сетей. Текущий статус смотрите на странице статуса. Поддерживаемые сети →

Поддерживается ли WebSocket?

Вызов eth_subscribe по HTTP возвращает -32601; в сетях, где ws равен true в /v1/chains, eth_subscribe доступен через WebSocket. В остальных случаях выполняйте опрос через eth_getLogs. Поддерживаемые сети →

Можно ли запрашивать историческое состояние и трассировки?

Да, но это зависит от сети. Окно исторического состояния задается полем state_window_blocks в /v1/chains (значение null означает полную историю); доступность трассировок зависит от наличия методов debug_trace (например, debug_traceTransaction) в methods.allow для этой сети; максимальный диапазон блоков для одного запроса eth_getLogs определяется параметром max_logs_block_range. Каталог сетей и параметры для каждой сети →

Можно ли использовать один API key для всех сетей?

Да. Один API key работает для JSON-RPC во всех поддерживаемых сетях и для Data API в сетях с его поддержкой; ключ привязан к аккаунту, а не к конкретной сети. Руководство «Один ключ для множества сетей» →

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

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