Розширені запитання та відповіді щодо API

Останнє оновлення: 25 лист. 2025 р.

Використовуючи кінцеві точки фінансування REST API, клієнти можуть вносити/виводити кошти на/з свого облікового запису Kraken та запитувати статус транзакції внесення/виведення коштів у реальному часі.

Внесення/виведення коштів проходить кілька етапів між початковим запитом і завершенням транзакції, тому кінцеві точки фінансування повертатимуть різні значення статусу залежно від того, коли вони викликаються.

Зауважте, що значення статусу спочатку походили зі сторінок 16/17 документа Internet Financial Exchange Protocol (IFEX), але значення були дещо змінені, щоб краще відповідати криптотранзакціям (наприклад, використовуються не всі можливі значення статусу).

Депозити

Можливі значення статусу для транзакцій внесення коштів такі:

  • Розраховано = Депозит отримано, але він все ще потребує додаткових підтверджень у блокчейні.

  • Успішно = Депозит досяг необхідної кількості підтверджень у блокчейні.

  • Невдача = Депозит не вдалося здійснити (з однієї або кількох причин).

Нижче наведено кілька прикладів того, як ви виглядатимуть вищезазначені значення статусу у відповідях від кінцевої точки DepositStatus:

Статус «Розраховано»:{"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"}]}

Статус «Успішно»:{"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"}]}

Виведення коштів

Можливі значення статусу для транзакцій виведення коштів такі:

  • Початковий = Запит на виведення коштів отримано та перевіряється на дійсність (будь-які обмеження фінансування на обліковому записі тощо).

  • Очікує = Виведення коштів очікує обробки нашим платіжним шлюзом.

  • Розраховано = Виведення коштів надіслано до блокчейну (на цьому етапі ідентифікатор транзакції блокчейну стане доступним).

  • Успішно = Транзакція виведення коштів має щонайменше 1 підтвердження в блокчейні.

  • На утриманні = Виведення коштів було призупинено та має бути перевірено вручну нашою командою фінансування.

  • Невдача = Виведення коштів не вдалося здійснити (з однієї або кількох причин).

Нижче наведено кілька прикладів того, як вищезазначені значення статусу відображатимуться у відповідях від кінцевої точки WithdrawStatus:

Статус «Початковий»:{"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"}]}

Статус «Очікує»:{"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"}]}

Статус «Розраховано»:{"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"}]}

Статус «Успішно»:{"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"}]}

Статус «Невдача»:{"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"}]}

Додаткова інформація щодо внесення/виведення коштів доступна на наших сторінках підтримки з фінансування готівкою та криптофінансування.

Кінцева точка REST API OHLC надає лише обмежену кількість історичних даних, а саме 720 точок даних запитуваного інтервалу. Наприклад, запит даних OHLC з інтервалом в 1 хвилину поверне найновіші 720 хвилин (12 годин) даних.

Для програм, які потребують додаткових даних OHLC або тікових даних, можна отримати всю історію торгів наших ринків (історичний час і продажі) через кінцеву точку REST API Trades. OHLC для будь-якого часового проміжку та будь-якого інтервалу можна створити з історичних даних часу та продажів.

Кінцева точка Trades приймає необов'язковий параметр під назвою since, який вказує початкову дату/час даних. Значення since — це UNIX-мітка часу з наносекундною роздільною здатністю (стандартна UNIX-мітка часу в секундах з 9 додатковими цифрами).

Наприклад, виклик кінцевої точки Trades, такий як https://api.kraken.com/0/public/Trades?pair=xbtusd&since=1559347200000000000, поверне історичний час і продажі для XBT/USD з 1 червня 2019 року о 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"}}

Наступні виклики кінцевої точки Trades повинні замінювати значення параметра since значенням параметра last з результатів попереднього виклику, наприклад https://api.kraken.com/0/public/Trades?pair=xbtusd&since=1559350785297011117.

Використання спеціального значення since, рівного 0 (нулю), поверне історичний час і продажі з початку ринку (починаючи з найпершої угоди).

Посилання користувача — це ідентифікатор замовлення, наданий клієнтом, який можна використовувати замість фактичного ідентифікатора замовлення (наданого API) для деяких завдань керування замовленнями (зокрема, скасування замовлень).

Посилання користувача реалізовані таким чином, щоб бути максимально гнучкими, і тому їх можна використовувати різними способами, зокрема:

  • як унікальний ідентифікатор (де кожне замовлення має різне посилання користувача),

  • для групування пов'язаних замовлень (наприклад, групування замовлень з різними рівнями кредитного плеча),

  • або як резервний ідентифікатор у випадку, якщо фактичний ідентифікатор замовлення невідомий.

Посилання користувача має бути числовим значенням від 1 до 2 147 483 647 (по суті, будь-яке позитивне 32-розрядне число) і тому може бути реалізоване як простий лічильник, як випадкове 32-розрядне число зі знаком або навіть як мітка часу в секундах (хоча це не працюватиме після 19 січня 2038 року о 3:14:07 UTC).

Розміщення замовлень за допомогою посилання користувача

Замовлення можна розміщувати з прикріпленим посиланням користувача, викликавши кінцеву точку AddOrder та включивши параметр userref зі значенням посилання користувача:

$ ./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"]}}

Перегляд замовлень, що мають посилання користувача

Замовлення, які вже мають прикріплене посилання користувача, можна переглянути, викликавши кінцеві точки Open/Closed/QueryOrders та включивши параметр userref з існуючим посиланням користувача як значенням (у цьому випадку посилання користувача діє як фільтр, відображаючи лише пов'язані замовлення):

$ ./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}}

