ข้อความข้อผิดพลาด API

อัปเดตล่าสุด: 8 สิงหาคม 2568

บทนำ

คำขอ API ส่วนใหญ่จะเสร็จสมบูรณ์ แต่บางครั้งอาจเกิดข้อผิดพลาดและมีการส่งคืนข้อความแสดงข้อผิดพลาดแทนการตอบกลับที่คาดไว้

API ของเรามีข้อความแสดงข้อผิดพลาดที่หลากหลายและละเอียด ซึ่งมีวัตถุประสงค์เพื่อระบุสาเหตุของข้อผิดพลาดและให้คำแนะนำสำหรับวิธีแก้ไขที่เหมาะสม

ข้อความแสดงข้อผิดพลาดของ API สามารถแบ่งออกเป็นหลายกลุ่มที่แตกต่างกัน (ขึ้นอยู่กับประเภทของข้อผิดพลาด สาเหตุที่แท้จริง และวิธีแก้ไขที่เหมาะสมที่สุด) แต่รูปแบบของข้อความแสดงข้อผิดพลาดของ API นั้นสอดคล้องกัน และมีดังนี้:

"Severity Level""Error Category":"Error Message"

"Severity Level" สามารถเป็นได้ทั้ง E สำหรับข้อผิดพลาด หรือ W สำหรับคำเตือน "Error Category" สามารถเป็นหนึ่งใน General, API, Query, Order, Trade, Funding หรือ Service "Error Message" สามารถเป็นสตริงข้อความใดก็ได้ที่อธิบายสาเหตุของข้อผิดพลาด (เช่น Invalid arguments)

ตัวอย่างเช่น ข้อผิดพลาดที่ระบุว่ามีการใช้คู่สกุลเงินที่ไม่ถูกต้องในการสอบถาม Ticker จะเป็นดังนี้:

EQuery:Unknown asset pair

โปรดทราบว่าซอฟต์แวร์ของบุคคลที่สามบางตัว (แอปมือถือ, บอทเทรด ฯลฯ) เลือกที่จะซ่อนข้อผิดพลาด API ดั้งเดิมและแสดงข้อผิดพลาดที่กำหนดเองแทน ดังนั้นจึงเป็นไปได้ที่จะมีรูปแบบหรือเนื้อหาข้อผิดพลาดทางเลือกขึ้นอยู่กับซอฟต์แวร์ที่ใช้งาน

  • ข้อผิดพลาดในการใช้งานทั่วไป

  • ข้อผิดพลาดในการจำกัดอัตรา

  • ข้อผิดพลาดในการเทรด (การส่ง/ยกเลิกคำสั่ง)

  • ข้อผิดพลาดในการระดมทุน (ฝาก/ถอน)

  • ข้อผิดพลาดสถานะบริการ

  • ข้อผิดพลาดภายใน

  • ข้อผิดพลาด Cloudflare (เครือข่าย)

ข้อผิดพลาดในการใช้งานทั่วไป

ข้อผิดพลาด "Permission denied" จะถูกส่งคืนเมื่อ API client พยายามทำงานที่ API key ไม่มีสิทธิ์ ตัวอย่างเช่น หาก API client พยายามดึงยอดคงเหลือในบัญชีโดยใช้ API key ที่กำหนดค่าให้เข้าถึงการเทรดได้ แต่ไม่สามารถเข้าถึงการจัดการบัญชีได้ ข้อผิดพลาด "permission denied" จะถูกส่งคืน คุณสามารถตรวจสอบ API key และการตั้งค่า (เช่น สิทธิ์) ได้ผ่านแท็บ Settings -> API ในการจัดการบัญชี คุณจะต้องตรวจสอบให้แน่ใจว่า API key ที่แอปของบุคคลที่สามของคุณใช้มีการตั้งค่าและสิทธิ์ทั้งหมดที่แอปของคุณต้องการ

ข้อผิดพลาดนี้จะถูกส่งคืนเมื่อ API key ที่ใช้สำหรับการเรียกหมดอายุหรือถูกปิดใช้งาน โปรดตรวจสอบ API key ในแท็บ Settings -> API ของการจัดการบัญชีของคุณ หรือสร้างใหม่และอัปเดตแอปพลิเคชันของคุณ

คุณสามารถดึงรายการคู่สินทรัพย์ทั้งหมดของเราได้จาก AssetPairs public call และค้นหาชื่อคู่เป็นรายการของ Json headers หรือโดยพารามิเตอร์ "altname": https://api.kraken.com/0/public/AssetPairs

