# ข้อมูลอ้างอิงข้อผิดพลาด

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

เอกสารอ้างอิงนี้รวบรวมรหัสข้อผิดพลาดทั้งหมดและค่า `reason` ที่เครื่องอ่านได้ในบริการต่างๆ ของ BlockVectra รวมถึงการระบุว่าคำขอที่ถูกปฏิเสธจะถูกคิดค่าบริการหรือไม่, นโยบายการลองใหม่, ระยะเวลา backoff และแนวทางปฏิบัติที่แนะนำสำหรับ AI agent และ automated client

สำหรับการประมวลผลด้วยโปรแกรม สามารถดึงแค็ตตาล็อกทั้งหมดในรูปแบบ JSON ได้ที่ [/errors.json](https://docs.blockvectra.com/errors.json) ทุกการตอบกลับข้อผิดพลาดที่มี `docs_url` จะลิงก์โดยตรงไปยังจุดยึด (anchor) ที่เสถียรบนหน้านี้: `https://docs.blockvectra.com/en/errors/#<reason>` (หรือ `#-<code-number>` สำหรับข้อผิดพลาดที่ไม่มีรหัส reason)

### ข้อผิดพลาด JSON-RPC



| HTTP | รหัส | Reason | ความหมาย | คิดค่าบริการ | ลองใหม่ได้ | เวลาที่ต้องรอ (Retry-After) | การดำเนินการของ Agent |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 401 | -32024 | `missing_api_key` | `ไม่มี API key: ส่งในพาธคำขอ (/v1/{chain}/<api_key>) หรือในส่วนหัว x-api-key` | ไม่ใช่ | ไม่ใช่ | — | สำหรับเอนด์พอยต์ JSON-RPC (/v1/{chain}) ให้ระบุ API key ในพาธคำขอ (/v1/{chain}/<api_key>) หรือในส่วนหัว x-api-key สำหรับ Top-up API (/v1/topup/*) ให้ระบุ API key ในส่วนหัว x-api-key เท่านั้น |
| 401 | -32024 | `invalid_api_key` | `API key ไม่รู้จัก ถูกปิดใช้งาน หรือถูกเพิกถอน: ทั้ง JSON-RPC และ Data API จะส่งคืน HTTP 401 พร้อมโครงสร้างการตอบกลับข้อผิดพลาด invalid_api_key (JSON-RPC: error.code -32024 และ error.data.reason invalid_api_key; Data API: error.code และ error.data.reason invalid_api_key)` | ไม่ใช่ | ไม่ใช่ | — | ตรวจสอบ API key; หากจำเป็น ให้เข้าสู่ระบบคอนโซลอีกครั้งหรือผ่านการสมัครแบบเป็นโปรแกรมเพื่อสร้างคีย์ใหม่ (ดู [ทำเซสชันหรือ API key หาย?](https://docs.blockvectra.com/en/guides/programmatic-signup/#lost-your-session-or-api-key)) |
| 403 | -32025 | `key_expired` | `API key หมดอายุแล้ว สร้างคีย์ใหม่ในคอนโซล` | ไม่ใช่ | ไม่ใช่ | — | API key หมดอายุแล้ว สร้างคีย์ใหม่ในคอนโซลหรือผ่านการสมัครแบบเป็นโปรแกรม |
| 403 | -32025 | `key_cap_exhausted` | `ขีดจำกัด CU ตลอดอายุการใช้งานของ API key หมดลงแล้ว สร้างคีย์ใหม่ในคอนโซล` | ไม่ใช่ | ไม่ใช่ | — | ขีดจำกัด CU ตลอดอายุการใช้งานของ API key ถูกใช้จนหมดแล้ว สร้างคีย์ใหม่ในคอนโซลหรือผ่านการสมัครแบบเป็นโปรแกรม |
| 503 | -32021 | `auth_unavailable` | `ข้อมูลการยืนยันตัวตนไม่พร้อมใช้งานชั่วคราว` | ไม่ใช่ | ใช่ | ปฏิบัติตามส่วนหัว Retry-After (วินาที) | เซิร์ฟเวอร์ไม่สามารถยืนยันคีย์ได้ชั่วคราว นี่ไม่ใช่ปัญหาที่คีย์ของคุณ ลองใหม่อีกครั้งหลังจากรอตาม Retry-After; **อย่าสร้างคีย์ใหม่** |
| 404 | -32600 | `unknown_chain` | `ไม่รู้จักเชนที่ระบุ` | ไม่ใช่ | ไม่ใช่ | — | ตรวจสอบเชนที่พร้อมใช้งานผ่าน GET /v1/chains หรือเครื่องมือ list_chains; ตรวจสอบพาธ URL |
| 404 | 404 | `unknown_endpoint` | `เมธอดและพาธของ Data API ไม่ตรงกับการดำเนินการที่รู้จัก` | ไม่ใช่ | ไม่ใช่ | — | ตรวจสอบเมธอดและพาธ URL ตามเอกสาร Data API |
| 200 | -32700 | `parse_error` | `ข้อผิดพลาดในการแยกวิเคราะห์ JSON` | ไม่ใช่ | ไม่ใช่ | — | ตรวจสอบไวยากรณ์ JSON ที่ถูกต้องในเนื้อหาคำขอก่อนส่ง |
| 200 | -32600 | `invalid_request` | `คำขอไม่ถูกต้อง` | ไม่ใช่ | ไม่ใช่ | — | ตรวจสอบโครงสร้างคำขอ ตรวจสอบฟิลด์ jsonrpc: '2.0', id และ method ก่อนส่งใหม่ |
| 200 | -32602 | `invalid_params` | `ไม่อนุญาตให้ใช้ Tracer ดังกล่าว` | ไม่ใช่ | ไม่ใช่ | — | ปรับพารามิเตอร์ของเมธอด ตรวจสอบ tracer ที่รองรับและขีดจำกัดการหมดเวลาสำหรับเชน |
| 200 | -32602 | `logs_range_too_large` | `ช่วงบล็อกของ eth_getLogs กว้างเกินไป: สูงสุด <N> บล็อก` | ไม่ใช่ | ไม่ใช่ | — | จำกัดช่วงบล็อกของการสืบค้นให้อยู่ภายใน max_logs_block_range ที่ระบุใน GET /v1/chains |
| 429 | -32005 | `public_rate_limit` | `เกินขีดจำกัดอัตราคำขอสาธารณะ` | ไม่ใช่ | ใช่ | ปฏิบัติตามส่วนหัว Retry-After (วินาที) | รอตามส่วนหัว Retry-After แล้วลองใหม่อีกครั้ง หรือส่งคำขอพร้อม API key [รับ API key](https://blockvectra.com/en/get-api-key/?ref=err-public). |
| 429 | -32005 | `public_pool_busy` | `พูลเชนสาธารณะกำลังไม่ว่าง` | ไม่ใช่ | ใช่ | ปฏิบัติตามส่วนหัว Retry-After หรือรอสักครู่แล้วลองใหม่ด้วย backoff | ลองใหม่อีกครั้งโดยใช้ backoff หรือส่งคำขอพร้อม API key [รับ API key](https://blockvectra.com/en/get-api-key/?ref=err-public). |
| 200 | -32601 | `method_not_public` | `เมธอดไม่พร้อมใช้งานบนเอนด์พอยต์สาธารณะ` | ไม่ใช่ | ไม่ใช่ | — | ใช้เมธอดที่เอนด์พอยต์สาธารณะรองรับ หรือส่งคำขอพร้อม API key [รับ API key](https://blockvectra.com/en/get-api-key/?ref=err-public). |
| 200 | -32601 | `method_not_allowed` | `เมธอดไม่พร้อมใช้งานบนเชนนี้ หรือถูกปิดใช้งานตามนโยบาย` | ไม่ใช่ | ไม่ใช่ | — | ตรวจสอบ methods.allow และ methods.deny ใน GET /v1/chains เพื่อดูเมธอดที่รองรับ การรองรับการส่งธุรกรรมถูกกำหนดโดย methods.allow ใน GET /v1/chains. ขณะนี้ยังไม่รองรับการส่งธุรกรรมบน: HyperEVM. |
| 200 | -32601 | `subscription_not_available` | `การสมัครรับข้อมูล WebSocket ไม่พร้อมให้บริการบนเชนนี้` | ไม่ใช่ | ไม่ใช่ | — | ตรวจสอบการสมัครรับข้อมูลที่พร้อมใช้งานสำหรับเชนนี้ผ่าน GET /v1/chains |
| 200 | -32602 | `logs_filter_required` | `การสมัครรับข้อมูล logs จำเป็นต้องระบุที่อยู่หรือ topic0 (ค่าที่ไม่เป็น null ในตำแหน่ง topic แรก)` | ไม่ใช่ | ไม่ใช่ | — | ระบุที่อยู่หรือ topic0 ที่ไม่เป็น null ในตัวกรอง logs |
| 200 | -32600 | `batch_too_large` | `แบทช์มีขนาดใหญ่เกินไป: สูงสุด <N> คำขอ` | ไม่ใช่ | ไม่ใช่ | — | แบ่งแบทช์ออกเป็นชุดที่เล็กลงตามขีดจำกัดการเรียกสูงสุดที่ระบุไว้ในข้อมูลข้อผิดพลาด |
| 413 | 413 | `request_too_large` | `เนื้อหาคำขอ Data API เกินขีดจำกัดขนาด` | ไม่ใช่ | ไม่ใช่ | — | ลดขนาดเนื้อหาคำขอลง |
| 200 | -32000 | `not_found` | `ไม่พบธุรกรรม` | ไม่ใช่ | ไม่ใช่ | — | หากเพิ่งบรอดแคสต์หรือเพิ่งขุดบล็อก ให้รอการแพร่กระจายของเครือข่ายแล้วลองใหม่ มิฉะนั้นให้ตรวจสอบหมายเลขบล็อกหรือแฮช |
| 200 | -32011 | `state_window` | `สถานะย้อนหลังไม่พร้อมใช้งานนอกช่วง <N> บล็อกล่าสุด` | ไม่ใช่ | ไม่ใช่ | — | สืบค้นบล็อกภายใน state_window_blocks ที่เผยแพร่ใน GET /v1/chains หรือใช้ Data API สำหรับข้อมูลย้อนหลัง |
| 200 | -32011 | `range_not_indexed` | `ประวัติที่ร้องขอยังไม่ได้รับการทำดัชนีอย่างสมบูรณ์` | ไม่ใช่ | ไม่ใช่ | — | จำกัดประวัติที่ร้องขอให้อยู่ในขอบเขตที่ทำดัชนีแล้ว อย่าลองส่งคำขอสำหรับช่วงที่ยังไม่ครอบคลุมซ้ำโดยไม่มีการเปลี่ยนแปลง |
| 200 | -32011 | `history_not_ready` | `ประวัติที่ร้องขอยังไม่พร้อมใช้งาน` | ไม่ใช่ | ใช่ | รอให้การทำดัชนีตามทันข้อมูล; ปฏิบัติตาม error.data.retry_after_seconds หากมี | ลองใหม่เมื่อการทำดัชนีตามทันข้อมูล รอตามจำนวนวินาทีใน error.data.retry_after_seconds หากระบุไว้ |
| 429 | -32005 | `key_rate_limit` | `เกินขีดจำกัดอัตราความเร็ว CU ของ API key` | ไม่ใช่ | ใช่ | ปฏิบัติตามส่วนหัว Retry-After (วินาที) | รอตามจำนวนวินาทีที่ระบุในส่วนหัว Retry-After ก่อนลองใหม่ หรือกระจายเวิร์กโหลด |
| 429 | rate_limited | `rate_limited` | `เกินขีดจำกัดอัตราคำขอบน API หรือ GET /v1/account (มากกว่า 5 คำขอต่อวินาทีสำหรับคีย์นี้)` | ไม่ใช่ | ใช่ | ปฏิบัติตามส่วนหัว Retry-After (วินาที) | รอตามระยะเวลาที่ระบุใน Retry-After ก่อนลองใหม่อีกครั้ง |
| 429 | -32005 | `concurrency_limit` | `เกินขีดจำกัดคำขอที่ประมวลผลพร้อมกัน` | ไม่ใช่ | ใช่ | ปฏิบัติตามส่วนหัว Retry-After หรือรอให้คำขอที่กำลังทำงานอยู่เสร็จสิ้น | จำกัดขนาดพูลคำขอพร้อมกันของไคลเอนต์และลองใหม่อีกครั้งเมื่อมีที่ว่าง |
| 429 | -32005 | `free_plan_call_limit` | `เกินขีดจำกัดจำนวนคำขอต่อวินาทีของแพ็กเกจฟรี` | ไม่ใช่ | ใช่ | รอ 1 วินาทีก่อนลองใหม่ | ลดอัตราความถี่ของคำขอ หรือเติมเงินเพื่อปลดล็อกทรูพุตแบบชำระเงิน |
| 429 | -32022 | `request_exceeds_burst` | `ค่าใช้จ่ายของคำขอ <N> CU เกินความจุ burst <M> CU` | ไม่ใช่ | ไม่ใช่ | — | การรอจะไม่ช่วยแก้ปัญหานี้; ให้แบ่งแบทช์หรือลดพารามิเตอร์ของเมธอดเพื่อให้อยู่ในความจุ burst |
| 429 | -32022 | `free_plan_batch_too_large` | `คำขอมี <N> การเรียก ซึ่งเกินขีดจำกัดแพ็กเกจฟรี <M> คำขอต่อวินาที` | ไม่ใช่ | ไม่ใช่ | — | การรอจะไม่ช่วยแก้ปัญหานี้; ให้แบ่งแบทช์เพื่อให้จำนวนคำขออยู่ภายในขีดจำกัดแพ็กเกจฟรี หรือทำการเติมเงิน |
| 429 | -32005 | `ws_connection_limit` | `ถึงขีดจำกัดการเชื่อมต่อ WebSocket สำหรับคีย์หรือบัญชีนี้แล้ว` | ไม่ใช่ | ไม่ใช่ | — | ปิดการเชื่อมต่อ WebSocket ที่ไม่ได้ใช้ หรือนำการเชื่อมต่อที่มีอยู่เดิมกลับมาใช้ใหม่ |
| 200 | -32022 | `subscription_limit` | `ถึงขีดจำกัดการสมัครรับข้อมูล WebSocket สำหรับการเชื่อมต่อนี้แล้ว` | ไม่ใช่ | ไม่ใช่ | — | ยกเลิกการสมัครรับข้อมูลเหตุการณ์ที่ไม่จำเป็นอีกต่อไป หรือเปิดการเชื่อมต่อ WebSocket ใหม่ |
| 200 | -32005 | `ws_filter_capacity` | `ตัวกรอง WebSocket logs ถึงความจุสูงสุดแล้ว` | ไม่ใช่ | ไม่ใช่ | — | ยกเลิกการสมัครรับข้อมูล logs ที่มีอยู่เดิมหนึ่งรายการ หรือใช้ตัวกรองที่เจาะจงมากขึ้น |
| 200 | -32026 | `ws_push_overloaded` | `คิวแจ้งเตือน WebSocket มีภาระงานหนักเกินไป` | ไม่ใช่ | ใช่ | ลองใหม่อีกครั้งในภายหลังด้วย backoff หรือเชื่อมต่อใหม่ | ลองเรียกใช้ eth_subscribe อีกครั้งด้วย exponential backoff หรือเชื่อมต่อใหม่ การสมัครรับข้อมูลเดิมจะยังคงได้รับข้อความแจ้งเตือนต่อไป |
| 200 | -32005 | `overloaded` | `บริการมีภาระงานหนักเกินไป โปรดลองใหม่ในภายหลัง` | ไม่ใช่ | ใช่ | รอสักครู่แล้วลองใหม่ด้วย exponential backoff | ใช้ backoff ร่วมกับ jitter แล้วลองส่งคำขอใหม่อีกครั้ง |
| 402 | -32020 | `balance_exhausted` | `ยอดคงเหลือไม่เพียงพอ (เมื่อทราบยอดคงเหลือ error.data จะรวม balance_units และ balance_cu)` | ไม่ใช่ | ไม่ใช่ | — | เติมเงินออนเชน: รับที่อยู่เติมเงินจากคอนโซลหรือ `GET /v1/topup/deposit-address` (MCP `get_deposit_address`); ดู [คู่มือการเติมเงินสำหรับ Agent](https://docs.blockvectra.com/en/guides/agent-topup/) หรือรีเซ็ตโควตาในคอนโซลหากมีสิทธิ์ เมื่อทราบยอดคงเหลือ error.data จะมี balance_units (ติดลบเมื่อใช้วงเงินเกิน) และ balance_cu |
| 402 | -32020 | `free_grant_exhausted` | `โควตาฟรีหมดลงแล้ว (เมื่อทราบยอดคงเหลือ error.data จะรวม balance_units และ balance_cu)` | ไม่ใช่ | ไม่ใช่ | — | เติมเงินออนเชน: รับที่อยู่เติมเงินจากคอนโซลหรือ `GET /v1/topup/deposit-address` (MCP `get_deposit_address`); ดู [คู่มือการเติมเงินสำหรับ Agent](https://docs.blockvectra.com/en/guides/agent-topup/) รีเซ็ตโควตาหากพร้อมใช้งาน หรือรอโควตาของรอบถัดไป เมื่อทราบยอดคงเหลือ error.data จะมี balance_units (ติดลบเมื่อใช้วงเงินเกิน) และ balance_cu |
| 503 | -32021 | `billing_unavailable` | `ข้อมูลการเรียกเก็บเงินไม่พร้อมใช้งานชั่วคราว` | ไม่ใช่ | ใช่ | ปฏิบัติตามส่วนหัว Retry-After (วินาที) | นี่ไม่ใช่ปัญหาเกี่ยวกับยอดคงเหลือ; คีย์ที่สร้างขึ้นใหม่จะได้รับการซิงค์ภายในไม่กี่วินาที รอตาม Retry-After แล้วลองใหม่ |
| 200 | -32010 | `node_syncing` | `โหนดกำลังซิงค์ข้อมูล; คำขอไม่พร้อมให้บริการชั่วคราว` | ไม่ใช่ | ใช่ | รอสักครู่แล้วลองใหม่อีกครั้ง | รอให้โหนดซิงค์เสร็จสิ้น หรือตรวจสอบ GET /v1/status |
| 200 | -32603 | `upstream_unavailable` | `บริการต้นทางไม่พร้อมใช้งาน` | ไม่ใช่ | ใช่ | รอสักครู่แล้วลองใหม่อีกครั้ง | ลองใหม่อีกครั้งด้วย exponential backoff; ตรวจสอบ GET /v1/status เพื่อดูความสมบูรณ์ของโหนด |
| 504 | 504 | `upstream_timeout` | `บริการต้นทางไม่ตอบสนองภายในขีดจำกัดเวลา` | ไม่ใช่ | ใช่ | ลองใหม่อีกครั้งหลังจากหน่วงเวลาสั้นๆ | ลองส่งคำขอใหม่อีกครั้งด้วย exponential backoff |
| 200 | -32000 | `response_too_large` | `การตอบกลับจากต้นทางมีขนาดใหญ่เกินไป` | ไม่ใช่ | ไม่ใช่ | — | จำกัดพารามิเตอร์การสืบค้นให้แคบลง (เช่น ลดช่วงบล็อกใน eth_getLogs หรือร้องขอ trace ที่มีขนาดเล็กลง) |
| 200 | -32603 | `internal_error` | `เกิดข้อผิดพลาดของบริการภายใน` | ไม่ใช่ | ไม่ใช่ | — | ลองส่งคำขอใหม่อีกครั้ง; รายงานข้อผิดพลาดที่เกิดขึ้นต่อเนื่องไปยังฝ่ายสนับสนุนพร้อมระบุเวลาที่เกิดเหตุการณ์ |
| 200 | 4444 | — | `ประวัติที่ถูกตัดทอน (pruned) ไม่พร้อมใช้งาน` | ไม่ใช่ | ไม่ใช่ | — | บล็อกอยู่นอกช่วงประวัติที่เก็บรักษาไว้ของโหนดที่ตัดทอนข้อมูล; สืบค้นบล็อกประวัติผ่าน Data API |
| 200 | -32000 | — | `สถานะย้อนหลังไม่พร้อมใช้งาน; ข้อมูลเก่าไม่พร้อมใช้งานเนื่องจากการตัดทอนข้อมูล` | ไม่ใช่ | ไม่ใช่ | — | สืบค้นบล็อกภายในช่วงสถานะ หรือใช้ Data API สำหรับการสืบค้นข้อมูลย้อนหลัง |
| 200 | -32002 | — | `<node message>` | ไม่ใช่ | ใช่ | รอสองสามวินาทีแล้วลองใหม่ด้วยแบทช์ที่มีขนาดเล็กลง | ลดจำนวนคำขอในแบทช์ลงแล้วลองใหม่อีกครั้ง |
| 200 | -32003 | — | `<node message>` | ไม่ใช่ | ไม่ใช่ | — | แบ่งแบทช์ออกเป็นคำขอย่อยๆ เพื่อลดขนาดของการตอบกลับ |
| 200 | -32601 | — | `<node message>` | ไม่ใช่ | ไม่ใช่ | — | ตรวจสอบ methods.allow และ methods.deny ใน GET /v1/chains เพื่อดูเมธอดที่รองรับ การรองรับการส่งธุรกรรมถูกกำหนดโดย methods.allow ใน GET /v1/chains. ขณะนี้ยังไม่รองรับการส่งธุรกรรมบน: HyperEVM. |
| 200 | -32603 | — | `<node message>` | ไม่ใช่ | ใช่ | ลองใหม่อีกครั้งหลังจากหน่วงเวลาสั้นๆ | ลองส่งคำขอใหม่อีกครั้ง; รายงานข้อผิดพลาดที่เกิดขึ้นต่อเนื่องไปยังฝ่ายสนับสนุนพร้อมระบุเวลาที่เกิดเหตุการณ์ |
| 200 | -32600 | — | `<node message>` | ไม่ใช่ | ไม่ใช่ | — | ตรวจสอบแต่ละคำขอในแบทช์เพื่อหาพารามิเตอร์ที่ไม่ถูกต้อง; แบ่งชุดคำขอแล้วลองใหม่ |
| 200 | * | — | `<node message>` | ใช่ | ไม่ใช่ | — | โหนดได้ดำเนินการประมวลผลแล้วและคำขอได้รับการคิดค่าบริการแล้ว ตรวจสอบเหตุผล/ข้อมูล revert หรือพารามิเตอร์ของคำขอ; อย่าลองส่งคำขอเดิมซ้ำโดยไม่ได้ตรวจสอบ |
| 408 | 408 | — | `คำขอหมดเวลาหลังจาก 35 วินาทีระหว่างการเสร็จสิ้นส่วนหัวของคำขอและการตอบกลับ` | เป็นไปได้ | ใช่ | รอสองสามวินาทีก่อนลองใหม่สำหรับคำขออ่าน | คำขออาจส่งถึงโหนดและถูกคิดค่าบริการแล้ว สำหรับคำขออ่าน ให้ลองใหม่ด้วย backoff สำหรับคำขอเขียน (เช่น eth_sendRawTransaction) ให้ตรวจสอบสถานะธุรกรรมด้วยแฮชก่อน |

### รหัสปิดการเชื่อมต่อ WebSocket

รหัสปิดการเชื่อมต่อ WebSocket และการดำเนินการที่แนะนำสำหรับไคลเอนต์

| รหัส | Reason | ความหมาย | ลองใหม่ได้ | เวลาที่ต้องรอ (Retry-After) | การดำเนินการของ Agent |
| --- | --- | --- | --- | --- | --- |
| 1001 | — | `การเชื่อมต่อไม่ได้ใช้งาน (idle)` | ใช่ | เชื่อมต่อใหม่เมื่อจำเป็น | เชื่อมต่อใหม่เมื่อจำเป็น |
| 1003 | — | `ไม่ยอมรับเฟรมไบนารี` | ไม่ใช่ | — | อย่าเชื่อมต่อใหม่โดยอัตโนมัติ; ส่งเฉพาะเฟรมข้อความ UTF-8 เท่านั้น |
| 1009 | — | `ข้อความมีขนาดใหญ่เกินไป` | ไม่ใช่ | — | อย่าเชื่อมต่อใหม่โดยอัตโนมัติ; แบ่งคำขอขนาดใหญ่ออกเพื่อไม่ให้เกิน 1 MiB |
| 1012 | — | `บริการเริ่มต้นใหม่` | ใช่ | เชื่อมต่อใหม่ด้วย backoff ร่วมกับ jitter | เชื่อมต่อใหม่ด้วย backoff ร่วมกับ jitter สมัครรับข้อมูลใหม่อีกครั้ง และสืบค้นข้อมูลที่ขาดหายไปเพื่อเติมเต็ม |
| 1013 | — | `เชนไม่พร้อมใช้งาน; มีภาระงานหนักเกินไป` | ใช่ | เชื่อมต่อใหม่ด้วย exponential backoff และ full jitter | เชื่อมต่อใหม่ด้วย exponential backoff และ full jitter สมัครรับข้อมูลใหม่อีกครั้ง และสืบค้นข้อมูลที่ขาดหายไปเพื่อเติมเต็ม |
| 4402 | — | `ยอดคงเหลือไม่เพียงพอ` | ไม่ใช่ | — | อย่าเชื่อมต่อใหม่โดยอัตโนมัติ; เติมเงินออนเชน: รับที่อยู่เติมเงินจากคอนโซลหรือ `GET /v1/topup/deposit-address` (MCP `get_deposit_address`); ดู [คู่มือการเติมเงินสำหรับ Agent](https://docs.blockvectra.com/en/guides/agent-topup/) หรือรีเซ็ตโควตาในคอนโซลหากมีสิทธิ์ |
| 4404 | — | `API key ไม่ถูกต้อง` | ไม่ใช่ | — | อย่าเชื่อมต่อใหม่โดยอัตโนมัติ; ตรวจสอบหรือสลับหมุนเวียน API key ในคอนโซล |
| 4408 | — | `บริการปิดเซสชันเมื่อคิว push เกิน 512 KiB (524,288 ไบต์) และยกเลิกข้อความที่รอดำเนินการ; ไคลเอนต์อาจไม่ได้รับเฟรมปิด (เบราว์เซอร์รายงาน 1006); ให้จัดการกับการตัดการเชื่อมต่อที่ไม่คาดคิดเช่นเดียวกับ 4408` | ใช่ | เชื่อมต่อใหม่ด้วย backoff; ลดการสมัครรับข้อมูลหรืออ่านข้อมูลให้เร็วขึ้น | จัดการกับการตัดการเชื่อมต่อที่ไม่คาดคิดโดยไม่มีเฟรมปิด (เบราว์เซอร์รายงาน 1006) เช่นเดียวกับ 4408: เชื่อมต่อใหม่ด้วย backoff สร้างการสมัครรับข้อมูลใหม่ และสืบค้นข้อมูลที่ขาดหายไปด้วย eth_getLogs; ลดการสมัครรับข้อมูลหรืออ่านข้อมูลให้เร็วขึ้น |
| 4429 | — | `เกินอัตราความเร็ว push` | ใช่ | เชื่อมต่อใหม่ด้วย backoff หรือลดการสมัครรับข้อมูล | ลดการสมัครรับข้อมูลหรือเชื่อมต่อใหม่ด้วย backoff |
| 4503 | — | `บริการเรียกเก็บเงินไม่พร้อมใช้งาน` | ใช่ | เชื่อมต่อใหม่ด้วย exponential backoff และ full jitter | เชื่อมต่อใหม่ด้วย exponential backoff และ full jitter แล้วสมัครรับข้อมูลใหม่อีกครั้ง |

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

ข้อผิดพลาดที่ส่งคืนโดยเอนด์พอยต์ Blockchain Data API ภายใต้ /v1/data/{chain}/

| HTTP | รหัส | Reason | ความหมาย | คิดค่าบริการ | ลองใหม่ได้ | เวลาที่ต้องรอ (Retry-After) | การดำเนินการของ Agent |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 400 | bad_request | — | `พารามิเตอร์การสืบค้นซ้ำซ้อน สตริงการสืบค้นไม่ถูกต้อง หรือคำขอมีรูปแบบที่ไม่ถูกต้อง` | ไม่ใช่ | ไม่ใช่ | — | ตรวจสอบพารามิเตอร์การสืบค้น ให้แน่ใจว่าพารามิเตอร์เช่น limit ปรากฏไม่เกินหนึ่งครั้ง และพารามิเตอร์ทั้งหมดถูกต้อง |
| 409 | not_indexed_yet | — | `หมายเลขบล็อกหรือช่วงเวลาที่ร้องขอเกิน as_of_block หรือแฮชที่ถูกแปลงเกิน as_of_block (พร้อม indexed_through เว้นแต่เชนจะยังไม่มีการทำดัชนีบล็อกใดๆ)` | ไม่ใช่ | ใช่ | รอสองสามวินาทีจนกว่า indexed_through จะถึงบล็อกที่ร้องขอ | โพลล์จนกว่าบล็อกที่ร้องขอหรือ to_block จะไม่มากกว่า indexed_through หรือรอให้เชนเริ่มบันทึกบล็อก |
| 409 | window_too_large | — | `ช่วงบล็อกกว้างเกิน 100,000 บล็อก และไม่ได้ตั้งค่า clamp เป็น true` | ไม่ใช่ | ไม่ใช่ | — | จำกัดช่วงบล็อก (from_block ถึง to_block) ให้แคบลงเหลือ <= 100,000 บล็อก หรือส่ง clamp=true |
| 409 | too_many_pools | — | `โทเค็นตรงกับสภาพคล่องมากกว่า 200 พูล โปรดสืบค้นตามมุมมองพูลแทน` | ไม่ใช่ | ไม่ใช่ | — | ระบุพูลที่ต้องการสืบค้นโดยเฉพาะแทนการสืบค้นโทเค็นทั่วไป |
| 409 | span_exceeded | — | `ช่วงเวลาวันที่ร้องขอเกินขีดจำกัดสูงสุด 90 วัน` | ไม่ใช่ | ไม่ใช่ | — | ลดช่วงวันจาก from_time ถึง to_time ให้เหลือไม่เกิน 90 วัน |
| 422 | no_coverage | — | `คุณลักษณะนี้ไม่รองรับบนเชนนี้ หรือบล็อกที่ร้องขออยู่ก่อนช่วงข้อมูลที่ครอบคลุม` | ไม่ใช่ | ไม่ใช่ | — | ตรวจสอบ `features` และ `coverage.from_block` ใน GET /v1/data/chains (หรือ `data_features` ใน GET /v1/status ของแผนฟรี) ก่อนที่จะสืบค้น |
| 503 | unavailable | — | `บริการ Data API ไม่พร้อมใช้งานชั่วคราว` | ไม่ใช่ | ใช่ | รอสักครู่แล้วลองใหม่ด้วย exponential backoff | ลองใหม่อีกครั้งหลังจากหน่วงเวลาสั้นๆ โดยใช้ exponential backoff |
| 402 | insufficient_balance | — | `ยอดคงเหลือแบบชำระเงินหรือโควตาฟรีหมดลงแล้ว (เมื่อทราบยอดคงเหลือ error.data จะรวม balance_units และ balance_cu)` | ไม่ใช่ | ไม่ใช่ | — | เติมเงินออนเชน: รับที่อยู่เติมเงินจากคอนโซลหรือ `GET /v1/topup/deposit-address` (MCP `get_deposit_address`); ดู [คู่มือการเติมเงินสำหรับ Agent](https://docs.blockvectra.com/en/guides/agent-topup/) หรือรอการเติมโควตาฟรีรอบถัดไป |
| 429 | cost_exceeds_burst | — | `คำขอเดียวมีค่าใช้จ่ายมากกว่าความจุ burst ของคีย์` | ไม่ใช่ | ไม่ใช่ | — | แบ่งคำขอออกเป็นคำขอย่อยๆ ที่เล็กลง การลองส่งคำขอเดิมซ้ำจะไม่สำเร็จ |
| 503 | gateway_overloaded | — | `ความจุของ Data API ไม่พร้อมใช้งานชั่วคราว` | ไม่ใช่ | ใช่ | ลองใหม่โดยใช้ backoff (Retry-After: 1) | ลดคำขอที่ส่งพร้อมกันข้ามคีย์และเชนต่างๆ ของบัญชีนี้ รอตาม Retry-After ก่อนลองใหม่ error.data.reason จะเป็น null |

### ข้อผิดพลาด Console, บัญชี และ Faucet API

ข้อผิดพลาดที่ส่งคืนโดยเอนด์พอยต์การจัดการ, การจัดสรรคีย์, การยืนยันตัวตน และ faucet ภายใต้ /v1/

| HTTP | รหัส | Reason | ความหมาย | คิดค่าบริการ | ลองใหม่ได้ | เวลาที่ต้องรอ (Retry-After) | การดำเนินการของ Agent |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 409 | topup_disabled | — | `ระบบเติมเงินถูกระงับชั่วคราว หรือขณะนี้ไม่มีเครือข่ายที่พร้อมใช้งานสำหรับการเติมเงิน ไม่สามารถจัดสรรที่อยู่ใหม่ได้ แต่ที่อยู่ที่ได้รับการจัดสรรไว้แล้วยังคงกำหนดให้กับบัญชีเดิม` | ไม่ใช่ | ไม่ใช่ | — | ตรวจสอบความพร้อมใช้งานของการเติมเงินผ่าน GET /v1/topup/status แล้วลองใหม่ภายหลังเมื่อเปิดใช้งานการเติมเงิน |
| 503 | deposit_unavailable | — | `ไม่สามารถจัดสรรที่อยู่สำหรับเติมเงินได้ชั่วคราว โปรดลองใหม่ตามส่วนหัว Retry-After` | ไม่ใช่ | ใช่ | ปฏิบัติตามส่วนหัว Retry-After (วินาที) และใช้ exponential backoff | ลองใหม่ตามส่วนหัว Retry-After โดยใช้ exponential backoff |
| 400 | invalid_request | `invalid_username` | `รูปแบบชื่อผู้ใช้ไม่ถูกต้อง (ต้องเป็นตัวอักษร ตัวเลข หรือขีดล่าง)` | ไม่ใช่ | ไม่ใช่ | — | ระบุชื่อผู้ใช้ที่ถูกต้องตามข้อกำหนดของอักขระและความยาว |
| 400 | invalid_request | `expires_at` | `เวลาหมดอายุของคีย์ไม่ได้อยู่ในอนาคต หรือเกินระยะเวลาใช้งานสูงสุดที่อนุญาต` | ไม่ใช่ | ไม่ใช่ | — | กำหนด expires_at เป็นเวลา RFC 3339 ในอนาคตภายในระยะเวลาที่อนุญาต (ค่าเริ่มต้น 365 วัน) หรือใช้ expires_in_secs |
| 400 | invalid_request | `cu_cap` | `พารามิเตอร์ cu_cap อยู่นอกช่วงที่กำหนด (ต้องเป็นจำนวนเต็มระหว่าง 1 ถึง 9007199254740991)` | ไม่ใช่ | ไม่ใช่ | — | กำหนด cu_cap เป็นจำนวนเต็มระหว่าง 1 ถึง 9007199254740991 หรือละเว้นเพื่อไม่จำกัด CU |
| 400 | siwe_invalid | `expired` | `ข้อความ Sign-In with Ethereum (SIWE) หมดอายุแล้ว หรือ nonce ถูกใช้งานไปแล้ว` | ไม่ใช่ | ใช่ | รับคำท้า (challenge) ใหม่ทันทีแล้วลงนาม | ขอคำท้าใหม่จาก /v1/auth/siwe/challenge แล้วลงนามในข้อความที่ออกให้ใหม่ |
| 400 | siwe_invalid | `chain_mismatch` | `chainId ในข้อความ SIWE ไม่ตรงกับการตั้งค่าของเซิร์ฟเวอร์` | ไม่ใช่ | ไม่ใช่ | — | ใช้ chainId ที่ส่งคืนจาก /v1/auth/siwe/challenge เมื่อสร้างข้อความ SIWE |
| 400 | siwe_invalid | `domain_mismatch` | `domain ในข้อความ SIWE ไม่ตรงกับโฮสต์ของเซิร์ฟเวอร์` | ไม่ใช่ | ไม่ใช่ | — | ตรวจสอบให้แน่ใจว่า domain และ uri ตรงกับโฮสต์ของเซิร์ฟเวอร์ที่ส่งคืนในคำท้า |
| 400 | siwe_invalid | `signature` | `การตรวจสอบลายเซ็นการเข้ารหัสลับ SIWE ล้มเหลว` | ไม่ใช่ | ไม่ใช่ | — | ตรวจสอบให้แน่ใจว่าข้อความได้รับการลงนามด้วยคีย์ส่วนตัวที่ตรงกับที่อยู่ที่ระบุ |
| 409 | key_limit_reached | `active_keys` | `จำนวน API key ที่ใช้งานอยู่ (ยังไม่ถูกเพิกถอน) ถึงขีดจำกัดสูงสุดของบัญชีแล้ว` | ไม่ใช่ | ไม่ใช่ | — | เพิกถอนคีย์เดิมที่ไม่ได้ใช้งานก่อนสร้างคีย์ใหม่ |
| 409 | no_reset_available | `nothing_to_reset` | `ยอดคงเหลือเท่ากับหรือสูงกว่าเป้าหมายการรีเซ็ตอยู่แล้ว สิทธิ์การรีเซ็ตจะยังคงถูกเก็บรักษาไว้` | ไม่ใช่ | ไม่ใช่ | — | ไม่จำเป็นต้องรีเซ็ตหากยอดคงเหลือยังไม่หมดลง |
| 429 | rate_limited | `daily_creations` | `ถึงขีดจำกัดการสร้างคีย์ภายใน 24 ชั่วโมงของบัญชีแล้ว` | ไม่ใช่ | ใช่ | ปฏิบัติตามส่วนหัว Retry-After (วินาที) | สลับหมุนเวียนคีย์ที่มีอยู่แทนการสร้างคีย์ใหม่ หรือรอให้รอบ 24 ชั่วโมงรีเซ็ต |
| 429 | signup_rate_limited | `per_ip` | `ถึงขีดจำกัดอัตราการลงทะเบียนสำหรับซับเน็ต IP ของไคลเอนต์แล้ว` | ไม่ใช่ | ใช่ | ปฏิบัติตามส่วนหัว Retry-After (วินาที) | รอตามระยะเวลา Retry-After ก่อนสร้างบัญชีใหม่จากเครือข่ายนี้ |
| 429 | signup_rate_limited | `global` | `ถึงขีดจำกัดอัตราการลงทะเบียนผู้ใช้ใหม่ทั่วโลกจากทุกแหล่งแล้ว` | ไม่ใช่ | ใช่ | ปฏิบัติตามส่วนหัว Retry-After (วินาที) | รอตามระยะเวลา Retry-After ก่อนลองสร้างบัญชีใหม่อีกครั้ง |
| 400 | oauth_invalid | — | `พารามิเตอร์ OAuth ไม่ถูกต้อง หรือสถานะ callback ไม่รู้จัก หมดอายุ หรือถูกใช้งานไปแล้ว` | ไม่ใช่ | ใช่ | — | เริ่มต้นขั้นตอนการเข้าสู่ระบบ OAuth ใหม่จาก /v1/auth/{provider}/start |
| 400 | login_code_invalid | — | `รหัสเข้าสู่ระบบไม่รู้จัก หมดอายุ ถูกใช้งานไปแล้ว หรือไม่ตรงกับตัวตรวจสอบ PKCE` | ไม่ใช่ | ไม่ใช่ | — | เริ่มต้นการเข้าสู่ระบบใหม่เพื่อรับรหัสเข้าสู่ระบบใหม่ |
| 401 | unauthenticated | — | `ไม่มีเซสชันเข้าสู่ระบบ หรือโทเค็นเซสชันไม่ถูกต้อง หมดอายุ หรือถูกเพิกถอน บน Top-up API (/v1/topup/*) ข้อผิดพลาดนี้จะเกิดขึ้นเมื่อส่วนหัว Authorization มีโทเค็นที่ไม่ใช่ Bearer หรือไม่ถูกต้อง แทนที่จะเป็น x-api-key` | ไม่ใช่ | ไม่ใช่ | — | เข้าสู่ระบบใหม่เพื่อรับโทเค็นเซสชัน Bearer ใหม่ สำหรับ Top-up API ให้ส่ง API key ในส่วนหัว x-api-key แทน Authorization |
| 403 | user_disabled | — | `บัญชีถูกระงับการใช้งานโดยผู้ดูแลระบบ` | ไม่ใช่ | ไม่ใช่ | — | ติดต่อ contact@blockvectra.com เพื่อขอรับความช่วยเหลือเกี่ยวกับบัญชี |
| 404 | provider_disabled | — | `รู้จักผู้ให้บริการ OAuth นี้ แต่ปัจจุบันถูกปิดการใช้งาน` | ไม่ใช่ | ไม่ใช่ | — | ใช้ SIWE หรือผู้ให้บริการยืนยันตัวตนรายอื่นที่รองรับ |
| 409 | identity_in_use | — | `ข้อมูลระบุตัวตน (วอลเล็ตหรือบัญชี OAuth) ได้รับการเชื่อมโยงกับผู้ใช้อื่นอยู่แล้ว` | ไม่ใช่ | ไม่ใช่ | — | ยกเลิกการเชื่อมโยงข้อมูลระบุตัวตนจากบัญชีก่อนหน้า หรือใช้ข้อมูลระบุตัวตนอื่น |
| 409 | identity_limit_reached | — | `ถึงขีดจำกัดจำนวนข้อมูลระบุตัวตนที่เชื่อมโยงได้สูงสุด (5) สำหรับบัญชีนี้แล้ว` | ไม่ใช่ | ไม่ใช่ | — | ยกเลิกการเชื่อมโยงข้อมูลระบุตัวตนเดิมก่อนที่จะเพิ่มรายการใหม่ |
| 409 | last_identity | — | `ไม่สามารถยกเลิกการเชื่อมโยงข้อมูลระบุตัวตนเพียงรายการเดียวที่เหลืออยู่ของบัญชีได้` | ไม่ใช่ | ไม่ใช่ | — | เพิ่มข้อมูลระบุตัวตนใหม่ก่อนที่จะยกเลิกการเชื่อมโยงข้อมูลระบุตัวตนปัจจุบัน |
| 409 | key_not_active | — | `พยายามสลับหมุนเวียน API key ที่ถูกปิดใช้งาน เพิกถอน หรือหมดอายุแล้ว` | ไม่ใช่ | ไม่ใช่ | — | สร้างคีย์ใหม่หรือสลับหมุนเวียนคีย์ที่กำลังใช้งานอยู่ |
| 409 | no_reset_available | — | `ไม่มีสิทธิ์การรีเซ็ตเหลืออยู่ในบัญชีนี้แล้ว` | ไม่ใช่ | ไม่ใช่ | — | เติมเงินออนเชน: รับที่อยู่เติมเงินจากคอนโซลหรือ `GET /v1/topup/deposit-address` (MCP `get_deposit_address`); ดู [คู่มือการเติมเงินสำหรับ Agent](https://docs.blockvectra.com/en/guides/agent-topup/) หรือรอรอบโปรโมชันถัดไป |
| 413 | payload_too_large | — | `ขนาดเนื้อหาของคำขอเกินขีดจำกัด 64 KiB` | ไม่ใช่ | ไม่ใช่ | — | ลดขนาดเพย์โหลดของคำขอลงให้น้อยกว่า 64 KiB |
| 503 | signup_paused | — | `การลงทะเบียนผู้ใช้ใหม่ทั่วโลกถูกระงับชั่วคราว บัญชีที่มีอยู่สามารถเข้าสู่ระบบได้ตามปกติ` | ไม่ใช่ | ใช่ | ลองใหม่อีกครั้งในภายหลัง | การลงทะเบียนผู้ใช้ใหม่ถูกระงับชั่วคราว ตรวจสอบสถานะและลองใหม่ภายหลัง |
| 503 | usage_unavailable | — | `บริการรายงานการใช้งานไม่พร้อมให้บริการชั่วคราว` | ไม่ใช่ | ใช่ | รอสักครู่แล้วลองใหม่ | ส่งผลกระทบเฉพาะเอนด์พอยต์ /usage เท่านั้น เอนด์พอยต์อื่นทำงานตามปกติ ลองใหม่หลังจากหน่วงเวลาสั้นๆ |
| 500 | internal | — | `เกิดข้อผิดพลาดของเซิร์ฟเวอร์ที่ไม่คาดคิด` | ไม่ใช่ | ใช่ | ลองใหม่หลังจากหน่วงเวลาสั้นๆ | ลองส่งคำขอใหม่อีกครั้งโดยใช้ exponential backoff |
| 400 | invalid_address | `invalid_address` | `รูปแบบหรือ checksum ของที่อยู่ผู้รับไม่ถูกต้อง` | ไม่ใช่ | ไม่ใช่ | — | ใช้ 0x ตามด้วยอักขระเลขฐานสิบหก 40 ตัว อักษรตัวพิมพ์เล็กหรือมี checksum ตาม EIP-55; ตรวจสอบ data.field (/address) |
| 503 | faucet_empty | `faucet_empty` | `Faucet มีเงินไม่เพียงพอสำหรับคำขอและค่าธรรมเนียมการทำธุรกรรม` | ไม่ใช่ | ใช่ | ปฏิบัติตามส่วนหัว Retry-After (วินาที) | รอตาม Retry-After ก่อนลองใหม่; อย่าสรุปว่าได้รับ test ETH จนกว่าจะได้รับการตอบกลับที่ยอมรับคำขอ |
| 503 | service_unavailable | `service_unavailable` | `การประมวลผลคำขอ faucet ไม่พร้อมใช้งานชั่วคราว หรือคำขอก่อนหน้านี้ยังไม่มีใบเสร็จการทำธุรกรรม` | ไม่ใช่ | ใช่ | ปฏิบัติตามส่วนหัว Retry-After | รอตาม Retry-After ก่อนลองใหม่; อย่าสรุปว่าได้รับ test ETH จนกว่าจะได้รับการตอบกลับที่ยอมรับคำขอ |

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

ข้อผิดพลาดจากการจัดการการสมัครรับข้อมูล webhook และประวัติเหตุการณ์ภายใต้ /v1/push/

| HTTP | รหัส | Reason | ความหมาย | คิดค่าบริการ | ลองใหม่ได้ | เวลาที่ต้องรอ (Retry-After) | การดำเนินการของ Agent |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 400 | invalid_request | — | `ฟิลด์คำขอ ที่อยู่ การแบ่งหน้า หรือช่วงบล็อกไม่ถูกต้อง` | ไม่ใช่ | ไม่ใช่ | — | ตรวจสอบ data.field และ data.invalid; แก้ไขคำขอ |
| 401 | missing_api_key | — | `ไม่มี x-api-key` | ไม่ใช่ | ไม่ใช่ | — | ส่ง API key ในส่วนหัว x-api-key |
| 401 | invalid_api_key | — | `API key ไม่รู้จัก ถูกปิดใช้งาน หรือถูกเพิกถอน` | ไม่ใช่ | ไม่ใช่ | — | ใช้คีย์ที่กำลังใช้งานอยู่ของบัญชีคุณ |
| 402 | insufficient_balance | — | `ยอดคงเหลือหรือโควตาฟรีหมดลงสำหรับประวัติเหตุการณ์` | ไม่ใช่ | ไม่ใช่ | — | ตรวจสอบ data.reason (balance_exhausted หรือ free_grant_exhausted) และ data.balance_units / data.balance_cu หากมี; เติมเงินผ่าน data.topup_url หรือ data.deposit_address_url |
| 403 | key_cap_exhausted | — | `ขีดจำกัด CU ของ API key หมดลงสำหรับประวัติเหตุการณ์` | ไม่ใช่ | ไม่ใช่ | — | ตรวจสอบ data.cu_cap และสร้างคีย์ใหม่ในคอนโซล |
| 403 | key_expired | — | `API key หมดอายุแล้ว` | ไม่ใช่ | ไม่ใช่ | — | ใช้คีย์ที่ยังไม่หมดอายุของบัญชีคุณ |
| 404 | not_found | — | `ไม่พบเส้นทาง เมธอด หรือการสมัครรับข้อมูล webhook` | ไม่ใช่ | ไม่ใช่ | — | ตรวจสอบพาธ เมธอด และบัญชีที่เป็นเจ้าของการสมัครรับข้อมูล |
| 409 | limit_reached | — | `ถึงขีดจำกัดการสมัครรับข้อมูลหรือคู่ที่อยู่ของบัญชีแล้ว` | ไม่ใช่ | ไม่ใช่ | — | ตรวจสอบ data.limit และ data.max; ลดจำนวนการสมัครรับข้อมูลหรือที่อยู่ลง |
| 413 | request_too_large | — | `เนื้อหาคำขอเกินขีดจำกัดของเส้นทาง` | ไม่ใช่ | ไม่ใช่ | — | ลดขนาดของรายการที่อยู่หรือแบ่งออกเป็นหลายกลุ่ม |
| 422 | chain_not_available | — | `เชนไม่พร้อมใช้งานสำหรับ push หรือไม่มีอยู่ในการสมัครรับข้อมูล` | ไม่ใช่ | ไม่ใช่ | — | ตรวจสอบ GET /v1/push/chains และ chains ของการสมัครรับข้อมูล |
| 422 | chains_required | — | `ต้องระบุอย่างน้อยหนึ่งเชน` | ไม่ใช่ | ไม่ใช่ | — | ระบุออบเจกต์ chains ที่ไม่ว่างเปล่า; ใช้สถานะ offline เพื่อหยุดรับการแจ้งเตือน |
| 422 | confirmations_out_of_range | — | `ความลึกของการยืนยัน (confirmations) อยู่นอกช่วงของเชน` | ไม่ใช่ | ไม่ใช่ | — | เลือก confirmations ระหว่าง data.min ถึง data.max |
| 422 | destination_not_allowed | — | `URL ปลายทางของ webhook ไม่ได้รับอนุญาต` | ไม่ใช่ | ไม่ใช่ | — | ตรวจสอบ data.rule; ใช้ชื่อโฮสต์ HTTPS บนพอร์ต 443 โดยไม่มีข้อมูลผู้ใช้หรือ fragment |
| 422 | block_out_of_range | — | `ช่วงบล็อกอยู่นอกช่วงการเล่นซ้ำ (replay) หรือประวัติที่พร้อมใช้งาน` | ไม่ใช่ | ไม่ใช่ | — | ใช้ data.min_block และ data.max_block เพื่อปรับช่วงบล็อก |
| 429 | cost_exceeds_burst | — | `ค่าใช้จ่ายของคำขอประวัติเกินความจุ burst ของคีย์` | ไม่ใช่ | ไม่ใช่ | — | ตรวจสอบ data.reason (request_exceeds_burst) และ data.max; เพิ่มความจุ burst ก่อนลองใหม่ การลองส่งคำขอเดิมซ้ำจะไม่ได้ผล |
| 429 | rate_limited | — | `ถึงขีดจำกัดอัตราการจัดการหรือการสืบค้นประวัติแล้ว` | ไม่ใช่ | ใช่ | รอตาม Retry-After | สำหรับประวัติ โปรดตรวจสอบ data.reason (key_rate_limit หรือ free_plan_call_limit); รอตามจำนวนวินาทีใน Retry-After และลดความถี่หรือจำนวนคำขอที่ส่งพร้อมกัน |
| 500 | internal_error | — | `เกิดข้อผิดพลาดในการบริการที่ไม่คาดคิด` | ไม่ใช่ | ไม่ใช่ | — | บันทึก x-request-id และติดต่อฝ่ายสนับสนุน |
| 503 | auth_unavailable | — | `บริการยืนยันตัวตน API key ไม่พร้อมใช้งานชั่วคราว` | ไม่ใช่ | ใช่ | รอตามจำนวนวินาทีใน Retry-After | รอตามจำนวนวินาทีใน Retry-After ก่อนลองใหม่อีกครั้ง |
| 503 | billing_unavailable | — | `สถานะการเรียกเก็บเงินของประวัติไม่พร้อมใช้งานชั่วคราว` | ไม่ใช่ | ใช่ | รอตามจำนวนวินาทีใน Retry-After | รอตามจำนวนวินาทีใน Retry-After ก่อนลองใหม่อีกครั้ง |
| 503 | upstream_unavailable | — | `ไม่สามารถเข้าถึงบริการ Push ต้นทางได้ชั่วคราว` | ไม่ใช่ | ใช่ | รอตามจำนวนวินาทีใน Retry-After | รอตามจำนวนวินาทีใน Retry-After ก่อนลองใหม่อีกครั้ง |
| 503 | service_unavailable | — | `บริการ Push หรือความจุที่อยู่ไม่พร้อมใช้งานชั่วคราว` | ไม่ใช่ | ใช่ | รอตามจำนวนวินาทีใน Retry-After | รอตามจำนวนวินาทีใน Retry-After ก่อนลองใหม่อีกครั้ง |

สำหรับข้อผิดพลาดในการสมัครรับข้อมูลหรือการส่งซ้ำของ Webhook โปรดทำตาม [คู่มือการกู้คืนการส่ง Push](https://docs.blockvectra.com/en/guides/webhook-push/#delivery-retries-and-replay) การผสานการทำงานฝั่งผู้รับเริ่มต้นด้วย [การตรวจสอบลายเซ็นจาก raw-body](https://docs.blockvectra.com/en/guides/webhook-push/#verify-signatures); โดย [ตัวอย่างการชำระเงินด้วยสเตเบิลคอยน์](https://docs.blockvectra.com/en/guides/stablecoin-payments/#receive-payments-with-webhooks) จะเพิ่มการกำจัดเหตุการณ์ซ้ำซ้อน, การตรวจสอบใบเสร็จ, การเติมเต็มช่องว่างข้อมูล และการกระทบยอดเมื่อเกิด reorg ดู [กฎการคิดค่าบริการ](https://docs.blockvectra.com/en/guides/billing-rules/#webhook-push-billing) สำหรับการวัดปริมาณ และ [การเชื่อมต่อ WebSocket ใหม่](https://docs.blockvectra.com/en/guides/websocket-subscriptions/#reconnection-and-exponential-backoff) สำหรับการสมัครรับข้อมูลผ่านการเชื่อมต่อ

สำหรับ `logs_range_too_large` โปรดตรวจสอบ [พารามิเตอร์ของเมธอด eth\_getLogs](https://docs.blockvectra.com/en/api/json-rpc/methods/eth_getLogs/) และทำตาม [คู่มือขีดจำกัดช่วงบล็อกและการสืบค้นแบบแบ่งส่วน](https://docs.blockvectra.com/en/guides/getlogs-block-range/)

สำหรับการขอรับเหรียญจาก faucet บน Robinhood Chain โปรดดู [คู่มือ testnet faucet](https://docs.blockvectra.com/en/guides/robinhood-testnet-faucet/) สำหรับคุณสมบัติของผู้รับและการจัดการรหัสข้อผิดพลาดที่ใช้ร่วมกัน
