Câu hỏi thường gặp về API nâng cao

Cập nhật lần cuối: 25 thg 11, 2025

Sử dụng điểm cuối cấp vốn API REST, khách hàng có thể nạp/rút tiền vào/ra khỏi tài khoản Kraken của họ và yêu cầu trạng thái thời gian thực của giao dịch nạp/rút tiền.

Các khoản nạp/rút tiền trải qua nhiều giai đoạn giữa yêu cầu ban đầu và giao dịch được hoàn tất, do đó các điểm cuối cấp vốn sẽ trả về một giá trị trạng thái khác nhau tùy thuộc vào thời điểm chúng được gọi.

Lưu ý rằng các giá trị trạng thái ban đầu đến từ trang 16/17 của tài liệu Giao thức Trao đổi Tài chính Internet (IFEX), nhưng các giá trị đã được sửa đổi một chút để phù hợp hơn với các giao dịch tiền điện tử (ví dụ, không phải tất cả các giá trị trạng thái có thể đều được sử dụng).

Nạp tiền

Các giá trị trạng thái có thể có cho giao dịch nạp tiền như sau:

  • Đã thanh toán = Khoản nạp đã được nhận nhưng vẫn cần xác nhận bổ sung trên blockchain.

  • Thành công = Khoản nạp đã đạt được số lượng xác nhận cần thiết trên blockchain.

  • Thất bại = Khoản nạp không thành công (vì một hoặc nhiều lý do khác nhau).

Sau đây là một số ví dụ về cách các giá trị trạng thái trên sẽ xuất hiện trong phản hồi từ điểm cuối DepositStatus:

Trạng thái đã thanh toán:{"error":[],"result":[{"method":"Dogecoin","aclass":"currency","asset":"XXDG","refid":"QSB7IFM-Q3LT3X-NVAOKE","txid":"92c908ea2ea819d678d67130e4d20b625a8f97f3cfff45f906dde8cef41a046a","info":"D7SLwMBPqfFMCZ8EJDMoVEePpZAFFegLt8","amount":"997.00000000","fee":"0.00000000","time":1611308478,"status":"Settled"}]}

Trạng thái thành công:{"error":[],"result":[{"method":"Dogecoin","aclass":"currency","asset":"XXDG","refid":"QSB7IFM-Q3LT3X-NVAOKE","txid":"92c908ea2ea819d678d67130e4d20b625a8f97f3cfff45f906tdde8cef41a046a","info":"D7SLwMBPqfFMCZ8EJDMoVEePpZAFFegLt8","amount":"997.00000000","fee":"0.00000000","time":1611308478,"status":"Success"}]}

Rút tiền

Các giá trị trạng thái có thể có cho giao dịch rút tiền như sau:

  • Ban đầu = Yêu cầu rút tiền đã được nhận và đang được kiểm tra tính hợp lệ (bất kỳ hạn chế cấp vốn nào trên tài khoản, v.v.).

  • Đang chờ xử lý = Khoản rút tiền đang chờ được xử lý bởi cổng cấp vốn của chúng tôi.

  • Đã thanh toán = Khoản rút tiền đã được gửi đến blockchain (tại thời điểm này, ID giao dịch blockchain sẽ có sẵn).

  • Thành công = Giao dịch rút tiền có ít nhất 1 xác nhận trên blockchain.

  • Đang giữ = Khoản rút tiền đã bị giữ lại và phải được đội ngũ cấp vốn của chúng tôi kiểm tra thủ công.

  • Thất bại = Khoản rút tiền không thành công (vì một hoặc nhiều lý do khác nhau).

Sau đây là một số ví dụ về cách các giá trị trạng thái trên sẽ xuất hiện trong phản hồi từ điểm cuối WithdrawStatus:

Trạng thái ban đầu:{"error":[],"result":[{"method":"Dogecoin","aclass":"currency","asset":"XXDG","refid":"ASBCMYC-F5ETQT-34NMWT","txid":null,"info":"DGNBPsa2GhhtZGEZo79uF3WN2bTxFxmc9y","amount":"98.00000000","fee":"2.00000000","time":1612782924,"status":"Initial"}]}