ข้อผิดพลาดนี้จะถูกส่งคืนเมื่อมีการเรียกใช้เมธอดโดยไม่มีพารามิเตอร์ที่จำเป็น ตัวอย่างเช่น การเรียกใช้เมธอด QueryOrders โดยไม่ระบุพารามิเตอร์ transaction ID (txid) ที่ถูกต้อง จะทำให้เกิดข้อผิดพลาด "invalid arguments" การเรียกใช้เมธอดที่มีพารามิเตอร์ที่ไม่จำเป็นก็ยังคงไม่ส่งคืนข้อผิดพลาด "invalid arguments" เนื่องจากพารามิเตอร์ที่ไม่จำเป็นจะถูกละเว้น

ข้อผิดพลาด "Invalid signature" เกิดขึ้นหาก API key หรือ API secret ของคุณเขียนไม่ถูกต้องในโปรแกรมของคุณ หรือเนื่องจาก POST data ที่ใช้ในการยืนยันตัวตนและ POST data ที่ส่งไปยัง API ไม่ตรงกัน สำหรับการอ้างอิงเพิ่มเติม ต่อไปนี้คือตัวอย่างโค้ด Python เพื่อใช้ algorithm ลายเซ็น API ควรคัดลอกและวาง API public key ที่เหมาะสมจากการจัดการบัญชี และควรปรับปรุง API method และ POST data ให้เหมาะสม ค่าเอาต์พุตสามารถใช้โดยตรงเป็นค่าสำหรับ API-Sign HTTP header ได้ #!/usr/bin/env python

# Import required Python libraries
import time
import base64
import hashlib
import hmac

# Decode API private key from base64 format displayed in account management
api_secret = base64.b64decode("nmlrD83t1J+yVWKUBx9vD6j26C5zhC11tFfXpN+Ww+8oOVuGgse5AeADcvl95jYaD+UAi3D5CrVfFr8GfQ7zhA==")

# Variables (API method, nonce, and POST data)
api_path = "/0/private/TradeBalance"
api_nonce = str(int(time.time()*1000))
api_post = "nonce=" + api_nonce + "&asset=xxbt"

# Cryptographic hash algorithms
api_sha256 = hashlib.sha256(api_nonce + api_post).digest()
api_hmac = hmac.new(api_secret, api_path + api_sha256, hashlib.sha512)

# Encode signature into base64 format used in API-Sign value
api_signature = base64.b64encode(api_hmac.digest())

# API authentication signature for use in API-Sign HTTP header
print(api_signature)SHA256 คำนวณโดยใช้ค่า nonce เองและ POST data สำหรับ API method และ POST DATA ประกอบด้วยคู่ชื่อ/ค่าสำหรับ nonce (อีกครั้ง) และพารามิเตอร์ API method ตัวอย่างของข้อมูลที่ควรส่งไปยัง SHA256 สำหรับเมธอด TradeBalance จะเป็นดังนี้:SHA256 = SHA256 ของ "1541933977000nonce=1541933977000&asset=xxbt"ค่าสตริงที่ส่งไปยัง SHA256 ไม่ควรมีค่า null เพิ่มเติม (\0) และค่าสตริงไม่ควรถูกเข้ารหัสเป็น base64 หรือ hex (เช่น ค่าสตริงควรเป็นสตริงข้อความธรรมดา)URI path คือ URL ทั้งหมดของ API method ยกเว้นคำนำหน้า "https://api.kraken.com" ดังนั้น URI path ของเมธอด TradeBalance (ตัวอย่างเช่น) จะเป็นค่าสตริง "/0/private/TradeBalance" โดยไม่มีค่า null เพิ่มเติมHMAC SHA512 คำนวณโดยใช้ URI path และ SHA256 digest ที่คำนวณไว้ก่อนหน้านี้ โดยมี API private key ที่ถอดรหัส base64 เป็น HMAC key ตัวอย่างของข้อมูลที่ควรส่งไปยัง HMAC จะเป็นดังนี้:HMAC SHA512 โดยใช้ API private key ที่ถอดรหัส base64 = HMAC ของ "/0/private/TradeBalanceSHA256"API-Key และ API-Sign HTTP headers เป็น HTTP headers ที่กำหนดเองที่จำเป็นเพียงสองรายการเท่านั้น API-Key header เป็นสำเนาที่เหมือนกันของ API public key จากการจัดการบัญชี API-Sign header คือ HMAC SHA512 digest ที่เข้ารหัสโดยใช้ base64

คุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาดนี้ได้ที่นี่:https://support.kraken.com/hc/en-us/articles/360001148063และข้อมูลเพิ่มเติมเกี่ยวกับ Nonce และ Nonce Window ได้ที่นี่:https://support.kraken.com/hc/en-us/articles/360000906023https://support.kraken.com/hc/en-us/articles/360001148023

ข้อผิดพลาด "Invalid session" จะถูกส่งคืนผ่าน WebSocket API เมื่อมีการพยายามสมัครรับฟีดที่ได้รับการยืนยันตัวตน (ส่วนตัว) โดยใช้โทเค็นการยืนยันตัวตนที่ไม่ถูกต้องอีกต่อไป (เช่น หมดอายุแล้ว)

วิธีแก้ไขคือเพียงแค่ขอโทเค็นการยืนยันตัวตนใหม่ผ่าน REST API GetWebSocketsToken endpoint และใช้โทเค็นใหม่สำหรับคำขอสมัครรับข้อมูลที่ได้รับการยืนยันตัวตน (ส่วนตัว) ทั้งหมดในภายหลัง

ข้อผิดพลาด "bad request" บ่งชี้ว่ามีบางอย่างไม่ถูกต้องเกี่ยวกับ HTTP request พื้นฐาน (ไม่ใช่ API request ที่ตามมา) เช่น URL ไม่ตรงกันระหว่าง REST/WebSocket หรือไม่ได้รวม HTTP POST data อย่างถูกต้อง:

% curl --data "" https://api.kraken.com/0/private/GetWebSocketsToken

{"error":["EAPI:Bad request"]}

ข้อผิดพลาดนี้จะถูกส่งคืนเมื่อ endpoint ที่ถูกเรียกไม่ใช่ endpoint ที่ถูกต้อง

ข้อผิดพลาดในการจำกัดอัตรา

แม้ว่าการเพิ่มและยกเลิกคำสั่งซื้อจะไม่นับรวมกับขีดจำกัดตัวนับ API มาตรฐานของเรา แต่การดำเนินการเหล่านี้มีตัวนับการเพิ่มและยกเลิกคำสั่งซื้อของตัวเอง ตัวนับนี้ทำงานในลักษณะที่ว่ายิ่งคำสั่งซื้ออยู่ใน Order book นานเท่าใด ลูกค้าก็จะสามารถเพิ่มหรือยกเลิกคำสั่งซื้อได้มากขึ้นเท่านั้น

ข้อความแสดงข้อผิดพลาดการล็อกชั่วคราวอาจเกิดขึ้นได้หากคุณมีการเรียก API ที่ล้มเหลวมากเกินไป หรือมีข้อผิดพลาด nonce ที่ไม่ถูกต้องมากเกินไปในช่วงเวลาสั้นๆ หรือลายเซ็นไม่ถูกต้อง แม้ว่าการเรียกเหล่านี้จะส่งคืนข้อผิดพลาด แต่ข้อผิดพลาดนั้นยังคงนับรวมกับขีดจำกัด API ของคุณและอาจส่งผลให้เกิดการล็อกชั่วคราว

การล็อกชั่วคราวจะใช้เวลาประมาณ 15 นาที หลังจากได้รับข้อผิดพลาดการล็อกชั่วคราว โปรดรอ 15 นาทีก่อนที่จะส่งคำขอ API ใหม่ หากคุณกำลังเรียกใช้ข้อผิดพลาด nonce ที่ไม่ถูกต้องหลายครั้ง โปรดเพิ่ม nonce window เนื่องจากสิ่งนี้สามารถช่วยลดความถี่ที่ข้อผิดพลาดเหล่านี้จะเกิดขึ้นได้ โปรดพยายามลดความถี่ของการเรียก API ส่วนตัวของคุณด้วย

ข้อผิดพลาดในการเทรด

การเปิดสถานะ Spot บน Margin ใหม่ถูกระงับชั่วคราวเพื่อบำรุงรักษา Trading engine ฟีเจอร์นี้จะกลับมาให้บริการในไม่ช้า และคุณสามารถติดตามการอัปเดตได้ที่ status.kraken.com

เหตุผลอื่นอาจเป็นเพราะสถานะ Spot บน Margin ไม่พร้อมใช้งานสำหรับลูกค้าที่อาศัยอยู่ในบางประเทศในขณะนี้

