# เริ่มต้นอย่างรวดเร็ว

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

นักพัฒนาและ AI Agent สามารถทดลองใช้ public RPC โดยไม่ต้องใช้คีย์ จากนั้นสร้างคีย์เพื่อใช้งานต่อไป

## 1. อ่านความสูงของบล็อกโดยไม่ต้องใช้คีย์

เรียก public JSON-RPC endpoint สำหรับเชนตัวอย่าง `robinhood_mainnet` โดยไม่ต้องสร้างบัญชีหรือระบุ API key:

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

`id: 1` ของการตอบกลับตรงกับคำขอนี้; `result` คือความสูงของบล็อกในรูปแบบเลขฐานสิบหกและสามารถเปลี่ยนแปลงได้ระหว่างการเรียกแต่ละครั้ง หากการตอบกลับมี `error` ให้ตรวจสอบรหัสและสาเหตุ ดู [free public RPC endpoints](https://blockvectra.com/en/free/#public-rpc) สำหรับเมธอดสาธารณะ ช่วงประวัติ และขีดจำกัดต่อ IP

## 2. Create an API key

ไปที่ [คอนโซล](https://console.blockvectra.com/login/?next=%2Fkeys%2F), เข้าสู่ระบบด้วย GitHub, Google หรือกระเป๋าเงิน Ethereum (บัญชีของคุณจะถูกสร้างขึ้นเมื่อเข้าสู่ระบบครั้งแรก) และสร้าง API key โดย secret จะแสดงเพียงครั้งเดียวเท่านั้น: จัดเก็บไว้อย่างปลอดภัยและตั้งค่าเป็นตัวแปรสภาพแวดล้อม `BLOCKVECTRA_API_KEY` อย่าใส่ไว้ในโค้ดฝั่งเบราว์เซอร์ของไคลเอนต์ บัญชีใหม่รับ 30,000,000 CU เมื่อลงทะเบียน — ไม่ต้องใช้บัตรเครดิต

> **ยังไม่มี API key?**
>
> หากคุณมีกระเป๋าเงิน Ethereum: โปรดทำตาม [คู่มือการลงทะเบียนแบบโปรแกรม](https://docs.blockvectra.com/en/guides/programmatic-signup/) เพื่อลงทะเบียนและสร้าง API key โดยใช้ลายเซ็นกระเป๋าเงิน Ethereum โดยไม่ต้องใช้เบราว์เซอร์ หากคุณไม่มีกระเป๋าเงิน: ให้ขอให้ผู้ใช้เข้าสู่ระบบที่ [console.blockvectra.com](https://console.blockvectra.com/login/?next=%2Fkeys%2F), สร้างคีย์ และตั้งค่าเป็นตัวแปรสภาพแวดล้อม `BLOCKVECTRA_API_KEY` อย่าขอให้ผู้ใช้วางคีย์ลงในแชท


## 3. ส่งคำขอที่ยืนยันตัวตนครั้งแรก

อ่านความสูงของบล็อกของเชนเดียวกันด้วยส่วนหัว `x-api-key` โดย URL จะลงท้ายด้วยชื่อเชน โดยไม่มีเครื่องหมายทับปิดท้าย:

```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` เป็นความสูงของบล็อกในรูปแบบเลขฐานสิบหกอีกครั้ง คำขอนี้ใช้ CU; ดู [เอกสารอ้างอิง JSON-RPC](https://docs.blockvectra.com/en/api/json-rpc/) สำหรับน้ำหนักของเมธอดและรหัสข้อผิดพลาด และ [ราคา](https://blockvectra.com/en/pricing/) สำหรับราคาปัจจุบัน คีย์ใหม่จะมีผลในเวลาประมาณ 5 วินาที; หากคุณได้รับ `invalid_api_key` ให้รอสักครู่แล้วลองใหม่ ดู [ข้อผิดพลาดทั่วไป](#common-errors) ด้านล่างสำหรับความล้มเหลวอื่นๆ

## 4. ดำเนินการต่อด้วยงานทางธุรกิจ

* [คิวรีกิจกรรมหุ้นโทเค็นบน Robinhood Chain](https://docs.blockvectra.com/en/guides/stocks/)
* [ดึงข้อมูล log ของ HyperEVM ย้อนหลังแบบแบ่ง chunk](https://docs.blockvectra.com/en/guides/hyperevm-backfill/)
* [รับกิจกรรมของกระเป๋าเงินและการโอนโทเคนด้วย webhook](https://docs.blockvectra.com/en/guides/webhook-push/)

## ข้อมูลอ้างอิง

### API key และยอดคงเหลือ

เทมเพลตเริ่มต้นฉบับสมบูรณ์: [blockvectra/agent-quickstart](https://github.com/blockvectra/agent-quickstart)

ทุกคีย์จะมีลักษณะเป็น `rgw_` ตามด้วยอักขระเลขฐานสิบหก 64 ตัว เช่น `rgw_1f2e...` (ตัดทอน) เก็บรักษาเป็นความลับ — ทุกคนที่มีคีย์สามารถใช้ยอดคงเหลือของคุณได้

> เมื่อยอดคงเหลือของคุณไม่เพียงพอ เซิร์ฟเวอร์จะส่งกลับ HTTP 402 (รหัสข้อผิดพลาด JSON-RPC `-32020`; `error.code` ของ Data API คือ `insufficient_balance`) ไปที่หน้า [การเรียกเก็บเงิน](https://console.blockvectra.com/billing/) ในคอนโซลเพื่อตรวจสอบยอดคงเหลือและวิธีการเติมเงินของคุณ


### ทดลองใช้งานโดยไม่ต้องใช้คีย์

คุณสามารถเรียกใช้เอนด์พอยต์ JSON-RPC สาธารณะได้ทันทีโดยไม่ต้องสร้างบัญชีหรือระบุ API key เอนด์พอยต์ในตัวอย่างด้านล่างนี้จำกัดอัตราการเรียกต่อ IP (3 req/s, burst 20, ขนาดแบทช์สูงสุด 10) คำขอที่เกินขีดจำกัดอัตราจะส่งคืน HTTP 429 พร้อมเหตุผล `public_rate_limit` หรือ `public_pool_busy` (พร้อมส่วนหัว `Retry-After`); เมธอดที่ไม่รองรับจะส่งคืนข้อผิดพลาด JSON-RPC `-32601` (`method_not_public`).

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

# หรือใช้รูปแบบ fallback ของ 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":[]}'
```

#### เอนด์พอยต์สาธารณะตามเชน

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

endpoint ข้อมูลเมทาดาตาสาธารณะสองรายการต่อไปนี้แสดงสถานะการบริการและการกำหนดค่าของแต่ละเชน; ไม่จำเป็นต้องใช้ API key และไม่คิดค่าบริการ

### ตรวจสอบสถานะการทำงานของบริการและเชน

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

ส่งกลับการประทับเวลาที่ตรวจสอบ `checked_at`, สถานะการทำงานของบริการ `gateway.status` และความคืบหน้าในการซิงค์โหนดของแต่ละเชนที่รองรับ `sync`, ความสูงของบล็อก head และความหน่วงเวลา `head`:

```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
      }
    }
  ]
}
```

### สอบถามเชนที่รองรับและนโยบายเมธอด

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

ส่งกลับ `chain_id` ของแต่ละเชนที่รองรับ, แฟล็กความสามารถสำหรับ JSON-RPC, Data API และ WebSocket, นโยบายอนุญาตและปฏิเสธเมธอด (`methods.allow` และ `methods.deny`), ขีดจำกัดช่วงบล็อก log ต่อหนึ่งคิวรี `max_logs_block_range` และหน้าต่างสถานะย้อนหลัง `state_window_blocks`:

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

### เลือกเชน

ทุก endpoint ของ BlockVectra มีขอบเขตเฉพาะเชน: คำขอ JSON-RPC จะมีชื่อเชน `{chain}` อยู่ในพาธ URL และคำขอ Data API จะขึ้นต้นเส้นทางด้วยชื่อเชน ดู [Supported Chains](https://docs.blockvectra.com/en/chains/) สำหรับเชนที่พร้อมใช้งานในปัจจุบันและตัวระบุของเชน

| เชน | {chain} | Chain ID | Tracing | Endpoint สาธารณะ | WebSocket | Data API | จำนวนเมธอดที่ใช้ API key | Webhook push | ส่งธุรกรรม | ส่งธุรกรรม (endpoint สาธารณะแบบไม่ต้องใช้ API key) | ช่วงประวัติสถานะ | ช่วงบล็อกสูงสุดของ eth_getLogs | ชุดข้อมูล Data API | testnet ที่เกี่ยวข้อง | คู่มือที่เกี่ยวข้อง |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| [RPC และ Data API ของ arb_mainnet](https://blockvectra.com/th/chains/arb_mainnet/) | arb_mainnet | 42161 | ✓ | `https://api.blockvectra.com/v1/arb_mainnet/public` | ไม่รองรับ | เปิดให้บริการ | 43 | [รองรับ · การยืนยัน 1–1 (ค่าเริ่มต้น 1)](https://blockvectra.com/th/webhooks/), [คู่มือ Webhook push](https://docs.blockvectra.com/th/guides/webhook-push/) | รองรับ | รองรับ | สถานะย้อนหลังสำหรับ 5,000 บล็อกล่าสุด | 1,000 บล็อก | บล็อก, ธุรกรรม, ธุรกรรมของแอดเดรส, การโอน, เมทาดาตาของโทเค็น, ความสดใหม่ของข้อมูล | ไม่ระบุ | ไม่ระบุ |
| [RPC และ Data API ของ base_mainnet](https://blockvectra.com/th/chains/base_mainnet/) | base_mainnet | 8453 | — | `https://api.blockvectra.com/v1/base_mainnet/public` | ไม่รองรับ | เปิดให้บริการ | 39 | [รองรับ · การยืนยัน 1–1 (ค่าเริ่มต้น 1)](https://blockvectra.com/th/webhooks/), [คู่มือ Webhook push](https://docs.blockvectra.com/th/guides/webhook-push/) | รองรับ | รองรับ | สถานะย้อนหลังสำหรับ 10,000 บล็อกล่าสุด | 1,000 บล็อก | บล็อก, ธุรกรรม, ธุรกรรมของแอดเดรส, การโอน, เมทาดาตาของโทเค็น, ความสดใหม่ของข้อมูล | ไม่ระบุ | [Base](https://docs.blockvectra.com/th/guides/base/) |
| [RPC และ Data API ของ bsc_mainnet](https://blockvectra.com/th/chains/bsc_mainnet/) | bsc_mainnet | 56 | — | `https://api.blockvectra.com/v1/bsc_mainnet/public` | ไม่รองรับ | เปิดให้บริการ | 25 | [รองรับ · การยืนยัน 1–1 (ค่าเริ่มต้น 1)](https://blockvectra.com/th/webhooks/), [คู่มือ Webhook push](https://docs.blockvectra.com/th/guides/webhook-push/) | รองรับ | รองรับ | สถานะย้อนหลังสำหรับ 100 บล็อกล่าสุด | 1,000 บล็อก | บล็อก, ธุรกรรม, ธุรกรรมของแอดเดรส, การโอน, เมทาดาตาของโทเค็น, ความสดใหม่ของข้อมูล | ไม่ระบุ | ไม่ระบุ |
| [RPC และ Data API ของ Ethereum](https://blockvectra.com/th/chains/eth_mainnet/) | eth_mainnet | 1 | ✓ | `https://api.blockvectra.com/v1/eth_mainnet/public` | ไม่รองรับ | เปิดให้บริการ | 38 | [รองรับ · การยืนยัน 1–1 (ค่าเริ่มต้น 1)](https://blockvectra.com/th/webhooks/), [คู่มือ Webhook push](https://docs.blockvectra.com/th/guides/webhook-push/) | รองรับ | รองรับ | สถานะย้อนหลังสำหรับ 250,000 บล็อกล่าสุด | 1,000 บล็อก | บล็อก, ธุรกรรม, ธุรกรรมของแอดเดรส, การโอน, เมทาดาตาของโทเค็น, ความสดใหม่ของข้อมูล | ไม่ระบุ | ไม่ระบุ |
| [RPC และ Data API ของ eth_sepolia](https://blockvectra.com/th/chains/eth_sepolia/) | eth_sepolia | 11155111 | — | `https://api.blockvectra.com/v1/eth_sepolia/public` | ไม่รองรับ | เปิดให้บริการ | 29 | [รองรับ · การยืนยัน 1–1 (ค่าเริ่มต้น 1)](https://blockvectra.com/th/webhooks/), [คู่มือ Webhook push](https://docs.blockvectra.com/th/guides/webhook-push/) | รองรับ | รองรับ | ไม่ระบุ | 1,000 บล็อก | บล็อก, ธุรกรรม, ธุรกรรมของแอดเดรส, การโอน, เมทาดาตาของโทเค็น, ความสดใหม่ของข้อมูล | ไม่ระบุ | ไม่ระบุ |
| [RPC และ Data API ของ HyperEVM](https://blockvectra.com/th/chains/hyperevm_mainnet/) | hyperevm_mainnet | 999 | — | `https://api.blockvectra.com/v1/hyperevm_mainnet/public` | ไม่รองรับ | เปิดให้บริการ | 24 | [รองรับ · การยืนยัน 1–1 (ค่าเริ่มต้น 1)](https://blockvectra.com/th/webhooks/), [คู่มือ Webhook push](https://docs.blockvectra.com/th/guides/webhook-push/) | ไม่รองรับ | ไม่รองรับ | ไม่ระบุ | 1,000 บล็อก | บล็อก, ธุรกรรม, ธุรกรรมของแอดเดรส, การโอน, เมทาดาตาของโทเค็น, ยอดคงเหลือ, ผู้ถือ, NFT, ความสดใหม่ของข้อมูล | ไม่ระบุ | [การดึงข้อมูลย้อนหลังและการโพลล์ HyperEVM](https://docs.blockvectra.com/th/guides/hyperevm-backfill/) |
| [RPC และ Data API ของ polygon_mainnet](https://blockvectra.com/th/chains/polygon_mainnet/) | polygon_mainnet | 137 | ✓ | `https://api.blockvectra.com/v1/polygon_mainnet/public` | ไม่รองรับ | เปิดให้บริการ | 43 | [รองรับ · การยืนยัน 1–1 (ค่าเริ่มต้น 1)](https://blockvectra.com/th/webhooks/), [คู่มือ Webhook push](https://docs.blockvectra.com/th/guides/webhook-push/) | รองรับ | รองรับ | สถานะย้อนหลังสำหรับ 126 บล็อกล่าสุด | 1,000 บล็อก | บล็อก, ธุรกรรม, ธุรกรรมของแอดเดรส, การโอน, เมทาดาตาของโทเค็น, ความสดใหม่ของข้อมูล | ไม่ระบุ | ไม่ระบุ |
| [RPC และ Data API ของ Robinhood Chain](https://blockvectra.com/th/chains/robinhood_mainnet/) | robinhood_mainnet | 4663 | ✓ | `https://api.blockvectra.com/v1/robinhood_mainnet/public` | รองรับ (newHeads, logs) | เปิดให้บริการ | 43 | [รองรับ · การยืนยัน 1–1 (ค่าเริ่มต้น 1)](https://blockvectra.com/th/webhooks/), [คู่มือ Webhook push](https://docs.blockvectra.com/th/guides/webhook-push/) | รองรับ | รองรับ | สถานะย้อนหลังสำหรับ 900 บล็อกล่าสุด | 1,000 บล็อก | บล็อก, ธุรกรรม, ธุรกรรมของแอดเดรส, การโอน, เมทาดาตาของโทเค็น, ยอดคงเหลือ, ผู้ถือ, NFT, การสวอป DEX, ราคา DEX, หุ้นโทเค็น, Trace, ความสดใหม่ของข้อมูล | ไม่ระบุ | [Robinhood Chain](https://docs.blockvectra.com/th/guides/robinhood-chain/), [ตัวคูณโทเค็นหุ้น](https://docs.blockvectra.com/th/guides/stock-token-multiplier/), [หุ้นโทเค็น](https://docs.blockvectra.com/th/guides/stocks/) |
| [RPC ของ robinhood_testnet](https://blockvectra.com/th/chains/robinhood_testnet/) | robinhood_testnet | 46630 | ✓ | `https://api.blockvectra.com/v1/robinhood_testnet/public` | รองรับ (newHeads, logs) | ยังไม่พร้อมใช้งาน | 43 | [รองรับ · การยืนยัน 1–1 (ค่าเริ่มต้น 1)](https://blockvectra.com/th/webhooks/), [คู่มือ Webhook push](https://docs.blockvectra.com/th/guides/webhook-push/) | รองรับ | รองรับ | สถานะย้อนหลังสำหรับ 1,023 บล็อกล่าสุด | 1,000 บล็อก | ไม่รองรับ | ไม่ระบุ | [คู่มือ testnet faucet](https://docs.blockvectra.com/th/guides/robinhood-testnet-faucet/), [คู่มือเริ่มต้นสำหรับ Robinhood Chain Testnet](https://docs.blockvectra.com/th/guides/robinhood-testnet-starter/) |

## ขั้นตอนถัดไปเมื่อมี API key

### 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/th/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/th/api/data/)

[สร้างการติดตาม Webhook](https://blockvectra.com/th/webhooks/) · [สร้างการติดตาม Webhook](https://docs.blockvectra.com/th/guides/webhook-push/) · [การใช้งานและ CU](https://console.blockvectra.com/usage/) · [เติมเงิน](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/th/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/th/api/data/)

[สร้างการติดตาม Webhook](https://blockvectra.com/th/webhooks/) · [สร้างการติดตาม Webhook](https://docs.blockvectra.com/th/guides/webhook-push/) · [การใช้งานและ CU](https://console.blockvectra.com/usage/) · [เติมเงิน](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/th/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/th/api/data/)

[สร้างการติดตาม Webhook](https://blockvectra.com/th/webhooks/) · [สร้างการติดตาม Webhook](https://docs.blockvectra.com/th/guides/webhook-push/) · [การใช้งานและ CU](https://console.blockvectra.com/usage/) · [เติมเงิน](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/th/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/th/api/data/)

[สร้างการติดตาม Webhook](https://blockvectra.com/th/webhooks/) · [สร้างการติดตาม Webhook](https://docs.blockvectra.com/th/guides/webhook-push/) · [การใช้งานและ CU](https://console.blockvectra.com/usage/) · [เติมเงิน](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/th/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/th/api/data/)

[สร้างการติดตาม Webhook](https://blockvectra.com/th/webhooks/) · [สร้างการติดตาม Webhook](https://docs.blockvectra.com/th/guides/webhook-push/) · [การใช้งานและ CU](https://console.blockvectra.com/usage/) · [เติมเงิน](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/th/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/th/api/data/)

[สร้างการติดตาม Webhook](https://blockvectra.com/th/webhooks/) · [สร้างการติดตาม Webhook](https://docs.blockvectra.com/th/guides/webhook-push/) · [การใช้งานและ CU](https://console.blockvectra.com/usage/) · [เติมเงิน](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/th/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/th/api/data/)

[สร้างการติดตาม Webhook](https://blockvectra.com/th/webhooks/) · [สร้างการติดตาม Webhook](https://docs.blockvectra.com/th/guides/webhook-push/) · [การใช้งานและ CU](https://console.blockvectra.com/usage/) · [เติมเงิน](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/th/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/th/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/th/guides/websocket-subscriptions/)

[สร้างการติดตาม Webhook](https://blockvectra.com/th/webhooks/) · [สร้างการติดตาม Webhook](https://docs.blockvectra.com/th/guides/webhook-push/) · [การใช้งานและ CU](https://console.blockvectra.com/usage/) · [เติมเงิน](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/th/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/th/guides/websocket-subscriptions/)

[สร้างการติดตาม Webhook](https://blockvectra.com/th/webhooks/) · [สร้างการติดตาม Webhook](https://docs.blockvectra.com/th/guides/webhook-push/) · [การใช้งานและ CU](https://console.blockvectra.com/usage/) · [เติมเงิน](https://console.blockvectra.com/billing/)

**HyperEVM**
บล็อก HyperEVM รวมธุรกรรมระบบของ HyperCore (จากแอดเดรส 0x2222…2222 หรือ 0x20…, gasPrice 0)
การส่งธุรกรรมยังไม่รองรับบนเชนนี้ (`eth_sendRawTransaction` ส่งกลับ `-32601` `method_not_allowed`); เมธอดการอ่านทำงานได้ตามปกติ

[ดูสถานะแบบเรียลไทม์ →](https://blockvectra.com/th/status/)

ตัวอย่างทั้งหมดในหน้านี้ใช้ `robinhood_mainnet`

> **Tip**: เลือกเชนที่รองรับบริการ เมธอด และหน้าต่างประวัติของตัวอย่างในเมทริกซ์ด้านบน จากนั้นแทนที่ `robinhood_mainnet` ด้วย `{chain}` ของเชนนั้น API key เดียวกันใช้งานได้ข้ามทุกเชนที่รองรับ

### ตัวเลือกการยืนยันตัวตนอื่นๆ และตัวอย่างภาษาโปรแกรม

endpoint ของ JSON-RPC มีขอบเขตเฉพาะเชน: `POST /v1/{chain}/{api_key}` โดยใส่คีย์ไว้ในพาธ หรือ `POST /v1/{chain}` โดยใส่คีย์ไว้ในส่วนหัว `x-api-key` ทั้งนี้ `{chain}` คือชื่อเชนที่ Data API ใช้อยู่เช่นกัน; สำหรับ Robinhood Chain คือ `robinhood_mainnet` ดังนั้น endpoint ในหน้านี้จึงเป็น `https://api.blockvectra.com/v1/robinhood_mainnet` การเรียก `eth_subscribe` ผ่าน HTTP จะส่งกลับ `-32601`; การติดตามผ่าน WebSocket มีการระบุแยกตามเชนใน [Supported Chains](https://docs.blockvectra.com/en/chains/) API จะส่ง `Access-Control-Allow-Origin: *` แต่คุณควรเก็บ API key ไว้เป็นความลับและส่งคำขอจากบริการแบ็กเอนด์แทนที่จะเป็นโค้ดฝั่งเบราว์เซอร์ของไคลเอนต์

คุณสามารถส่งคีย์ได้สามวิธี: ในพาธ URL (`POST /v1/{chain}/{api_key}` ซึ่งใช้เฉพาะคีย์ในพาธและละเว้นส่วนหัวทั้งสอง), ในส่วนหัว `x-api-key` หรือในส่วนหัว `Authorization: Bearer <api_key>`

#### คีย์ในพาธ URL

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

เทมเพลตเริ่มต้นฉบับสมบูรณ์: [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(())
}
```


#### คีย์ในส่วนหัวคำขอ

**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(())
}
```


> **No trailing slash**
>
> เมื่อคุณส่งคีย์ในส่วนหัว ให้เรียก `https://api.blockvectra.com/v1/robinhood_mainnet` ตามที่แสดงไว้อย่างถูกต้อง: URL จะลงท้ายด้วยชื่อเชน **โดยไม่มี** เครื่องหมายทับปิดท้าย JSON-RPC ให้บริการเฉพาะที่ `/v1/{chain}` และ `/v1/{chain}/{api_key}` เท่านั้น เครื่องหมายทับปิดท้าย (เช่น `/v1/{chain}/`) หรือคำขอที่ไม่มีเซกเมนต์ของเชน (เช่น `/v1` หรือ `/v1/`) จะส่งกลับ `404` พร้อม body ที่ว่างเปล่า (empty body)


ส่วนหัว `Authorization: Bearer <api_key>` ก็สามารถใช้งานได้เช่นกัน สำหรับ `POST /v1/{chain}` ค่า `x-api-key` ที่ไม่ว่างจะมีลำดับความสำคัญสูงกว่า Bearer และ Bearer จะถูกใช้เฉพาะเมื่อไม่มี `x-api-key` หรือค่าว่างเปล่าเท่านั้น รูปแบบในพาธจะละเว้นส่วนหัวทั้งสอง

### การเรียกแบบแบทช์

ส่งอาร์เรย์เพื่อทำการเรียกหลายรายการในคำขอเดียว (สูงสุด 100 รายการต่อแบทช์) โปรดทราบว่าแต่ละ API key จะมี CU bucket (การเติม `cu_per_sec`, ความจุ `burst_cu` — ค่าเริ่มต้นคือ 400 CU/s และ burst 1,600 CU; แสดงต่อคีย์ในตารางคีย์ของคอนโซล); คำขอเดี่ยว — รวมถึงทั้งแบทช์ JSON-RPC — ที่มี CU รวมเกินความจุ burst ของคีย์จะถูกปฏิเสธด้วย `-32022 request_exceeds_burst` แม้ว่าจะอยู่ภายใต้ขีดจำกัด 100 การเรียกต่อแบทช์ก็ตาม; ให้แบ่งออกเป็นแบทช์ย่อยๆ ตัวอย่างนี้อ่าน Chain ID และยอดคงเหลือของบัญชีในการเดินทางไปกลับครั้งเดียว:

**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(())
}
```


การตอบกลับจะส่งกลับมาเป็นอาร์เรย์ตามลำดับเดียวกับคำขอ โดยจับคู่ตาม `id`

หากเซิร์ฟเวอร์ปฏิเสธทั้งแบทช์แทน — ยอดคงเหลือไม่เพียงพอ, การจำกัดอัตรา, ความจุ burst หรือแบทช์มีขนาดใหญ่เกินไป (ดู [ข้อผิดพลาดทั่วไป](#common-errors) ด้านล่าง) — จะส่งกลับออบเจกต์ข้อผิดพลาด JSON-RPC เดี่ยวแทนอาร์เรย์; โหมด `batch: true` ของ viem จะแสดงผลข้อผิดพลาดนี้เป็น `UnknownRpcError` ที่ไม่เปิดเผยรายละเอียด ดังนั้นให้ลองใหม่ด้วยการเรียกเดี่ยวเพื่อดูข้อผิดพลาดที่แท้จริง

### ทำความเข้าใจการเรียกเก็บเงิน CU

ทุกการเรียกที่คิดค่าบริการจะใช้ **Compute Units (CU)**: การเรียกราคาถูก เช่น `eth_blockNumber` หรือ `eth_chainId` มีค่าใช้จ่ายน้อยที่สุด, การอ่านทั่วไป เช่น `eth_getBlockByNumber` มีค่าใช้จ่ายเพิ่มขึ้นเล็กน้อย, การเรียกที่หนักขึ้น เช่น `eth_call` หรือ `eth_getLogs` มีค่าใช้จ่ายมากขึ้น และเมธอด trace การทำงาน (เช่น `debug_traceTransaction`) มีค่าใช้จ่ายมากที่สุด การใช้งานจะถูกคิดค่าบริการตามแต่ละบัญชีต่อช่วงเวลาหนึ่งชั่วโมง โดยปัดเศษลงเป็นหน่วยการเรียกเก็บเงินเต็มจำนวน (1 หน่วย = 1,000 CU) และยกยอดส่วนที่เหลือไปยังช่วงเวลาถัดไป (ดังนั้น เมื่อรวมหลายช่วงเวลา ยอดคิดค่าบริการทั้งหมดคือ `floor(CU ทั้งหมด / 1,000)`); การสรุปยอดจะดำเนินการประมาณ 15 นาทีหลังจากสิ้นสุดช่วงเวลา ตัวอย่างเช่น: ยกยอดมา 508 CU + ใช้งานไป 2557 CU = 3065 CU ซึ่งจะส่งผลให้คิดค่าบริการ 3 หน่วยการเรียกเก็บเงิน และยกยอด 65 CU ไปยังช่วงเวลาถัดไป ดู [ราคา](https://blockvectra.com/en/pricing/) สำหรับราคาปัจจุบัน

ตารางน้ำหนักรายเมธอดฉบับเต็มและรหัสข้อผิดพลาดอยู่ใน [API Reference → JSON-RPC](https://docs.blockvectra.com/en/api/json-rpc/) — หน้านี้ครอบคลุมเฉพาะรูปแบบของคำขอเท่านั้น

#### ข้อผิดพลาดทั่วไป

| สิ่งที่คุณทำ                                                                                                                                                                                                                                        | สิ่งที่ส่งกลับมา                                                              | การดำเนินการ                                                                                                                                                                                                                                                                              |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| เชนที่ไม่รู้จักหรือยังไม่ได้เปิดเผยแบบสาธารณะ                                                                                                                                                                                                       | HTTP `404` พร้อม JSON body `error.data.reason: "unknown_chain"`               | ตรวจสอบชื่อเชนใน URL                                                                                                                                                                                                                                                                      |
| คำขอที่ไม่มีเซกเมนต์ของเชน (เช่น `/v1` หรือ `/v1/`)                                                                                                                                                                                                 | HTTP `404` พร้อม body ที่ว่างเปล่า (empty body)                               | ระบุชื่อเชนใน 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 การคิวรีบล็อก / ใบเสร็จ / log นอกหน้าต่างล่าสุดจะส่งกลับ -32000 "old data not available due to pruning" (ไม่คิดค่าบริการ; ดู [Supported Chains → Ethereum](https://docs.blockvectra.com/en/chains/#ethereum)) | HTTP `200`, รหัส JSON-RPC `-32000`                                            | ปรับเปลี่ยนคำขอ (ตรวจสอบแฮชหรือหมายเลขบล็อก; แฮช trace ที่มีรูปแบบไม่ถูกต้องจะส่งกลับไม่พบธุรกรรม)                                                                                                                                                                                        |
| ไม่อนุญาตให้ใช้ Tracer หรือไม่อนุญาตให้ใช้ค่า timeout ของ trace (การเรียก `debug_trace`)                                                                                                                                                            | HTTP `200`, รหัส JSON-RPC `-32602`, ไม่คิดค่าบริการ                           | ใช้ tracer เนทีฟที่ได้รับอนุญาต (`callTracer`, `flatCallTracer`, `prestateTracer`, `4byteTracer`, `noopTracer` หรือละเว้น) และ timeout ≤ 30s                                                                                                                                              |
| เมธอดที่รายการเมธอดของเชนไม่อนุญาต (ดู [Supported Chains](https://docs.blockvectra.com/en/chains/))                                                                                                                                                                             | HTTP `200`, รหัส JSON-RPC `-32601`, ไม่คิดค่าบริการ                           | เรียกเฉพาะเมธอดที่เชนอนุญาต                                                                                                                                                                                                                                                               |
| JSON body มีรูปแบบไม่ถูกต้อง                                                                                                                                                                                                                        | HTTP `200`, รหัส JSON-RPC `-32700`, ไม่คิดค่าบริการ                           | แก้ไขไวยากรณ์ JSON ของคำขอ                                                                                                                                                                                                                                                                |
| มากกว่า 100 การเรียกในหนึ่งแบทช์                                                                                                                                                                                                                    | HTTP `200`, รหัส JSON-RPC `-32600` (`batch too large`), ไม่คิดค่าบริการ       | แบ่งแบทช์ออกเป็นไม่เกิน 100 การเรียก                                                                                                                                                                                                                                                      |

การปฏิเสธข้างต้นจะไม่ถูกคิดค่าบริการเลย ทุกการเรียกที่ได้รับการยอมรับและได้รับการตอบกลับจะถูกคิดค่าบริการตามน้ำหนัก CU ที่เผยแพร่ของเมธอดนั้น; ตารางรหัสข้อผิดพลาดจะแสดงรายการกรณีที่ไม่คิดค่าบริการ (ดูคอลัมน์ Billed ใน [Error Codes](https://docs.blockvectra.com/en/api/json-rpc/#error-codes))

### เรียกใช้งาน 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` ทุกการตอบกลับที่สำเร็จซึ่งมีขอบเขตเฉพาะเชนจะใช้รูปแบบ envelope เดียวกัน: `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` ซึ่งหมายความว่าไม่ทราบเวลาอัปเดตของข้อมูลและควรได้รับการปฏิบัติเสมือนเป็นข้อมูลที่ไม่อัปเดต — endpoint ที่อิงตามบล็อกจะส่งกลับค่าเสมอ) การตอบกลับข้อผิดพลาดมักจะมี `{"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**

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

หมายเลขที่สูงกว่า head ที่ทำดัชนีไว้ (`as_of_block`) จะส่งกลับ `409` (`error.code: "not_indexed_yet"`) พร้อม `indexed_through` ที่บอกบล็อกสูงสุดที่ทำดัชนีไว้ — ข้อมูลยังมาไม่ถึง ดังนั้นให้ลองใหม่ในภายหลัง หมายเลขบล็อกที่อยู่ก่อนประวัติที่ครอบคลุมของเชนทั้งหมด (`coverage.from_block`) จะส่งกลับ `422` (`error.code: "no_coverage"`) ภายในขอบเขตความครอบคลุม หมายเลขที่อยู่ที่หรือต่ำกว่า `as_of_block` ที่ไม่มีแถวข้อมูลสด (ไม่เคยถูกทำดัชนี หรือถูกย้อนกลับโดย reorg) จะส่งกลับ `404` (`error.code: "not_found"`)

**ตรวจสอบความสดใหม่ของข้อมูล** (ระยะห่างที่แต่ละชุดข้อมูลที่ติดตามล้าหลัง head ของเชน — มีประโยชน์สำหรับหน้าสถานะหรือการตรวจสอบล่วงหน้าก่อนที่คุณจะเชื่อถือการคิวรี):

**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"
  }
}
```

*(ย่อ: การตอบกลับมีหนึ่งแถวต่อหนึ่งชุดข้อมูล; แสดงเฉพาะแถว `blocks` เท่านั้น แถว `traces` ยังมีฟิลด์ `coverage_from_block`, `coverage_to_block` และ `coverage_complete` อีกด้วย)*

หากข้อมูลความสดใหม่ไม่พร้อมใช้งานชั่วคราวสำหรับเชนนี้ คำขอนี้จะส่งกลับ `503` (`error.code: "unavailable"`) แทนผลลัพธ์บางส่วน; การตอบกลับจะมีส่วนหัว `Retry-After` (วินาที) — ให้รออย่างน้อยตามเวลานั้น แล้วจึงลองใหม่

**แสดงรายการยอดคงเหลือ ERC-20 ของแอดเดรส** (สแนปช็อตที่กรองเฉพาะยอดคงเหลือที่ไม่เป็นศูนย์ เรียงตามโทเคน):

**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"
  }
}
```

แอดเดรสที่ไม่มีจำนวนยอดคงเหลือที่ไม่เป็นศูนย์จะยังคงส่งกลับ `200` พร้อม `data: []` — ไม่เคยส่งกลับ `404` ระบุ `?limit=` (ค่าเริ่มต้น 50, สูงสุด 500) และ `next_cursor` ที่ส่งกลับมาเพื่อเปิดดูหน้าถัดไป

ความครอบคลุมของ endpoint ทั้งหมด — บล็อก, ธุรกรรม, แอดเดรส, โทเคน, NFT, DEX, หุ้นโทเค็น — มีอยู่ใน [API Reference → Data API](https://docs.blockvectra.com/en/api/data/)

### แหล่งข้อมูลเพิ่มเติม

* [เอกสารอ้างอิง API → JSON-RPC](https://docs.blockvectra.com/en/api/json-rpc/) — เมธอด, น้ำหนัก CU, รหัสข้อผิดพลาด
* [เอกสารอ้างอิง JSON-RPC ฉบับสมบูรณ์](https://docs.blockvectra.com/en/api/json-rpc/reference/) — ข้อกำหนดฉบับสมบูรณ์, พารามิเตอร์ และสคีมาการส่งกลับสำหรับทุกเมธอดที่รองรับ
* [เอกสารอ้างอิง API → Data API](https://docs.blockvectra.com/en/api/data/) — REST endpoint สำหรับข้อมูลเชน
* [ชุดข้อมูล](https://docs.blockvectra.com/en/datasets/) — ชุดข้อมูลที่ได้จากการประมวลผลข้ามเชนที่รองรับ
* [คู่มือ](https://docs.blockvectra.com/en/guides/) — คู่มือเชิงปฏิบัติสำหรับการผสานรวม API, การจัดการ CU และเวิร์กโฟลว์แบบหลายเชน
* [เชนที่รองรับ](https://docs.blockvectra.com/en/chains/) — ตัวระบุเครือข่ายและ endpoint URL

## FAQ

### รองรับเชนใดบ้าง?

รองรับ 9 เชน: Arbitrum One, Base, BNB Smart Chain, Ethereum, Ethereum Sepolia, HyperEVM, Polygon, Robinhood Chain, Robinhood Chain Testnet โดยรายการจะเป็นไปตาม GET /v1/chains และจะอัปเดตเมื่อมีเชนใหม่เปิดตัว ดูสถานะแบบเรียลไทม์ได้ที่ [หน้าสถานะ](https://blockvectra.com/th/status/) [ดูเชนที่รองรับ](https://blockvectra.com/th/chains/)

### รองรับ WebSocket หรือไม่?

การเรียกใช้ eth_subscribe ผ่าน HTTP จะส่งกลับ -32601 บนเชนที่ ws เป็น true ใน /v1/chains จะสามารถใช้งาน eth_subscribe ผ่าน WebSocket ได้ มิฉะนั้นให้ใช้วิธี poll eth_getLogs แทน [ดูเชนที่รองรับ](https://blockvectra.com/th/chains/)

### สามารถค้นหาสถานะย้อนหลังและ trace ได้หรือไม่?

ได้ แต่จะแตกต่างกันไปตามแต่ละเชน ช่วงเวลาประวัติสถานะย้อนหลังจะระบุในฟิลด์ state_window_blocks ของ /v1/chains (null หมายถึงประวัติทั้งหมด) ความพร้อมใช้งานของ trace จะขึ้นอยู่กับว่า methods.allow ของเชนนั้นมีเมธอด debug_trace (เช่น debug_traceTransaction) หรือไม่ และช่วงบล็อกสูงสุดสำหรับคำขอ eth_getLogs แต่ละครั้งคือ max_logs_block_range [ดูไดเรกทอรีเชนและพารามิเตอร์ของแต่ละเชน](https://blockvectra.com/th/chains/)

### สามารถใช้ API key เดียวกับทุกเชนได้หรือไม่?

ได้ API key เดียวสามารถใช้ได้กับ JSON-RPC บนทุกเชนที่รองรับ และใช้กับ Data API บนเชนที่เปิดให้บริการ โดยคีย์จะเป็นของบัญชี ไม่ได้ผูกกับเชนใดเชนหนึ่งโดยเฉพาะ [อ่านคู่มือหนึ่งคีย์สำหรับหลายเชน](https://docs.blockvectra.com/en/guides/one-key-many-chains/)