Trạng thái đang chờ xử lý:{"error":[],"result":[{"method":"Dogecoin","aclass":"currency","asset":"XXDG","refid":"ASBCMYC-F5ETQT-34NMWT","txid":null,"info":"DGNBPsa2GhhtZGEZo79uF3WN2bTxFxmc9y","amount":"98.00000000","fee":"2.00000000","time":1612782924,"status":"Pending"}]}

Trạng thái đã thanh toán:{"error":[],"result":[{"method":"Dogecoin","aclass":"currency","asset":"XXDG","refid":"ASBCMYC-F5ETQT-34NMWT","txid":"064536e901f2cbfa6e279aa7a87c700b64e0ce561bf6e266788c47496f75106c","info":"DGNBPsa2GhhtZGEZo79uF3WN2bTxFxmc9y","amount":"98.00000000","fee":"2.00000000","time":1612782924,"status":"Settled"}]}

Trạng thái thành công:{"error":[],"result":[{"method":"Dogecoin","aclass":"currency","asset":"XXDG","refid":"ASBCMYC-F5ETQT-34NMWT","txid":"064536e901f2cbfa6e279aa7a87c700b64e0ce561bf6e266788c47496f75106c","info":"DGNBPsa2GhhtZGEZo79uF3WN2bTxFxmc9y","amount":"98.00000000","fee":"2.00000000","time":1612782924,"status":"Success"}]}

Trạng thái thất bại:{"error":[],"result":[{"method":"Dogecoin","aclass":"currency","asset":"XXDG","refid":"ASBCMYC-F5ETQT-34NMWT","txid":null,"info":"DGNBPsa2GhhtZGEZo79uF3WN2bTxFxmc9y","amount":"98.00000000","fee":"2.00000000","time":1612782924,"status":"Failure","status-prop":"canceled"}]}

Thông tin bổ sung về nạp/rút tiền có sẵn qua các trang hỗ trợ cấp vốn bằng tiền mặtcấp vốn bằng tiền điện tử của chúng tôi.

Điểm cuối OHLC của API REST chỉ cung cấp một lượng dữ liệu lịch sử hạn chế, cụ thể là 720 điểm dữ liệu của khoảng thời gian được yêu cầu. Ví dụ, yêu cầu dữ liệu OHLC trong khoảng thời gian 1 phút sẽ trả về dữ liệu 720 phút gần nhất (12 giờ).

Đối với các ứng dụng yêu cầu dữ liệu OHLC hoặc tick bổ sung, có thể truy xuất toàn bộ lịch sử giao dịch của các thị trường của chúng tôi (thời gian và doanh số lịch sử) thông qua điểm cuối Giao dịch API REST. OHLC cho bất kỳ khung thời gian và khoảng thời gian nào sau đó có thể được tạo từ dữ liệu thời gian và doanh số lịch sử.

Điểm cuối Giao dịch có một tham số tùy chọn tên là since, chỉ định ngày/giờ bắt đầu của dữ liệu. Giá trị since là một dấu thời gian UNIX ở độ phân giải nano giây (một dấu thời gian UNIX tiêu chuẩn tính bằng giây với 9 chữ số bổ sung).

Ví dụ, một lệnh gọi đến điểm cuối Giao dịch như https://api.kraken.com/0/public/Trades?pair=xbtusd&since=1559347200000000000 sẽ trả về thời gian và doanh số lịch sử cho XBT/USD từ ngày 1 tháng 6 năm 2019 lúc 00:00:00 UTC:

{"error":[],"result":{"XXBTZUSD":[["8552.90000","0.03190270",1559347203.7998,"s","m",""],["8552.90000","0.03155529",1559347203.8086,"s","m",""],["8552.90000","0.00510797",1559347203.9664,"s","m",""],["8552.90000","0.09047336",1559347203.9789,"s","m",""],["8552.90000","0.00328738",1559347203.9847,"s","m",""],["8552.90000","0.00492152",1559347203.9897,"s","m",""],["8552.90000","0.00201848",1559347203.9937,"s","m",""],["8552.90000","0.11422068",1559347203.9993,"s","m",""],["8552.90000","0.00425858",1559347204.071,"s","m",""],["8552.90000","0.00427679",1559347204.0762,"s","m",""],["8552.90000","0.06381401",1559347204.1662,"s","m",""]
...
["8579.50000","0.05379597",1559350785.248,"s","l",""],["8579.50000","0.94620403",1559350785.2936,"s","l",""],["8578.10000","0.45529068",1559350785.297,"s","l",""]],"last":"1559350785297011117"}}

Các lệnh gọi tiếp theo đến điểm cuối Giao dịch nên thay thế giá trị của tham số since bằng giá trị của tham số last từ kết quả của lệnh gọi trước đó, chẳng hạn như https://api.kraken.com/0/public/Trades?pair=xbtusd&since=1559350785297011117.

Sử dụng giá trị since đặc biệt là 0 (không) sẽ trả về thời gian và doanh số lịch sử từ đầu thị trường (bắt đầu bằng giao dịch đầu tiên).

Tham chiếu người dùng là ID lệnh do khách hàng cung cấp có thể được sử dụng thay cho ID lệnh thực tế (do API cung cấp) cho một số tác vụ quản lý lệnh (đáng chú ý là hủy lệnh).

Tham chiếu người dùng được triển khai để linh hoạt nhất có thể và do đó có thể được sử dụng theo nhiều cách khác nhau, bao gồm:

  • làm ID duy nhất (trong đó mỗi lệnh có một tham chiếu người dùng khác nhau),

  • để nhóm các lệnh liên quan lại với nhau (chẳng hạn như nhóm các lệnh có mức đòn bẩy khác nhau),

  • hoặc làm ID dự phòng trong trường hợp ID lệnh thực tế không được biết.

Tham chiếu người dùng phải là một giá trị số từ 1 đến 2.147.483.647 (về cơ bản là bất kỳ số 32 bit dương nào) và do đó có thể được triển khai dưới dạng bộ đếm đơn giản, dưới dạng giá trị 32 bit có dấu ngẫu nhiên hoặc thậm chí dưới dạng dấu thời gian tính bằng giây (mặc dù điều này sẽ không thành công sau ngày 19 tháng 1 năm 2038 lúc 3:14:07 UTC).

Đặt lệnh với tham chiếu người dùng

Các lệnh có thể được đặt với tham chiếu người dùng đính kèm bằng cách gọi điểm cuối AddOrder và bao gồm tham số userref với tham chiếu người dùng làm giá trị:

$ ./krakenapi AddOrder pair=xdgusd type=buy ordertype=limit price=0.1 volume=50 userref=27649653

{"error":[],"result":{"descr":{"order":"buy 50.00000000 XDGUSD @ limit 0.1000000"},"txid":["OQJSXE-F5FOM-IXHVL4"]}}

Xem các lệnh có tham chiếu người dùng

Các lệnh đã có tham chiếu người dùng đính kèm có thể được xem bằng cách gọi các điểm cuối Open/Closed/QueryOrders và bao gồm tham số userref với tham chiếu người dùng hiện có làm giá trị (trong trường hợp này, tham chiếu người dùng hoạt động như một bộ lọc, chỉ hiển thị các lệnh liên quan):

$ ./krakenapi OpenOrders userref=27649653

{"error":[],"result":{"open":{"OQJSXE-F5FOM-IXHVL4":{"refid":null,"userref":27649653,"status":"open","opentm":1629618802.9812,"starttm":0,"expiretm":0,"descr":{"pair":"XDGUSD","type":"buy","ordertype":"limit","price":"0.1000000","price2":"0","leverage":"none","order":"buy 50.00000000 XDGUSD @ limit 0.1000000","close":""},"vol":"50.00000000","vol_exec":"0.00000000","cost":"0.000000000","fee":"0.000000000","price":"0.000000000","stopprice":"0.000000000","limitprice":"0.000000000","misc":"","oflags":"fciq"}}}}

$ ./krakenapi ClosedOrders userref=38695724