บน Kraken คุณไม่สามารถเปิดสถานะ Long และ Short สำหรับคู่เดียวกันได้

หากต้องการเปิดสถานะ Long และ Short สำหรับสกุลเงินเดียวกัน โปรดเลือกคู่เทรดที่แตกต่างกันโดยใช้สกุลเงินเดียวกันเป็นสกุลเงินหลักหรือสกุลเงินอ้างอิง ตัวอย่าง: Short XBT/USD, Long XBT/EUR

ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณใช้เกินขีดจำกัดวงเงิน Margin สำหรับระดับการยืนยันตัวตนปัจจุบันของคุณ ขีดจำกัดวงเงิน Margin สำหรับแต่ละสกุลเงินจะแตกต่างกันไปตามระดับการยืนยันตัวตนปัจจุบันของคุณ

เรามีเงินทุนจำกัดสำหรับการขยาย Margin ข้อความ "insufficient margin" แสดงว่าเราไม่มีเงินทุนใน Margin pool ที่เกี่ยวข้องในขณะนี้ ซึ่งอาจเปลี่ยนแปลงได้ตลอดเวลา คุณอาจสามารถส่งคำสั่งซื้อขายได้สำเร็จในอีกไม่กี่วินาทีหรือนาทีต่อมา แต่คำสั่งซื้อขายที่มีปริมาณมากและคำสั่งซื้อขายที่ส่งในช่วงเวลาที่มีปริมาณมากอาจใช้เวลานานขึ้น โปรดขออภัยในความไม่สะดวก

ข้อผิดพลาดนี้เกิดขึ้นเมื่อมี Free Margin ไม่เพียงพอที่จะเปิดสถานะใหม่ในบัญชี หรือหากความพยายามปัจจุบันในการเปิดสถานะจะส่งผลให้ Free Margin ของบัญชีลดลงต่ำกว่า 100%

คุณไม่มีเงินทุนเพียงพอที่จะส่งคำสั่งซื้อขายนี้ โปรดตรวจสอบสถานะและคำสั่งซื้อขายที่เปิดอยู่ของคุณสำหรับรายการที่อาจทำให้เงินทุนของคุณถูกระงับ

คุณไม่เป็นไปตามปริมาณคำสั่งซื้อขายขั้นต่ำสำหรับสินทรัพย์นี้

คุณได้ใช้เกินจำนวนคำสั่งซื้อขายที่เปิดอยู่สูงสุดที่บัญชีของคุณสามารถทำได้

ขีดจำกัดเหล่านี้ขึ้นอยู่กับระดับการยืนยันตัวตนของคุณ โปรดปิดคำสั่งซื้อขายที่เปิดอยู่บางส่วนของคุณ หรือยืนยันตัวตนบัญชีของคุณในระดับที่สูงขึ้น

คุณได้ใช้เกินจำนวนสถานะที่เปิดอยู่สูงสุดที่บัญชีของคุณสามารถทำได้

ขีดจำกัดเหล่านี้ขึ้นอยู่กับระดับการยืนยันตัวตนของคุณ โปรดปิดหรือชำระสถานะที่เปิดอยู่บางส่วนหรือทั้งหมดของคุณ หรือยืนยันตัวตนบัญชีของคุณในระดับที่สูงขึ้นหากเป็นไปได้

มีความพยายามที่จะแก้ไขคำสั่งซื้อขายที่มีอยู่ (ที่เปิดอยู่) แต่การแก้ไขไม่สามารถดำเนินการให้เสร็จสมบูรณ์ได้สำเร็จ สาเหตุที่เป็นไปได้ ได้แก่ เงินทุนไม่เพียงพอสำหรับคำสั่งซื้อขายใหม่ สถานการณ์การเติมบางส่วน และคำสั่งซื้อขายแบบมีเลเวอเรจบางรายการ

ปริมาณใหม่น้อยกว่าปริมาณที่ดำเนินการ/เติมไปแล้ว

ขนาดคำสั่งซื้อขายเกินขีดจำกัดขนาดสถานะ Margin ของคู่เทรด

ปริมาณที่แสดงไม่เป็นไปตามปริมาณคำสั่งซื้อขายขั้นต่ำ

ปริมาณที่แสดงต้องน้อยกว่าปริมาณของคำสั่งซื้อขาย

คำสั่ง Iceberg ไม่สามารถใช้ร่วมกับประเภทคำสั่งซื้อขายอื่น ๆ ได้ ยกเว้นคำสั่ง Limit