Скасування замовлень, що мають посилання користувача

Замовлення, які вже мають прикріплене посилання користувача, можна скасувати за допомогою посилання користувача, викликавши кінцеву точку CancelOrder та використовуючи посилання користувача як значення txid (замість значення ідентифікатора замовлення):

$ ./krakenapi CancelOrder txid=16764529

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

Зауважте, що всі відкриті замовлення з однаковим посиланням користувача будуть скасовані, отже, можна зробити один виклик CancelOrder для одночасного скасування кількох замовлень (як зазначено значенням count, рівним 3, у наступній відповіді):

$ ./krakenapi CancelOrder txid=48695624

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

Ця проблема може бути пов'язана з Cloudflare:

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

ПРИМІТКА: Kraken має увімкнену функцію "Browser Integrity Check".

Це може статися, якщо ваш запит містить підозрілі заголовки. Наприклад, у вашому запиті може бути відсутній user agent або використовуватися нестандартний user agent; тому, будь ласка, перевірте заголовки вашого запиту.

Якщо ви не можете створити жодних стандартних запитів, які дозволяє наша система, надішліть нам повну копію запиту(ів), які ви намагаєтеся зробити, включаючи вашу IP-адресу та всі заголовки. Ця інформація дозволить нам провести подальше розслідування.

Futures API

Для наших Futures REST та WebSocket API (futures.kraken.com) ми пропонуємо повне тестове середовище, використовуючи URL-адресу API demo-futures.kraken.com.

Тестові середовища REST, WebSocket та FIX

Для нашого спотового REST/WebSocket API та FIX API ми наразі пропонуємо тестове середовище для кваліфікованих клієнтів. Доступ до цього середовища вимагає процесу адаптації, який можна розпочати, безпосередньо звернувшись до команди API.

Тестування нашого API за допомогою параметра Validate Testing

При розміщенні ордера через кінцеві точки REST API AddOrder або WebSocket API addOrder, вхідний параметр validate можна використовувати для симуляції ордера.

Виклик AddOrder/addOrder з параметром validate, встановленим на true (validate=1, validate=true, validate=anything тощо), призведе до перевірки деталей ордера на наявність помилок, але відповідь API ніколи не включатиме order ID (який завжди повертався б для успішного ордера без параметра validate).

Приклад виклику AddOrder з параметром validate (зверніть увагу на відсутній order ID):

bash

Bash

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

Невеликі реальні ордери та/або ордери з екстремальними цінами

Для комплексного тестування API за допомогою параметра Validate ми рекомендуємо розміщувати дуже невеликі market orders (ордери на мінімальний розмір ордера) або limit orders, ціна яких значно відрізняється від поточної ринкової ціни (наприклад, розміщення limit order на продаж ETH/USD за $800, коли ринкова ціна становить $200).

Тестування за допомогою live orders дозволяє вашому API коду взаємодіяти з нашим API в реальних умовах, тому кожен аспект тесту буде точним (як ваші ордери впливають на order book тощо).

З міркувань безпеки ми нещодавно припинили підтримку TLS 1.0 та 1.1. Якщо ви стикаєтеся з повідомленнями про помилки підключення SSL/TLS під час спроби підключитися до нашого API, це, ймовірно, пов'язано з використанням одного з цих застарілих стандартів. Вам потрібно буде змінити свій API клієнт, щоб примусово використовувати TLS 1.2/1.3, або оновити версію .NET до 4.6 або вище, яка використовує TLS 1.2/1.3 як стандарт.

Наведена нижче Google Sheet може бути використана для розрахунку REST API authentication signature для будь-якої комбінації вхідних даних:

  • Приватний (секретний) API key

  • API endpoint (Balance, TradeBalance, QueryOrders тощо)

  • Значення Nonce (докладніше дивіться на нашій сторінці підтримки що таке nonce)

  • Вхідні параметри Endpoint (наприклад, asset=doge)

Калькулятор можна використовувати для перевірки правильності реалізації алгоритму автентифікації, що дозволяє уникнути потенційних проблем (зокрема, несподіваних помилок invalid key) на пізніших етапах циклу розробки.

Інструкції з використання

  1. 1

    Відкрийте REST API authentication calculator у Chrome (або будь-якому іншому сучасному веб-браузері)

  2. 2

    Зробіть копію калькулятора на свій Google Drive через меню File -> Make a copy (для цього кроку вам потрібно буде увійти у свій обліковий запис Google)

  3. 3

    Відредагуйте поля API key, API endpoint, nonce value та input data, вказавши свій API key та деталі запиту

  4. 4

    Порівняйте розрахований API authentication signature зі значенням, розрахованим вашим власним API кодом (два значення повинні точно збігатися)

З міркувань безпеки ми рекомендуємо використовувати калькулятор автентифікації з тимчасовим API key, а потім видалити API key зі свого облікового запису, як тільки реалізація вашого authentication signature буде визнана правильною.

Приклад

Screenshot_2021-06-21_at_14.42.35.png

Основна перевага використання наших client library wrappers полягає в тому, що вам не потрібно витрачати час/зусилля на винахід велосипеда для створення API signatures, це вже зроблено за вас.

Якщо ви маєте намір здійснювати виклики лише до public methods, то ви можете відмовитися від client libraries, оскільки автентифікація не потрібна.

Список доступних wrappers ви можете знайти тут.

Потрібна додаткова допомога?