{"error":[],"result":{"closed":{"O7YEFN-3V4RK-FBNSNM":{"refid":null,"userref":38695724,"status":"canceled","reason":"User requested","opentm":1629619539.3593,"closetm":1629619542.2246,"starttm":0,"expiretm":0,"descr":{"pair":"XBTUSD","type":"buy","ordertype":"limit","price":"25000.0","price2":"0","leverage":"none","order":"buy 0.00010000 XBTUSD @ limit 25000.0","close":""},"vol":"0.00010000","vol_exec":"0.00000000","cost":"0.00000","fee":"0.00000","price":"0.00000","stopprice":"0.00000","limitprice":"0.00000","misc":"","oflags":"fciq"}},"count":1}}

Hủy lệnh có tham chiếu người dùng

Các lệnh đã có tham chiếu người dùng đính kèm có thể bị hủy bằng cách sử dụng tham chiếu người dùng bằng cách gọi điểm cuối CancelOrder và sử dụng tham chiếu người dùng làm giá trị txid (thay cho giá trị ID lệnh):

$ ./krakenapi CancelOrder txid=16764529

{"error":[],"result":{"count":1}}

Lưu ý rằng tất cả các lệnh mở có cùng tham chiếu người dùng sẽ bị hủy, do đó có thể thực hiện một lệnh gọi CancelOrder duy nhất để hủy nhiều lệnh cùng lúc (như được chỉ ra bởi giá trị count3 trong phản hồi sau):

$ ./krakenapi CancelOrder txid=48695624

{"error":[],"result":{"count":3}}

Vấn đề này có thể liên quan đến Cloudflare:

https://support.cloudflare.com/hc/en-us/articles/200169226-Why-am-I-getting-a-403-error-

LƯU Ý: Kraken đã bật "Kiểm tra tính toàn vẹn của trình duyệt".

Điều này có thể xảy ra nếu yêu cầu của bạn chứa các tiêu đề đáng ngờ. Ví dụ: yêu cầu của bạn có thể thiếu tác nhân người dùng hoặc sử dụng tác nhân người dùng không chuẩn; vì vậy vui lòng kiểm tra các tiêu đề yêu cầu của bạn.

Nếu bạn không thể tạo bất kỳ yêu cầu tiêu chuẩn nào mà hệ thống của chúng tôi cho phép, hãy gửi cho chúng tôi một bản sao đầy đủ các yêu cầu mà bạn đang cố gắng thực hiện, bao gồm địa chỉ IP của bạn và tất cả các tiêu đề. Thông tin này sẽ cho phép chúng tôi điều tra thêm.

API Futures

Đối với API REST và WebSocket của Futures (futures.kraken.com), chúng tôi cung cấp môi trường thử nghiệm đầy đủ bằng cách sử dụng URL API demo-futures.kraken.com.

Môi trường thử nghiệm REST, WebSocket và FIX

Đối với API REST/WebSocket giao ngay và API FIX của chúng tôi, hiện tại chúng tôi cung cấp môi trường thử nghiệm cho các khách hàng đủ điều kiện. Việc truy cập môi trường này yêu cầu một quy trình giới thiệu có thể được bắt đầu bằng cách liên hệ trực tiếp với nhóm API.

Kiểm tra API của chúng tôi bằng tham số kiểm tra Validate

Khi đặt lệnh thông qua các điểm cuối AddOrder của REST API hoặc addOrder của WebSocket API, tham số đầu vào validate có thể được sử dụng để mô phỏng lệnh.

Việc gọi AddOrder/addOrder với tham số validate được đặt thành true (validate=1, validate=true, validate=anything, v.v.) sẽ khiến chi tiết lệnh được kiểm tra lỗi, nhưng phản hồi API sẽ không bao giờ bao gồm ID lệnh (ID này sẽ luôn được trả về cho một lệnh thành công mà không có tham số validate).

Ví dụ về lệnh gọi AddOrder với tham số validate (lưu ý ID lệnh bị thiếu):

bash

Bash