ข้อผิดพลาดเกี่ยวกับการระดมทุน

สกุลเงินดิจิทัลแต่ละสกุลมีที่อยู่สำหรับการฝากใหม่ (ที่ยังไม่ได้ใช้) สูงสุด 5 ที่อยู่ หลังจากนั้นความพยายามใด ๆ ในการสร้างที่อยู่ใหม่ที่ 6 จะส่งคืนข้อผิดพลาด

ข้อผิดพลาดนี้จะถูกส่งคืนเมื่อมีการเรียกใช้ Funding endpoints ด้วยพารามิเตอร์ "method" ที่ไม่ถูกต้องหรือขาดหายไป

พารามิเตอร์อินพุต "key" ไม่ตรงกับคำอธิบายที่อยู่ที่ตั้งค่าไว้ในการจัดการบัญชี (ผ่าน Funding -> Withdraw)

จำนวนเงินถอนขั้นต่ำตามสกุลเงินจะแตกต่างกันไป และความพยายามในการถอนเงินที่ต่ำกว่าขั้นต่ำจะส่งผลให้เกิดข้อผิดพลาดนี้

นี่คือข้อผิดพลาดทั่วไปที่ระบุว่าคำขอระดมทุนไม่สามารถดำเนินการให้เสร็จสมบูรณ์ได้ (ตัวอย่างเช่น ลูกค้าจากบางสถานที่ที่พยายามส่งคำขอ On-chain Staking จะทำให้เกิดข้อผิดพลาดนี้)

ไม่สามารถดำเนินการถอนเงินที่ร้องขอได้ เนื่องจากที่อยู่ปลายทางขาดข้อมูลผู้รับ/ผู้รับผลประโยชน์ที่จำเป็น (โปรดทราบว่าปัจจุบันนี้ใช้ได้กับการถอนเงินบางรายการจากบัญชีแคนาดาเท่านั้น)

ข้อผิดพลาดสถานะบริการ

ข้อผิดพลาดของบริการที่คุณกำลังประสบอยู่นี้ควรเป็นเพียงชั่วคราวเท่านั้น คุณอาจต้องการส่งคำขอของคุณอีกครั้งหากล้มเหลว เราจะติดตามปัญหาและจะอัปเดตหน้าเว็บของเรา:

https://status.kraken.com/

ข้อผิดพลาดภายใน

เมื่อเรากำลังเผชิญกับปัญหาประสิทธิภาพของ API ลดลง สิ่งเหล่านี้อาจส่งผลให้เกิดปัญหาสำหรับ Kraken ในรูปแบบของข้อความบริการไม่พร้อมใช้งานและการหยุดทำงานของเว็บไซต์

ปัญหานี้เกี่ยวข้องกับความปลอดภัยของบัญชีของคุณซึ่งอาจถูกบุกรุก โปรดเปลี่ยนรหัสผ่านและการยืนยันตัวตนแบบสองปัจจัยของคุณ และติดต่อศูนย์สนับสนุนของเรา

ข้อผิดพลาดนี้เกิดขึ้นเมื่อแฟล็กหรือพารามิเตอร์อินพุตถูกปิดใช้งานชั่วคราวหรือถาวร ข้อผิดพลาดควรมาจากหนึ่งในอินพุตที่ส่งผ่าน โปรดติดต่อฝ่ายสนับสนุนของเราโดยส่งบันทึกพร้อมข้อมูลที่สมบูรณ์ที่ใช้สำหรับการเรียกที่สร้างข้อผิดพลาด

ข้อผิดพลาด 5xx และ 10xx เหล่านี้ไม่ใช่ข้อผิดพลาดของ API จริงๆ แต่เป็นข้อผิดพลาดของเว็บเซิร์ฟเวอร์จาก Cloudflare

ข้อผิดพลาดของ API จะถูกส่งคืนในรูปแบบ JSON เสมอ เช่น “error”:[“ErrorType:ErrorMessage”] ดังนั้นเมื่อใดก็ตามที่ได้รับข้อผิดพลาดในรูปแบบที่แตกต่างกัน (เช่น รหัสสถานะ HTTP 520, 504, 502, 1020 เป็นต้น) วิธีแก้ปัญหาชั่วคราวคือลองเรียก API อีกครั้งในไม่ช้าหลังจากนั้น และหวังว่าการเรียกนั้นจะสำเร็จ

ต้องการความช่วยเหลือเพิ่มเติมหรือไม่