# ข้อมูลอ้างอิง Blockchain Data API

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

## ภาพรวม

ใช้ข้อมูลอ้างอิง Blockchain Data API นี้เพื่อสร้างคำขอ REST สำหรับข้อมูลบล็อก, ธุรกรรม, แอดเดรส, โทเค็น, NFT, กิจกรรมบน DEX, หุ้นโทเค็น และความสดใหม่ของชุดข้อมูลที่ได้รับการทำดัชนี ในการเลือกชุดข้อมูลและตรวจสอบความพร้อมใช้งานของเชน โปรดเริ่มต้นที่ [สารบบชุดข้อมูล](https://docs.blockvectra.com/en/datasets/) สำหรับยอดคงเหลือของโทเค็นและประวัติการโอนในกระเป๋าเงิน โปรดทำตาม [คู่มือสินทรัพย์ในกระเป๋าเงิน](https://docs.blockvectra.com/en/guides/wallet-assets/)

* **Base URL**: `https://api.blockvectra.com/v1/data` — ทุกเส้นทางยกเว้น `/chains` จะขึ้นต้นด้วยตัวระบุเชน (เช่น `https://api.blockvectra.com/v1/data/{chain}/…`)
* **Protocol**: HTTP `GET` (และ `POST` สำหรับการค้นหาโทเค็นแบบเป็นชุดที่ `/{chain}/tokens:batch`), การตอบกลับเป็น JSON
* **Authentication**: จำเป็นต้องใช้ API key — ส่งคีย์ของคุณในส่วนหัวคำขอ `x-api-key` คำขอจะได้รับการวัดปริมาณและคิดค่าบริการเป็น Compute Units (CU); คิดค่าบริการเฉพาะการตอบกลับสำเร็จระดับ 2xx เท่านั้น
* **Ethereum**: ความครอบคลุมของข้อมูลกำหนดโดย `coverage.from_block` ใน `GET /v1/data/chains` และครอบคลุมชุดข้อมูลในจำนวนที่น้อยกว่า — ดู [เชนที่รองรับ → Ethereum](https://docs.blockvectra.com/en/chains/#ethereum)

น้ำหนัก CU ของ Data API แสดงอยู่ในหน้า [ราคา](https://blockvectra.com/en/pricing/) และส่งคืนโดย `GET /v1/plans` ดู [เริ่มต้นใช้งานอย่างรวดเร็ว → เรียกใช้ Data API](https://docs.blockvectra.com/en/quickstart/#4-call-the-data-api) สำหรับตัวอย่างคำขอและรูปแบบการตอบกลับ สำหรับการกำหนดเวอร์ชันของพาธ, กฎความเข้ากันได้ย้อนหลัง และคำแนะนำเกี่ยวกับ SDK โปรดดู [การกำหนดเวอร์ชันและความเข้ากันได้ของ API](https://docs.blockvectra.com/en/api/versioning/)

## เชน

Data API ให้บริการข้อมูลที่ได้รับการทำดัชนีตามขอบเขตของแต่ละเชน: `https://api.blockvectra.com/v1/data/{chain}/…`

ชุดข้อมูลและฟีเจอร์ที่พร้อมใช้งานจะแตกต่างกันไปตามแต่ละเชน โปรดดู [เชนที่รองรับ](https://docs.blockvectra.com/en/chains/) สำหรับตารางความสามารถทั้งหมด `GET https://api.blockvectra.com/v1/data/chains` จะรายงาน `features`, `coverage`, `finality` และ `limits` ของแต่ละเชน คำขอที่อยู่นอกเหนือขอบเขตความครอบคลุมของชุดข้อมูลจะส่งคืน HTTP `422 no_coverage` (ไม่คิดค่าบริการ); เชนที่ไม่รู้จักหรือไม่เปิดเผยต่อสาธารณะจะส่งคืน HTTP `404` พร้อม `error.code` เป็น `not_found` (ไม่คิดค่าบริการ; ชื่อเชนต้องเป็น slug ตัวพิมพ์เล็กที่ตรงกันทุกประการ)

## ข้อผิดพลาด

การตอบกลับข้อผิดพลาดทุกรายการจะมีรูปแบบเป็น `{"error":{"code","message"}}`; โดยมีเพียง `409 not_indexed_yet` เท่านั้นที่อาจเพิ่ม `indexed_through` (บล็อกสูงสุดที่ได้รับการทำดัชนีบนเชนนั้น) และฟิลด์นี้จะไม่มีอยู่หากเชนยังไม่มีข้อมูลที่ได้รับการทำดัชนี รหัสข้อผิดพลาดที่ลูกค้าพบบ่อยที่สุด:

| สถานะ | `error.code`           | ความหมาย                                                                                                                                                                                                | สิ่งที่ควรทำ                                                                                                                                                                                                       |
| ----- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `402` | `insufficient_balance` | ยอดคงเหลือแบบชำระเงินหรือเครดิตฟรีหมดลง; เมื่อทราบยอดคงเหลือ `error.data` จะรวม `balance_units` และ `balance_cu` (ไม่คิดค่าบริการ)                                                                      | เติมเงิน on-chain ในคอนโซล [หน้าการเรียกเก็บเงิน](https://console.blockvectra.com/billing/) หรือรอให้เครดิตฟรีเติมเข้ามาใหม่                                                                                       |
| `404` | `not_found`            | `{chain}` ไม่รู้จักหรือไม่เปิดเผยต่อสาธารณะ หรือไม่มีออบเจกต์ดังกล่าวอยู่                                                                                                                               | แก้ไขคำขอ                                                                                                                                                                                                          |
| `409` | `not_indexed_yet`      | คำขอระบุบล็อกที่สูงกว่า `as_of_block` (บล็อกล่าสุดที่เขียนสมบูรณ์แล้ว; รวม `indexed_through`), แฮชระบุบล็อกที่สูงกว่า `as_of_block`, หรือเชนยังไม่มีข้อมูลที่ได้รับการทำดัชนี (ไม่มี `indexed_through`) | หากมี `indexed_through` ให้สำรวจเป็นระยะ (poll) จนกว่าบล็อกของคุณหรือ `to_block` จะเท่ากับหรือต่ำกว่าค่าดังกล่าว; หากไม่มี ให้รอจนกว่าเชนจะเริ่มทำดัชนี (`coverage.has_data` ใน `GET /v1/data/chains` จะแสดงสถานะ) |
| `422` | `no_coverage`          | ช่องว่างถาวร: เชนขาดความสามารถนั้น หรือบล็อกเกิดขึ้นก่อนความครอบคลุมของการทำดัชนี/trace                                                                                                                 | ปรับเปลี่ยนคำขอ การลองส่งซ้ำจะไม่ช่วยแก้ปัญหา                                                                                                                                                                      |
| `429` | `rate_limited`         | เกินขีดจำกัดอัตรา CU ของคีย์ (การตอบกลับรวม `Retry-After`) หรือเกินขีดจำกัดอัตราการเรียกใช้ของบัญชี (ไม่มี `Retry-After`); ไม่คิดค่าบริการ                                                              | ลองใหม่อีกครั้งหลังจากผ่านไป `Retry-After` วินาที                                                                                                                                                                  |
| `429` | `cost_exceeds_burst`   | คำขอเดี่ยวมีค่าใช้จ่ายมากกว่าความจุ burst ของคีย์; ไม่มี `Retry-After` (ไม่คิดค่าบริการ)                                                                                                                | แยกคำขอออกเป็นส่วนย่อย การส่งคำขอเดิมซ้ำจะไม่มีทางสำเร็จ                                                                                                                                                           |
| `503` | `unavailable`          | ไม่พร้อมใช้งานชั่วคราว; การตอบกลับจะมี `Retry-After` นอกจากนี้ยังส่งคืนสำหรับคำขอข้อมูลย้อนหลังบนเชนที่ `coverage.from_block` มีค่าเป็น `null` ในปัจจุบัน                                               | ลองใหม่อีกครั้งหลังจากผ่านไป `Retry-After` วินาที                                                                                                                                                                  |
| `503` | `gateway_overloaded`   | ขีดจำกัดคำขอพร้อมกันของบัญชีในทุกคีย์และทุกเชนเต็มขีดจำกัดแล้ว หรือบริการไม่ว่างชั่วคราว; `Retry-After: 1` (ไม่คิดค่าบริการ)                                                                            | ลดจำนวนคำขอที่ส่งพร้อมกันทั่วทั้งบัญชี และรอ `Retry-After` วินาทีก่อนลองใหม่อีกครั้ง                                                                                                                               |

## ดัชนี Endpoint

ต่อไปนี้เป็นข้อกำหนดต้นฉบับภาษาอังกฤษ

<div lang="en">

### Chain

- GET /chains — List supported chains
- GET /{chain}/blocks/{number} — Get a block by number
- GET /{chain}/blocks/hash/{hash} — Get a block by hash
- GET /{chain}/blocks/{number}/transactions — List a block's transactions
- GET /{chain}/transactions/{hash} — Get a transaction by hash

### Status

- GET /{chain}/status/freshness — Freshness and lag per dataset

### Addresses

- GET /{chain}/addresses/{address}/transactions — List an address's transactions
- GET /{chain}/addresses/{address}/transfers — List an address's token transfers
- GET /{chain}/addresses/{address}/balances — List an address's ERC-20 balances

### Tokens

- GET /{chain}/tokens/{token}/transfers — List a token contract's transfers
- GET /{chain}/tokens/{token}/holders — List a token's holders
- GET /{chain}/tokens/{token} — Get token metadata
- POST /{chain}/tokens:batch — Batch get token metadata

### NFTs

- GET /{chain}/nfts/{contract}/{token_id} — Get one NFT's owner/holders
- GET /{chain}/nfts — List NFTs owned by an address

### DEX

- GET /{chain}/dex/swaps — List DEX swaps by pool or token
- GET /{chain}/dex/prices — Daily DEX token prices

### Stocks

- GET /{chain}/stocks — Daily leaderboard of tokenized stocks
- GET /{chain}/stocks/{token} — Get one tokenized stock

### Traces

- GET /{chain}/blocks/{number}/traces — Historical callTracer trace tree for a whole block
- GET /{chain}/transactions/{hash}/trace — Historical callTracer trace tree for one transaction

</div>