$ ./krakenapi AddOrder pair=xdgusd type=buy ordertype=market volume=5000 validate=true{"error":[],"result":{"descr":{"order":"buy 5000.00000000 XDGUSD @ market"}}}

Các lệnh thực nhỏ và/hoặc lệnh có giá cực đoan

Để kiểm tra API toàn diện bằng cách sử dụng Tham số Validate, chúng tôi khuyên bạn nên đặt các lệnh thị trường rất nhỏ (lệnh có kích thước lệnh tối thiểu), hoặc các lệnh giới hạn có giá cách xa giá thị trường hiện tại (ví dụ: đặt lệnh giới hạn để bán ETH/USD ở mức $800 khi giá thị trường là $200).

Kiểm tra bằng cách sử dụng các lệnh trực tiếp cho phép mã API của bạn tương tác với API của chúng tôi trong điều kiện thực tế, do đó mọi khía cạnh của thử nghiệm sẽ chính xác (cách lệnh của bạn ảnh hưởng đến sổ lệnh, v.v.).

Vì lý do bảo mật, chúng tôi gần đây đã ngừng hỗ trợ TLS 1.0 và 1.1. Nếu bạn gặp phải thông báo lỗi kết nối SSL/TLS khi cố gắng kết nối với API của chúng tôi, có thể là do bạn đang sử dụng một trong các tiêu chuẩn đã lỗi thời này. Bạn sẽ cần sửa đổi ứng dụng khách API của mình để buộc sử dụng TLS 1.2/1.3 hoặc nâng cấp phiên bản .NET của bạn lên 4.6 trở lên, phiên bản này sử dụng TLS 1.2/1.3 làm tiêu chuẩn.

Bảng tính Google sau đây có thể được sử dụng để tính toán chữ ký xác thực REST API cho bất kỳ sự kết hợp nào của dữ liệu đầu vào:

  • Khóa riêng tư (bí mật) API

  • Điểm cuối API (Balance, TradeBalance, QueryOrders, v.v.)

  • Giá trị Nonce (xem trang hỗ trợ của chúng tôi về nonce là gì để biết thêm chi tiết)

  • Tham số đầu vào điểm cuối (ví dụ: asset=doge)

Công cụ tính toán có thể được sử dụng để xác minh rằng thuật toán xác thực đã được triển khai chính xác, từ đó tránh các vấn đề tiềm ẩn (đặc biệt là lỗi khóa không hợp lệ không mong muốn) sau này trong chu kỳ phát triển.

Hướng dẫn sử dụng

  1. 1

    Mở công cụ tính toán xác thực REST API trong Chrome (hoặc bất kỳ trình duyệt web hiện đại nào khác)

  2. 2

    Tạo một bản sao của công cụ tính toán vào Google Drive của riêng bạn thông qua menu Tệp -> Tạo bản sao (bạn sẽ cần đăng nhập vào tài khoản Google của mình cho bước này)

  3. 3

    Chỉnh sửa các trường khóa API, điểm cuối API, giá trị noncedữ liệu đầu vào bằng khóa API và chi tiết yêu cầu của riêng bạn

  4. 4

    So sánh chữ ký xác thực API đã tính toán với giá trị được tính toán bởi mã API của riêng bạn (hai giá trị phải khớp chính xác)

lý do bảo mật, chúng tôi khuyên bạn nên sử dụng công cụ tính toán xác thực với khóa API tạm thời, sau đó xóa khóa API khỏi tài khoản của bạn sau khi việc triển khai chữ ký xác thực của bạn được chứng minh là chính xác.

Ví dụ

Screenshot_2021-06-21_at_14.42.35.png

Lợi ích chính khi sử dụng các trình bao bọc thư viện máy khách của chúng tôi là bạn không cần phải tốn thời gian/công sức để tự tạo lại chữ ký API, vì chúng tôi đã làm sẵn cho bạn.

Nếu bạn chỉ có ý định thực hiện các cuộc gọi đến các phương thức công khai, thì bạn có thể chọn không sử dụng thư viện máy khách vì không cần xác thực.

Bạn có thể tìm danh sách các trình bao bọc có sẵn tại đây.

Bạn cần thêm trợ giúp?