# Hızlı Başlangıç

> Source: https://docs.blockvectra.com/tr/quickstart/

Geliştiriciler ve yapay zeka ajanları, genel RPC'yi bir anahtar olmadan deneyebilir, ardından devam etmek için bir anahtar oluşturabilir.

## 1. Anahtar olmadan bir blok yüksekliğini okuyun

Örnek zincir `robinhood_mainnet` için genel JSON-RPC uç noktasını bir hesap oluşturmadan veya bir API key sağlamadan çağırın:

```bash
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":[]}'
```

Yanıttaki `id: 1` bu istekle eşleşir; `result` onaltılık bir blok yüksekliğidir ve çağrılar arasında değişebilir. Yanıt `error` içeriyorsa kodunu ve nedenini kontrol edin. Genel yöntemler, geçmiş aralıkları ve IP başına limitler için [ücretsiz genel RPC uç noktaları](https://blockvectra.com/tr/free/#public-rpc) sayfasına bakın.

## 2. Bir API key oluşturun

[Konsol](https://console.blockvectra.com/login/?next=%2Fkeys%2F)'a gidin, GitHub, Google veya bir Ethereum cüzdanı ile giriş yapın (hesabınız ilk girişte oluşturulur) ve bir API key oluşturun. Gizli anahtar yalnızca bir kez görüntülenir: Güvenli bir şekilde saklayın ve `BLOCKVECTRA_API_KEY` ortam değişkeni olarak ayarlayın. İstemci tarafı tarayıcı kodundan uzak tutun. Yeni hesaplar kaydolduklarında 30,000,000 CU kazanır — kredi kartı gerekmez.

> **Henüz bir API key'iniz yok mu?**
>
> Bir Ethereum cüzdanınız varsa: Tarayıcı olmadan bir Ethereum cüzdan imzası kullanarak kaydolmak ve bir API key oluşturmak için [Programatik kayıt rehberini](https://docs.blockvectra.com/tr/guides/programmatic-signup/) takip edin. Bir cüzdanınız yoksa: Kullanıcıdan [console.blockvectra.com](https://console.blockvectra.com/login/?next=%2Fkeys%2F) adresinde oturum açmasını, bir anahtar oluşturmasını ve bunu `BLOCKVECTRA_API_KEY` ortam değişkeni olarak ayarlamasını isteyin. Kullanıcıdan anahtarı sohbete yapıştırmasını istemeyin.


## 3. İlk kimlik doğrulamalı çağrınızı gönderin

Aynı zincirin blok yüksekliğini `x-api-key` başlığıyla okuyun. URL, sonunda eğik çizgi olmadan zincir adıyla biter:

```bash
: "${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` yine onaltılık bir blok yüksekliğidir. Bu istek CU tüketir; yöntem ağırlıkları ve hata kodları için [JSON-RPC referansına](https://docs.blockvectra.com/tr/api/json-rpc/), güncel fiyatlar için [Fiyatlandırma](https://blockvectra.com/tr/pricing/) sayfasına bakın. Yeni bir anahtar yaklaşık 5 saniye içinde yürürlüğe girer; `invalid_api_key` alırsanız biraz bekleyip yeniden deneyin. Diğer aksaklıklar için aşağıdaki [Sık karşılaşılan hatalar](#common-errors) bölümüne bakın.

## 4. Bir iş göreviyle devam edin

* [Robinhood Chain üzerindeki zincir üstü tokenlaştırılmış hisse senedi aktivitesini sorgulayın](https://docs.blockvectra.com/tr/guides/stocks/)
* [HyperEVM loglarını parçalar halinde geriye dönük çekin](https://docs.blockvectra.com/tr/guides/hyperevm-backfill/)
* [Webhook'lar ile cüzdan aktivitesini ve token transferlerini alın](https://docs.blockvectra.com/tr/guides/webhook-push/)

## Referans

### API key'leri ve bakiye

Eksiksiz başlangıç şablonu: [blockvectra/agent-quickstart](https://github.com/blockvectra/agent-quickstart)

Her anahtar, `rgw_` ve ardından gelen 64 onaltılık karakterden oluşur; örneğin
`rgw_1f2e...` (kısaltılmış). Gizli tutun — anahtara sahip olan herkes bakiyenizi harcayabilir.

> Bakiyeniz yetersiz olduğunda sunucu HTTP 402 döndürür (JSON-RPC hata kodu `-32020`; Data API `error.code` `insufficient_balance`). Bakiyenizi ve bakiye yükleme yöntemlerini kontrol etmek için konsol [Faturalandırma sayfasına](https://console.blockvectra.com/billing/) gidin.


### Anahtar olmadan deneyin

Bir hesap oluşturmadan veya bir API key sağlamadan genel JSON-RPC uç noktasını hemen çağırabilirsiniz. Aşağıdaki örnekteki uç nokta IP başına oran sınırlıdır (3 istek/sn, ani istek 20, toplu istek maksimum 10). Oran sınırlarını aşan istekler `public_rate_limit` veya `public_pool_busy` nedeni ile HTTP 429 döndürür (bir `Retry-After` başlığı ile); desteklenmeyen yöntemler JSON-RPC hatası `-32601` (`method_not_public`).

```bash
# Doğrudan genel uç nokta:
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":[]}'

# Veya API key geri dönüş (fallback) modelini kullanarak (BLOCKVECTRA_API_KEY ayarlanmadığında varsayılan olarak genel):
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":[]}'
```

#### Zincire göre genel uç noktalar

- Arbitrum One: https://api.blockvectra.com/v1/arb_mainnet/public — İmzalanmış işlemleri okuma ve yayınlama (eth_sendRawTransaction)
- Base: https://api.blockvectra.com/v1/base_mainnet/public — İmzalanmış işlemleri okuma ve yayınlama (eth_sendRawTransaction)
- BNB Smart Chain: https://api.blockvectra.com/v1/bsc_mainnet/public — İmzalanmış işlemleri okuma ve yayınlama (eth_sendRawTransaction)
- Ethereum: https://api.blockvectra.com/v1/eth_mainnet/public — İmzalanmış işlemleri okuma ve yayınlama (eth_sendRawTransaction)
- Ethereum Sepolia: https://api.blockvectra.com/v1/eth_sepolia/public — İmzalanmış işlemleri okuma ve yayınlama (eth_sendRawTransaction)
- HyperEVM: https://api.blockvectra.com/v1/hyperevm_mainnet/public — Salt okunur
- Polygon: https://api.blockvectra.com/v1/polygon_mainnet/public — İmzalanmış işlemleri okuma ve yayınlama (eth_sendRawTransaction)
- Robinhood Chain: https://api.blockvectra.com/v1/robinhood_mainnet/public — İmzalanmış işlemleri okuma ve yayınlama (eth_sendRawTransaction)
- Robinhood Chain Testnet: https://api.blockvectra.com/v1/robinhood_testnet/public — İmzalanmış işlemleri okuma ve yayınlama (eth_sendRawTransaction)

Aşağıdaki iki genel meta veri uç noktası, hizmet durumunu ve her zincirin yapılandırmasını gösterir; API key gerektirmezler ve faturalandırılmazlar.

### Hizmet ve zincir sağlık durumunu kontrol edin

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

Kontrol zaman damgası `checked_at`, hizmet operasyonel durumu `gateway.status` ve desteklenen her zincirin düğüm senkronizasyon ilerlemesi `sync`, tepe blok yüksekliği ve gecikme süresi `head` değerlerini döndürür:

```json
{
  "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
      }
    }
  ]
}
```

### Desteklenen zincirleri ve yöntem politikalarını sorgulayın

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

Desteklenen her zincirin `chain_id` değerini, JSON-RPC, Data API ve WebSocket yetenek bayraklarını, yöntem izin verme ve reddetme politikalarını (`methods.allow` ve `methods.deny`), tek sorguluk log blok aralığı sınırını `max_logs_block_range` ve geçmiş durum penceresini `state_window_blocks` döndürür:

```json
{
  "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": {}
    }
  ]
}
```

### Bir zincir seçin

Her BlockVectra uç noktası bir zincir kapsamındadır: JSON-RPC istekleri URL yolunda `{chain}` zincir adını taşır ve Data API istekleri rotanın başına bunu ekler. Şu anda kullanılabilir olan zincirler ve tanımlayıcıları için [Desteklenen Zincirler](https://docs.blockvectra.com/tr/chains/) sayfasına bakın.

| Zincir | {chain} | Chain ID | Tracing | Genel Endpoint | WebSocket | Data API | API anahtarıyla kullanılabilen metot sayısı | Webhook bildirimleri | İşlem Gönderme | İşlem Gönderme (Key Gerektirmeyen Genel Uç Nokta) | Durum geçmişi penceresi | eth_getLogs maksimum blok aralığı | Data API Veri Kümeleri | İlgili test ağları | İlgili kılavuzlar |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| [arb_mainnet RPC ve Data API](https://blockvectra.com/tr/chains/arb_mainnet/) | arb_mainnet | 42161 | ✓ | `https://api.blockvectra.com/v1/arb_mainnet/public` | Desteklenmiyor | Açık | 43 | [Destekleniyor · Onay sayısı 1–1 (varsayılan 1)](https://blockvectra.com/tr/webhooks/), [Webhook bildirimleri kılavuzu](https://docs.blockvectra.com/tr/guides/webhook-push/) | Destekleniyor | Destekleniyor | En son 6,000 blok için geçmiş durum | 1,000 blok | Bloklar, İşlemler, Adres işlemleri, Transferler, Token meta verileri, Veri güncelliği | Bilinmiyor | Bilinmiyor |
| [base_mainnet RPC ve Data API](https://blockvectra.com/tr/chains/base_mainnet/) | base_mainnet | 8453 | — | `https://api.blockvectra.com/v1/base_mainnet/public` | Desteklenmiyor | Açık | 39 | [Destekleniyor · Onay sayısı 1–1 (varsayılan 1)](https://blockvectra.com/tr/webhooks/), [Webhook bildirimleri kılavuzu](https://docs.blockvectra.com/tr/guides/webhook-push/) | Destekleniyor | Destekleniyor | En son 10,000 blok için geçmiş durum | 1,000 blok | Bloklar, İşlemler, Adres işlemleri, Transferler, Token meta verileri, Veri güncelliği | Bilinmiyor | [Base](https://docs.blockvectra.com/tr/guides/base/) |
| [bsc_mainnet RPC ve Data API](https://blockvectra.com/tr/chains/bsc_mainnet/) | bsc_mainnet | 56 | — | `https://api.blockvectra.com/v1/bsc_mainnet/public` | Desteklenmiyor | Açık | 25 | [Destekleniyor · Onay sayısı 1–1 (varsayılan 1)](https://blockvectra.com/tr/webhooks/), [Webhook bildirimleri kılavuzu](https://docs.blockvectra.com/tr/guides/webhook-push/) | Destekleniyor | Destekleniyor | En son 100 blok için geçmiş durum | 1,000 blok | Bloklar, İşlemler, Adres işlemleri, Transferler, Token meta verileri, Veri güncelliği | Bilinmiyor | Bilinmiyor |
| [Ethereum RPC ve Data API](https://blockvectra.com/tr/chains/eth_mainnet/) | eth_mainnet | 1 | ✓ | `https://api.blockvectra.com/v1/eth_mainnet/public` | Desteklenmiyor | Açık | 38 | [Destekleniyor · Onay sayısı 1–1 (varsayılan 1)](https://blockvectra.com/tr/webhooks/), [Webhook bildirimleri kılavuzu](https://docs.blockvectra.com/tr/guides/webhook-push/) | Destekleniyor | Destekleniyor | En son 250,000 blok için geçmiş durum | 1,000 blok | Bloklar, İşlemler, Adres işlemleri, Transferler, Token meta verileri, Veri güncelliği | Bilinmiyor | Bilinmiyor |
| [eth_sepolia RPC ve Data API](https://blockvectra.com/tr/chains/eth_sepolia/) | eth_sepolia | 11155111 | — | `https://api.blockvectra.com/v1/eth_sepolia/public` | Desteklenmiyor | Açık | 29 | [Destekleniyor · Onay sayısı 1–1 (varsayılan 1)](https://blockvectra.com/tr/webhooks/), [Webhook bildirimleri kılavuzu](https://docs.blockvectra.com/tr/guides/webhook-push/) | Destekleniyor | Destekleniyor | Bilinmiyor | 1,000 blok | Bloklar, İşlemler, Adres işlemleri, Transferler, Token meta verileri, Veri güncelliği | Bilinmiyor | Bilinmiyor |
| [HyperEVM RPC ve Data API](https://blockvectra.com/tr/chains/hyperevm_mainnet/) | hyperevm_mainnet | 999 | — | `https://api.blockvectra.com/v1/hyperevm_mainnet/public` | Desteklenmiyor | Açık | 24 | [Destekleniyor · Onay sayısı 1–1 (varsayılan 1)](https://blockvectra.com/tr/webhooks/), [Webhook bildirimleri kılavuzu](https://docs.blockvectra.com/tr/guides/webhook-push/) | Desteklenmiyor | Desteklenmiyor | Bilinmiyor | 1,000 blok | Bloklar, İşlemler, Adres işlemleri, Transferler, Token meta verileri, Bakiyeler, Sahipler, NFT'ler, Veri güncelliği | Bilinmiyor | [HyperEVM backfill and polling](https://docs.blockvectra.com/tr/guides/hyperevm-backfill/) |
| [polygon_mainnet RPC ve Data API](https://blockvectra.com/tr/chains/polygon_mainnet/) | polygon_mainnet | 137 | ✓ | `https://api.blockvectra.com/v1/polygon_mainnet/public` | Desteklenmiyor | Açık | 43 | [Destekleniyor · Onay sayısı 1–1 (varsayılan 1)](https://blockvectra.com/tr/webhooks/), [Webhook bildirimleri kılavuzu](https://docs.blockvectra.com/tr/guides/webhook-push/) | Destekleniyor | Destekleniyor | En son 126 blok için geçmiş durum | 1,000 blok | Bloklar, İşlemler, Adres işlemleri, Transferler, Token meta verileri, Veri güncelliği | Bilinmiyor | Bilinmiyor |
| [Robinhood Chain RPC ve Data API](https://blockvectra.com/tr/chains/robinhood_mainnet/) | robinhood_mainnet | 4663 | ✓ | `https://api.blockvectra.com/v1/robinhood_mainnet/public` | Destekleniyor (newHeads, logs) | Açık | 43 | [Destekleniyor · Onay sayısı 1–1 (varsayılan 1)](https://blockvectra.com/tr/webhooks/), [Webhook bildirimleri kılavuzu](https://docs.blockvectra.com/tr/guides/webhook-push/) | Destekleniyor | Destekleniyor | En son 900 blok için geçmiş durum | 1,000 blok | Bloklar, İşlemler, Adres işlemleri, Transferler, Token meta verileri, Bakiyeler, Sahipler, NFT'ler, DEX takasları, DEX fiyatları, Tokenlaştırılmış hisse senetleri, İzler, Veri güncelliği | Bilinmiyor | [Robinhood Chain](https://docs.blockvectra.com/tr/guides/robinhood-chain/), [Stock token multiplier](https://docs.blockvectra.com/tr/guides/stock-token-multiplier/), [Tokenized stocks](https://docs.blockvectra.com/tr/guides/stocks/) |
| [robinhood_testnet RPC](https://blockvectra.com/tr/chains/robinhood_testnet/) | robinhood_testnet | 46630 | ✓ | `https://api.blockvectra.com/v1/robinhood_testnet/public` | Destekleniyor (newHeads, logs) | Henüz kullanılabilir değil | 43 | [Destekleniyor · Onay sayısı 1–1 (varsayılan 1)](https://blockvectra.com/tr/webhooks/), [Webhook bildirimleri kılavuzu](https://docs.blockvectra.com/tr/guides/webhook-push/) | Destekleniyor | Destekleniyor | En son 1,023 blok için geçmiş durum | 1,000 blok | Desteklenmiyor | Bilinmiyor | [Testnet faucet](https://docs.blockvectra.com/tr/guides/robinhood-testnet-faucet/), [Robinhood Chain Testnet starter](https://docs.blockvectra.com/tr/guides/robinhood-testnet-starter/) |

## API anahtarı aldıktan sonra

### arb_mainnet

#### eth_getLogs

```bash
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](https://docs.blockvectra.com/tr/guides/getlogs-block-range/)

#### Data API

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

[Data API](https://docs.blockvectra.com/tr/api/data/)

[Webhook aboneliği oluştur](https://blockvectra.com/tr/webhooks/) · [Webhook aboneliği oluştur](https://docs.blockvectra.com/tr/guides/webhook-push/) · [Kullanım ve CU](https://console.blockvectra.com/usage/) · [Bakiye yükle](https://console.blockvectra.com/billing/)

### base_mainnet

#### eth_getLogs

```bash
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](https://docs.blockvectra.com/tr/guides/getlogs-block-range/)

#### Data API

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

[Data API](https://docs.blockvectra.com/tr/api/data/)

[Webhook aboneliği oluştur](https://blockvectra.com/tr/webhooks/) · [Webhook aboneliği oluştur](https://docs.blockvectra.com/tr/guides/webhook-push/) · [Kullanım ve CU](https://console.blockvectra.com/usage/) · [Bakiye yükle](https://console.blockvectra.com/billing/)

### bsc_mainnet

#### eth_getLogs

```bash
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](https://docs.blockvectra.com/tr/guides/getlogs-block-range/)

#### Data API

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

[Data API](https://docs.blockvectra.com/tr/api/data/)

[Webhook aboneliği oluştur](https://blockvectra.com/tr/webhooks/) · [Webhook aboneliği oluştur](https://docs.blockvectra.com/tr/guides/webhook-push/) · [Kullanım ve CU](https://console.blockvectra.com/usage/) · [Bakiye yükle](https://console.blockvectra.com/billing/)

### Ethereum

#### eth_getLogs

```bash
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](https://docs.blockvectra.com/tr/guides/getlogs-block-range/)

#### Data API

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

[Data API](https://docs.blockvectra.com/tr/api/data/)

[Webhook aboneliği oluştur](https://blockvectra.com/tr/webhooks/) · [Webhook aboneliği oluştur](https://docs.blockvectra.com/tr/guides/webhook-push/) · [Kullanım ve CU](https://console.blockvectra.com/usage/) · [Bakiye yükle](https://console.blockvectra.com/billing/)

### eth_sepolia

#### eth_getLogs

```bash
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](https://docs.blockvectra.com/tr/guides/getlogs-block-range/)

#### Data API

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

[Data API](https://docs.blockvectra.com/tr/api/data/)

[Webhook aboneliği oluştur](https://blockvectra.com/tr/webhooks/) · [Webhook aboneliği oluştur](https://docs.blockvectra.com/tr/guides/webhook-push/) · [Kullanım ve CU](https://console.blockvectra.com/usage/) · [Bakiye yükle](https://console.blockvectra.com/billing/)

### HyperEVM

#### eth_getLogs

```bash
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](https://docs.blockvectra.com/tr/guides/getlogs-block-range/)

#### Data API

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

[Data API](https://docs.blockvectra.com/tr/api/data/)

[Webhook aboneliği oluştur](https://blockvectra.com/tr/webhooks/) · [Webhook aboneliği oluştur](https://docs.blockvectra.com/tr/guides/webhook-push/) · [Kullanım ve CU](https://console.blockvectra.com/usage/) · [Bakiye yükle](https://console.blockvectra.com/billing/)

### polygon_mainnet

#### eth_getLogs

```bash
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](https://docs.blockvectra.com/tr/guides/getlogs-block-range/)

#### Data API

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

[Data API](https://docs.blockvectra.com/tr/api/data/)

[Webhook aboneliği oluştur](https://blockvectra.com/tr/webhooks/) · [Webhook aboneliği oluştur](https://docs.blockvectra.com/tr/guides/webhook-push/) · [Kullanım ve CU](https://console.blockvectra.com/usage/) · [Bakiye yükle](https://console.blockvectra.com/billing/)

### Robinhood Chain

#### eth_getLogs

```bash
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](https://docs.blockvectra.com/tr/guides/getlogs-block-range/)

#### Data API

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

[Data API](https://docs.blockvectra.com/tr/api/data/)

#### WebSocket

```bash
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](https://docs.blockvectra.com/tr/guides/websocket-subscriptions/)

[Webhook aboneliği oluştur](https://blockvectra.com/tr/webhooks/) · [Webhook aboneliği oluştur](https://docs.blockvectra.com/tr/guides/webhook-push/) · [Kullanım ve CU](https://console.blockvectra.com/usage/) · [Bakiye yükle](https://console.blockvectra.com/billing/)

### robinhood_testnet

#### eth_getLogs

```bash
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](https://docs.blockvectra.com/tr/guides/getlogs-block-range/)

#### WebSocket

```bash
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](https://docs.blockvectra.com/tr/guides/websocket-subscriptions/)

[Webhook aboneliği oluştur](https://blockvectra.com/tr/webhooks/) · [Webhook aboneliği oluştur](https://docs.blockvectra.com/tr/guides/webhook-push/) · [Kullanım ve CU](https://console.blockvectra.com/usage/) · [Bakiye yükle](https://console.blockvectra.com/billing/)

**HyperEVM**
HyperEVM blokları HyperCore sistem işlemlerini içerir (0x2222…2222 veya 0x20… adresinden, gasPrice 0).
Bu zincirde henüz işlem gönderme desteklenmemektedir (`eth_sendRawTransaction` `-32601` `method_not_allowed` döndürür); okuma yöntemleri normal çalışır.

[Canlı durumu görüntüleyin →](https://blockvectra.com/tr/status/)

Bu sayfadaki tüm örnekler `robinhood_mainnet` kullanır.

> **İpucu**: Yukarıdaki matriste örneğin hizmetini, yöntemini ve geçmiş penceresini destekleyen bir zincir seçin, ardından `robinhood_mainnet` yerine o zincirin `{chain}` değerini koyun. Aynı API key, desteklenen tüm zincirlerde çalışır.

### Diğer kimlik doğrulama seçenekleri ve dil örnekleri

JSON-RPC uç noktaları bir zincir kapsamındadır: Anahtar yolda olacak şekilde `POST /v1/{chain}/{api_key}` veya anahtar `x-api-key` başlığında olacak şekilde `POST /v1/{chain}`. `{chain}`, Data API'nin de kullandığı zincir adıdır; Robinhood Chain için bu `robinhood_mainnet` değeridir, dolayısıyla bu sayfadaki uç nokta `https://api.blockvectra.com/v1/robinhood_mainnet` şeklindedir. HTTP üzerinden `eth_subscribe` çağırmak `-32601` döndürür; WebSocket abonelikleri [Desteklenen Zincirler](https://docs.blockvectra.com/tr/chains/) sayfasında zincir başına listelenmiştir. API `Access-Control-Allow-Origin: *` gönderir, ancak API key'inizi gizli tutmalı ve istekleri istemci tarafı tarayıcı kodu yerine bir arka uç hizmetinden yapmalısınız.

Anahtarı üç yoldan biriyle iletebilirsiniz: URL yolunda (`POST /v1/{chain}/{api_key}`; yalnızca yoldaki anahtarı kullanır ve her iki başlığı da yok sayar), `x-api-key` başlığında veya bir `Authorization: Bearer <api_key>` başlığında.

#### URL yolunda anahtar

**cURL**

```bash
: "${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":[]}'
```


  **TypeScript**

```ts
import { createPublicClient, http } from "viem";

const key = process.env.BLOCKVECTRA_API_KEY!;
const client = createPublicClient({
  transport: http(`https://api.blockvectra.com/v1/robinhood_mainnet/${key}`),
});

console.log(await client.getBlockNumber());

// Run with: npx tsx example.mts
```

Complete starter template: [blockvectra/multichain-viem](https://github.com/blockvectra/multichain-viem)


  **Python**

```python
import os

from web3 import Web3

w3 = Web3(Web3.HTTPProvider("https://api.blockvectra.com/v1/robinhood_mainnet/" + os.environ["BLOCKVECTRA_API_KEY"]))
print(w3.eth.block_number)
```


  **Go**

```go
// Run with: go mod init example && go get github.com/ethereum/go-ethereum && go mod tidy && go run .
package main

import (
	"context"
	"fmt"
	"log"
	"os"

	"github.com/ethereum/go-ethereum/ethclient"
)

func main() {
	client, err := ethclient.Dial("https://api.blockvectra.com/v1/robinhood_mainnet/" + os.Getenv("BLOCKVECTRA_API_KEY"))
	if err != nil {
		log.Fatal(err)
	}
	number, err := client.BlockNumber(context.Background())
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(number)
}
```


  **Rust**

```toml
[dependencies]
alloy = { version = "1", features = ["provider-http", "rpc-types"] }
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
```

```rust
use alloy::providers::{Provider, ProviderBuilder};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let key = std::env::var("BLOCKVECTRA_API_KEY")?;
    let url = format!("https://api.blockvectra.com/v1/robinhood_mainnet/{key}");
    let provider = ProviderBuilder::new().connect_http(url.parse()?);
    println!("{}", provider.get_block_number().await?);
    Ok(())
}
```


#### İstek başlığında anahtar

**cURL**

```bash
: "${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":[]}'
```


  **TypeScript**

```ts
import { createPublicClient, http } from "viem";

const key = process.env.BLOCKVECTRA_API_KEY!;
const client = createPublicClient({
  transport: http("https://api.blockvectra.com/v1/robinhood_mainnet", {
    fetchOptions: { headers: { "x-api-key": key } },
  }),
});

console.log(await client.getBlockNumber());

// Run with: npx tsx example.mts
```


  **Python**

```python
import os

from web3 import Web3

key = os.environ["BLOCKVECTRA_API_KEY"]
# request_kwargs replaces the provider's default headers entirely, so
# Content-Type must be repeated here or the server can't parse the body.
headers = {"Content-Type": "application/json", "x-api-key": key}
w3 = Web3(Web3.HTTPProvider("https://api.blockvectra.com/v1/robinhood_mainnet", request_kwargs={"headers": headers}))
print(w3.eth.block_number)
```


  **Go**

```go
// Run with: go mod init example && go get github.com/ethereum/go-ethereum && go mod tidy && go run .
package main

import (
	"context"
	"fmt"
	"log"
	"os"

	"github.com/ethereum/go-ethereum/ethclient"
	"github.com/ethereum/go-ethereum/rpc"
)

func main() {
	ctx := context.Background()
	c, err := rpc.DialOptions(ctx, "https://api.blockvectra.com/v1/robinhood_mainnet", rpc.WithHeader("x-api-key", os.Getenv("BLOCKVECTRA_API_KEY")))
	if err != nil {
		log.Fatal(err)
	}
	number, err := ethclient.NewClient(c).BlockNumber(ctx)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(number)
}
```


  **Rust**

```toml
[dependencies]
alloy = { version = "1", features = ["provider-http", "rpc-types"] }
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
reqwest = "0.13"
```

```rust
use alloy::providers::{Provider, ProviderBuilder};
use alloy::rpc::client::RpcClient;
use reqwest::header::{HeaderMap, HeaderValue};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let key = std::env::var("BLOCKVECTRA_API_KEY")?;

    let mut headers = HeaderMap::new();
    headers.insert("x-api-key", HeaderValue::from_str(&key)?);
    let http_client = reqwest::Client::builder().default_headers(headers).build()?;

    let rpc_client = RpcClient::new_http_with_client(http_client, "https://api.blockvectra.com/v1/robinhood_mainnet".parse()?);
    let provider = ProviderBuilder::new().connect_client(rpc_client);

    println!("{}", provider.get_block_number().await?);
    Ok(())
}
```


> **Sonda eğik çizgi yok**
>
> Anahtarı bir başlıkta ilettiğinizde, `https://api.blockvectra.com/v1/robinhood_mainnet` adresini tam olarak gösterildiği gibi çağırın: URL, sonunda eğik çizgi **olmadan** zincir adıyla biter. JSON-RPC yalnızca `/v1/{chain}` ve `/v1/{chain}/{api_key}` yollarında sunulur. Sonda bir eğik çizgi (örneğin `/v1/{chain}/`) veya zincir bölümü olmayan bir istek (örneğin `/v1` veya `/v1/`), gövdesi boş bir `404` döndürür.


Bir `Authorization: Bearer <api_key>` başlığı da çalışır. `POST /v1/{chain}` üzerinde, boş olmayan bir `x-api-key` Bearer'a göre önceliklidir ve Bearer yalnızca `x-api-key` bulunmadığında veya boş olduğunda kullanılır. Yol biçimi her iki başlığı da yok sayar.

### Toplu çağrılar

Tek bir istekte birden fazla çağrı yapmak için bir dizi gönderin (toplu işlem başına en fazla 100). Her API key'in bir CU havuzuna (`cu_per_sec` yenileme, `burst_cu` kapasitesi — varsayılanlar 400 CU/s ve ani artış (burst) 1,600 CU; konsol Keys tablosunda anahtar başına gösterilir) sahip olduğunu unutmayın; toplam CU'su anahtarın burst kapasitesini aşan tek bir istek — tüm bir JSON-RPC toplu işlemi dahil — toplu işlem başına 100 çağrı sınırının altında olsa bile `-32022 request_exceeds_burst` ile reddedilir; bunu daha küçük partilere bölün. Bu örnek, zincir kimliğini ve bir hesap bakiyesini tek bir gidiş-dönüşte okur:

**cURL**

```bash
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"]}
  ]'
```


  **TypeScript**

```ts
import { createPublicClient, http } from "viem";

const key = process.env.BLOCKVECTRA_API_KEY!;
const client = createPublicClient({
  transport: http("https://api.blockvectra.com/v1/robinhood_mainnet", {
    batch: true,
    fetchOptions: { headers: { "x-api-key": key } },
  }),
});

// viem coalesces concurrent requests into a single JSON-RPC batch.
const [chainId, balance] = await Promise.all([
  client.getChainId(),
  client.getBalance({ address: "0x1111111111111111111111111111111111111111" }),
]);
console.log(chainId, balance);

// Run with: npx tsx example.mts
```


  **Python**

```python
import os

from web3 import Web3

key = os.environ["BLOCKVECTRA_API_KEY"]
headers = {"Content-Type": "application/json", "x-api-key": key}
w3 = Web3(Web3.HTTPProvider("https://api.blockvectra.com/v1/robinhood_mainnet", request_kwargs={"headers": headers}))

with w3.batch_requests() as batch:
    batch.add(w3.eth.chain_id)
    batch.add(w3.eth.get_balance("0x1111111111111111111111111111111111111111"))
    chain_id, balance = batch.execute()

print(chain_id, balance)
```


  **Go**

```go
// Run with: go mod init example && go get github.com/ethereum/go-ethereum && go mod tidy && go run .
package main

import (
	"context"
	"fmt"
	"log"
	"os"

	"github.com/ethereum/go-ethereum/rpc"
)

func main() {
	ctx := context.Background()
	c, err := rpc.DialOptions(ctx, "https://api.blockvectra.com/v1/robinhood_mainnet", rpc.WithHeader("x-api-key", os.Getenv("BLOCKVECTRA_API_KEY")))
	if err != nil {
		log.Fatal(err)
	}

	var chainID, balance string
	calls := []rpc.BatchElem{
		{Method: "eth_chainId", Result: &chainID},
		{Method: "eth_getBalance", Args: []any{"0x1111111111111111111111111111111111111111", "latest"}, Result: &balance},
	}
	if err := c.BatchCallContext(ctx, calls); err != nil {
		log.Fatal(err)
	}
	for _, call := range calls {
		if call.Error != nil {
			log.Fatal(call.Error)
		}
	}
	fmt.Println(chainID, balance)
}
```


  **Rust**

```toml
[dependencies]
alloy = { version = "1", features = ["provider-http", "rpc-types"] }
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
reqwest = "0.13"
```

```rust
use alloy::primitives::{Address, U256};
use alloy::rpc::client::RpcClient;
use reqwest::header::{HeaderMap, HeaderValue};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let key = std::env::var("BLOCKVECTRA_API_KEY")?;

    let mut headers = HeaderMap::new();
    headers.insert("x-api-key", HeaderValue::from_str(&key)?);
    let http_client = reqwest::Client::builder().default_headers(headers).build()?;
    let rpc_client = RpcClient::new_http_with_client(http_client, "https://api.blockvectra.com/v1/robinhood_mainnet".parse()?);

    let address: Address = "0x1111111111111111111111111111111111111111".parse()?;
    let mut batch = rpc_client.new_batch();
    let chain_id = batch.add_call::<_, U256>("eth_chainId", &())?;
    let balance = batch.add_call::<_, U256>("eth_getBalance", &(address, "latest"))?;
    batch.send().await?;

    println!("{} {}", chain_id.await?, balance.await?);
    Ok(())
}
```


Yanıtlar, isteklerle aynı sırada, `id` ile eşleşen bir dizi olarak geri gelir.

Sunucu bunun yerine tüm toplu işlemi reddederse — yetersiz bakiye, hız sınırlaması, burst kapasitesi veya aşırı büyük bir parti nedeniyle (aşağıdaki [Sık karşılaşılan hatalar](#common-errors) bölümüne bakın) — bir dizi yerine tek bir JSON-RPC hata nesnesi döndürür; viem'in `batch: true` modu bunu ayrıntısız bir `UnknownRpcError` olarak gösterir, bu nedenle gerçek hatayı görmek için tek bir çağrıyı yeniden deneyin.

### CU faturalandırmasını anlayın

Faturalandırılan her çağrı **Compute Units (CU)** tüketir: `eth_blockNumber` veya
`eth_chainId` gibi ucuz çağrılar en az maliyete sahiptir, `eth_getBlockByNumber` gibi yaygın okumalar biraz daha pahalıdır, `eth_call` veya `eth_getLogs` gibi daha ağır
çağrılar daha fazla tutar ve yürütme izleme yöntemleri (`debug_traceTransaction` gibi) en yüksek maliyete sahiptir.
Kullanım, hesap başına saatlik dönem bazında, tam faturalandırma birimlerine aşağı yuvarlanarak ücretlendirilir (1 birim = 1,000 CU); kalan miktar bir sonraki döneme devreder (böylece dönemler boyunca toplam ücretlendirilen miktar `floor(toplam CU / 1,000)` olur); mutabakat, dönem sona erdikten yaklaşık 15 dakika sonra gerçekleşir. Örneğin: 508 CU devreden + 2557 CU tüketilen = 3065 CU; bu da 3 faturalandırma biriminin ücretlendirilmesi ve 65 CU'nun bir sonraki döneme devretmesiyle sonuçlanır. Güncel fiyatlar için [Fiyatlandırma](https://blockvectra.com/tr/pricing/) sayfasına bakın.

Yöntem yöntem tam ağırlık tablosu ve hata kodları
[API Referansı → JSON-RPC](https://docs.blockvectra.com/tr/api/json-rpc/) sayfasında yer almaktadır — bu sayfa yalnızca bir
isteğin biçimini kapsar.

#### Sık karşılaşılan hatalar

| Ne yaptınız                                                                                                                                                                                                                                                                    | Ne döndü                                                                       | Eylem                                                                                                                                                                                                                                                                                                                                             |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Bilinmeyen veya henüz herkese açık olmayan zincir                                                                                                                                                                                                                              | JSON gövdesinde `error.data.reason: "unknown_chain"` ile HTTP `404`            | URL'deki zincir adını kontrol edin                                                                                                                                                                                                                                                                                                                |
| Zincir bölümü olmayan istek (örneğin `/v1` veya `/v1/`)                                                                                                                                                                                                                        | Boş gövdeyle HTTP `404`                                                        | URL'ye zincir adını dahil edin (`/v1/{chain}`)                                                                                                                                                                                                                                                                                                    |
| API key eksik, bilinmiyor veya devre dışı                                                                                                                                                                                                                                      | HTTP `401`, JSON-RPC kodu `-32024` (`missing_api_key` veya `invalid_api_key`)  | Geçerli ve aktif bir API key kullanın (yeni oluşturulan veya döndürülen anahtarlar yaklaşık 5 saniye içinde tüm bulut sunucularında yürürlüğe girer; bu süre zarfında 401 `invalid_api_key` veya faturalandırma durumu geçici olarak doğrulanamadığında 503 `-32021` (`Retry-After` ile) döndürebilir, bu nedenle biraz bekleyip yeniden deneyin) |
| Bakiye sıfır veya negatif                                                                                                                                                                                                                                                      | HTTP `402`, JSON-RPC kodu `-32020`                                             | Bakiyenizi yükleyin veya ücretsiz yenilemeyi bekleyin                                                                                                                                                                                                                                                                                             |
| İstekler çok hızlı gönderildi (hız sınırı veya geçici aşırı yük)                                                                                                                                                                                                               | HTTP `429` (veya `200`), JSON-RPC kodu `-32005`                                | Daha sonra tekrar deneyin (varsa `Retry-After` değerine uyun)                                                                                                                                                                                                                                                                                     |
| Tek bir istek veya toplu işlem anahtarın burst kapasitesini aşıyor (`burst_cu`, varsayılan 1,600 CU; varsayılan hız 400 CU/s) veya ücretsiz plan toplu çağrısı çağrı/sn limitini aşıyor (25 çağrı/sn)                                                                                                                                                                   | HTTP `429`, JSON-RPC kodu `-32022` (`request_exceeds_burst`)                   | İsteği daha küçük partilere bölün (gönderildiği şekliyle asla başarılı olamaz)                                                                                                                                                                                                                                                                    |
| Üst kaynak düğüm geçici olarak kullanılamıyor                                                                                                                                                                                                                                  | HTTP `200`, JSON-RPC kodu `-32603` (`upstream unavailable`), faturalandırılmaz | İsteği yeniden deneyin                                                                                                                                                                                                                                                                                                                            |
| Bu zincirin durum penceresinin dışındaki geçmiş durum (`GET /v1/chains` içindeki `state_window_blocks` değerine bakın)                                                                                                                                                         | HTTP `200`, JSON-RPC kodu `-32011`, faturalandırılmaz                          | Daha yeni bir bloğu sorgulayın                                                                                                                                                                                                                                                                                                                    |
| İşlem veya blok bulunamadı ya da yanıt çok büyük; Ethereum'da, yakın geçmiş penceresinin dışındaki blok / makbuz / log sorguları da -32000 "old data not available due to pruning" döndürür (faturalandırılmaz; bkz. [Desteklenen Zincirler → Ethereum](https://docs.blockvectra.com/tr/chains/#ethereum)) | HTTP `200`, JSON-RPC kodu `-32000`                                             | İsteği değiştirin (özeti veya blok numarasını doğrulayın; hatalı biçimlendirilmiş trace karmaları işlem bulunamadı döndürür)                                                                                                                                                                                                                      |
| İzin verilmeyen tracer veya izin verilmeyen trace zaman aşımı (`debug_trace` çağrıları)                                                                                                                                                                                        | HTTP `200`, JSON-RPC kodu `-32602`, faturalandırılmaz                          | İzin verilen bir yerel tracer kullanın (`callTracer`, `flatCallTracer`, `prestateTracer`, `4byteTracer`, `noopTracer` veya boş bırakın) ve zaman aşımı ≤ 30s olmalıdır                                                                                                                                                                            |
| Zincirin yöntem listesinin izin vermediği bir yöntem (bkz. [Desteklenen Zincirler](https://docs.blockvectra.com/tr/chains/))                                                                                                                                                                               | HTTP `200`, JSON-RPC kodu `-32601`, faturalandırılmaz                          | Yalnızca zincirin izin verdiği yöntemleri çağırın                                                                                                                                                                                                                                                                                                 |
| Hatalı biçimlendirilmiş JSON gövdesi                                                                                                                                                                                                                                           | HTTP `200`, JSON-RPC kodu `-32700`, faturalandırılmaz                          | İstek JSON sözdizimini düzeltin                                                                                                                                                                                                                                                                                                                   |
| Bir toplu işlemde 100'den fazla çağrı                                                                                                                                                                                                                                          | HTTP `200`, JSON-RPC kodu `-32600` (`batch too large`), faturalandırılmaz      | Toplu işlemi en fazla 100 çağrıya bölün                                                                                                                                                                                                                                                                                                           |

Yukarıdaki retler asla faturalandırılmaz. Yanıt alan kabul edilmiş her çağrı, yöntemin yayınlanan CU ağırlığı üzerinden ücretlendirilir; hata kodu tablosu faturalandırılmayan durumları listeler ([Hata Kodları](https://docs.blockvectra.com/tr/api/json-rpc/#error-codes) tablosundaki Faturalandırılır sütununa bakın).

### Data API'yi çağırın

Data API, salt okunur zincir verilerini (bloklar, işlemler, bakiyeler, sahipler, DEX aktivitesi ve daha fazlası) REST/JSON olarak sunar. `GET https://api.blockvectra.com/v1/data/chains` dışındaki her rota bir zincir tanımlayıcısıyla başlar: Aşağıdaki her yolda kullanılan zincir tanımlayıcısı `robinhood_mainnet`'tir (`/chains` tarafından ve `meta` içinde döndürülen `chain` alanı). `GET https://api.blockvectra.com/v1/data/chains` yalnızca herkese açık zincirleri listeler ve yalnızca `{"data": [...]}` döndürür (`meta` yok, `next_cursor` yok). İstekler Compute Units (CU) cinsinden ölçülür ve faturalandırılır; yalnızca 2xx başarılı yanıtlar faturalandırılır.

Her istek, JSON-RPC ile aynı API key'i gerektirir — bunu `x-api-key` başlığında iletin. Zincir kapsamındaki her başarılı yanıt aynı zarf yapısını kullanır: `data` (yük), `next_cursor` (belirsiz bir dize, yalnızca başka bir sayfa olduğunda bulunur — aksi takdirde anahtar tamamen yoktur, asla `null` olmaz) ve `meta` (`chain`, `chain_slug` (`chain`'in büyük harfli hali), `chain_external_id`, `as_of_block`, `safe_block`, `finalized_block`, `coverage`, `refreshed_at`; `refreshed_at` `null` olabilir, bu da verinin güncelleme zamanının bilinmediği ve güncelliğini yitirmiş (stale) olarak değerlendirilmesi gerektiği anlamına gelir — blok tabanlı uç noktalar her zaman bir değer döndürür). Hata yanıtları genellikle `{"error":{"code","message"}}` içerir — `409 not_indexed_yet`, `indexed_through` alanını ekler (indekslenen en yüksek blok). Bilinmeyen veya herkese açık olmayan bir zincir, `error.code` `not_found` ile HTTP `404` döndürür (faturalandırılmaz; zincir adları tam olarak küçük harfli slug olmalıdır); eksik, bilinmeyen veya devre dışı bırakılmış bir API key, `error.code` `missing_api_key` veya `invalid_api_key` ile HTTP `401` döndürür. Hız sınırına takılan istekler HTTP `429` (`error.code` `rate_limited`, `data.reason: "key_rate_limit"`), tükenen bakiye ise HTTP `402` (`error.code` `insufficient_balance`) döndürür; her ikisi de faturalandırılmaz. 2^53'ü aşabilecek değerler (bakiyeler, token miktarları) asla JSON sayıları değil, ondalık dizelerdir.

**Numarasına göre bir bloğu arayın:**

**cURL**

```bash
curl -s "https://api.blockvectra.com/v1/data/robinhood_mainnet/blocks/72838701" \
  -H "x-api-key: $BLOCKVECTRA_API_KEY"
```


  **TypeScript**

```ts
const res = await fetch("https://api.blockvectra.com/v1/data/robinhood_mainnet/blocks/72838701", {
  headers: { "x-api-key": process.env.BLOCKVECTRA_API_KEY! },
});
const body = await res.json();
console.log(body);

// Run with: npx tsx example.mts
```


  **Python**

```python
import os, requests

res = requests.get(
    "https://api.blockvectra.com/v1/data/robinhood_mainnet/blocks/72838701",
    headers={"x-api-key": os.environ["BLOCKVECTRA_API_KEY"]},
)
print(res.json())
```


```json
{
  "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"
  }
}
```

İndekslenen tepenin üzerindeki bir numara (`as_of_block`), en yüksek indekslenen bloğu bildiren `indexed_through` ile birlikte `409` (`error.code: "not_indexed_yet"`) döndürür — veri henüz orada değildir, bu nedenle daha sonra tekrar deneyin. Tamamen zincirin kapsanan geçmişinden (`coverage.from_block`) önceki bir blok numarası `422` (`error.code: "no_coverage"`) döndürür. Kapsam dahilinde, `as_of_block` hizasında veya altında olup geçerli bir satırı bulunmayan bir numara (hiç indekslenmemiş veya reorg nedeniyle geri alınmış) `404` (`error.code: "not_found"`) döndürür.

**Veri güncelliğini kontrol edin** (takip edilen her veri kümesinin zincir tepesinin ne kadar gerisinde kaldığı — bir durum sayfası veya bir sorguya güvenmeden önce uçuş öncesi kontrol için yararlıdır):

**cURL**

```bash
curl -s "https://api.blockvectra.com/v1/data/robinhood_mainnet/status/freshness" \
  -H "x-api-key: $BLOCKVECTRA_API_KEY"
```


  **TypeScript**

```ts
const res = await fetch("https://api.blockvectra.com/v1/data/robinhood_mainnet/status/freshness", {
  headers: { "x-api-key": process.env.BLOCKVECTRA_API_KEY! },
});
const body = await res.json();
console.log(body);

// Run with: npx tsx example.mts
```


  **Python**

```python
import os, requests

res = requests.get(
    "https://api.blockvectra.com/v1/data/robinhood_mainnet/status/freshness",
    headers={"x-api-key": os.environ["BLOCKVECTRA_API_KEY"]},
)
print(res.json())
```


```json
{
  "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"
  }
}
```

*(Kısaltılmış: Yanıt, veri kümesi başına bir satır içerir; yalnızca `blocks` satırı gösterilmiştir. `traces` satırı ayrıca `coverage_from_block`, `coverage_to_block` ve `coverage_complete` alanlarını taşır.)*

Bu zincir için güncellik verisi geçici olarak kullanılamıyorsa, bu kısmi bir sonuç yerine `503` (`error.code: "unavailable"`) döndürür; yanıt bir `Retry-After` başlığı (saniye) taşır — en az bu kadar bekleyin, ardından yeniden deneyin.

**Bir adresin ERC-20 bakiyelerini listeleyin** (sıfır olmayan bakiyelere göre filtrelenmiş, tokene göre sıralanmış bir anlık görüntü):

**cURL**

```bash
curl -s "https://api.blockvectra.com/v1/data/robinhood_mainnet/addresses/0x1111111111111111111111111111111111111111/balances" \
  -H "x-api-key: $BLOCKVECTRA_API_KEY"
```


  **TypeScript**

```ts
const res = await fetch(
  "https://api.blockvectra.com/v1/data/robinhood_mainnet/addresses/0x1111111111111111111111111111111111111111/balances",
  { headers: { "x-api-key": process.env.BLOCKVECTRA_API_KEY! } },
);
const body = await res.json();
console.log(body);

// Run with: npx tsx example.mts
```


  **Python**

```python
import os, requests

res = requests.get(
    "https://api.blockvectra.com/v1/data/robinhood_mainnet/addresses/0x1111111111111111111111111111111111111111/balances",
    headers={"x-api-key": os.environ["BLOCKVECTRA_API_KEY"]},
)
print(res.json())
```


```json
{
  "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"
  }
}
```

Sıfır olmayan bakiyesi bulunmayan bir adres yine de `404` değil, `data: []` ile `200` döndürür. Daha fazla sayfalamak için `?limit=` (varsayılan 50, maksimum 500) ve döndürülen `next_cursor` değerini iletin.

Tüm uç nokta kapsamı — bloklar, işlemler, adresler, token'lar, NFT'ler, DEX, tokenlaştırılmış hisse senetleri — [API Referansı → Data API](https://docs.blockvectra.com/tr/api/data/) sayfasında mevcuttur.

### Daha fazla bilgi

* [API Referansı → JSON-RPC](https://docs.blockvectra.com/tr/api/json-rpc/) — Yöntemler, CU ağırlıkları, hata kodları
* [Tam JSON-RPC Referansı](https://docs.blockvectra.com/tr/api/json-rpc/reference/) — Desteklenen tüm yöntemler için eksiksiz spesifikasyonlar, parametreler ve dönüş şemaları
* [API Referansı → Data API](https://docs.blockvectra.com/tr/api/data/) — Zincir verileri için REST uç noktaları
* [Veri Kümeleri](https://docs.blockvectra.com/tr/datasets/) — Desteklenen zincirlerde türetilmiş veri kümeleri
* [Rehberler](https://docs.blockvectra.com/tr/guides/) — API entegrasyonu, CU yönetimi ve çok zincirli iş akışları için pratik rehberler
* [Desteklenen Zincirler](https://docs.blockvectra.com/tr/chains/) — Ağ tanımlayıcıları ve uç nokta URL'leri

## SSS

### Hangi zincirler destekleniyor?

9 zincir desteklenmektedir: Arbitrum One, Base, BNB Smart Chain, Ethereum, Ethereum Sepolia, HyperEVM, Polygon, Robinhood Chain, Robinhood Chain Testnet. Liste GET /v1/chains sonucunu takip eder ve yeni zincirler başlatıldığında güncellenir. Canlı durum için [durum sayfasını](https://blockvectra.com/tr/status/) inceleyin. [Desteklenen zincirleri görün](https://blockvectra.com/tr/chains/)

### WebSocket destekleniyor mu?

HTTP üzerinden eth_subscribe çağrısı yapmak -32601 döndürür; /v1/chains içinde ws değeri true olan zincirlerde eth_subscribe WebSocket üzerinden kullanılabilir. Aksi takdirde eth_getLogs ile yoklama yapın. [Desteklenen zincirleri görün](https://blockvectra.com/tr/chains/)

### Geçmiş durumu ve izleri sorgulayabilir miyim?

Evet, ancak zincire göre değişir. Geçmiş durum penceresi /v1/chains içindeki state_window_blocks alanıdır (null tam geçmiş anlamına gelir); izlerin mevcut olup olmadığı o zincir için methods.allow alanının debug_trace yöntemlerini (örneğin debug_traceTransaction) içerip içermediğine bağlıdır; tek bir eth_getLogs isteği için maksimum blok aralığı max_logs_block_range değeridir. [Zincir dizinini ve zincir başına parametreleri görün](https://blockvectra.com/tr/chains/)

### Tüm zincirlerde tek bir API anahtarı kullanılabilir mi?

Evet. Tek bir API anahtarı, desteklenen her zincirde JSON-RPC ve bunu sunan zincirlerde Data API için çalışır; anahtar belirli bir zincire değil, hesaba aittir. [Tek anahtar, birçok zincir rehberini okuyun](https://docs.blockvectra.com/en/guides/one-key-many-chains/)
