Поширені запитання щодо розширеного API

Last updated: 25 лист. 2025 р.

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

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

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

Внесення

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

  • Закрито = внесення було отримано, але все ще потребує додаткових підтверджень у blockchain.

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

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

Ось кілька прикладів того, як вище зазначені значення статусів відображатимуться у відповідях із кінцевої точки 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"}]}

Виведення

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

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

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

  • Закрито = виведення було надіслано в blockchain (на цьому етапі ID транзакції blockchain стане доступним).

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

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

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

Ось кілька прикладів того, як вище зазначені значення статусів відображатимуться у відповідях із кінцевої точки 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"]}}

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

Ордери, які вже мають прикріплене посилання на користувача, можна переглядати, викликавши кінцеві точки «Відкриті» / «Закриті» / «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 має увімкнену функцію «Перевірка цілісності браузера».

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

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

API для ф’ючерсів

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

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

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

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

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

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

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

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 ми рекомендуємо розміщувати дуже малі ринкові ордери (ордери мінімального розміру), або лімітні ордери, які сильно відрізняються від поточної ринкової ціни (наприклад, розміщення лімітного ордера на продаж ETH / USD за 800 дол. США, коли ринкова ціна становить 200 дол. США).

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

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

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

  • Приватний (секретний) ключ API

  • Кінцева точка API (Balance, TradeBalance, QueryOrders тощо)

  • Значення nonce (див. нашу сторінку підтримки «Що таке nonce» для детальнішої інформації).

  • Вхідні параметри кінцевої точки (наприклад, asset=doge)

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

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

  1. 1

    Відкрийте калькулятор аутентифікації REST API у Chrome (або будь-якому іншому сучасному браузері)

  2. 2

    Скопіюйте калькулятор у свій Google Drive через меню «Файл» –> «Зробити копію» (вам потрібно буде увійти у свій обліковий запис Google для цього кроку)

  3. 3

    Редагуйте поля «Ключ API», «Кінцева точка API», «Значення nonce» та «Вхідні дані» зі своїм власним ключем API та деталями запиту

  4. 4

    Порівняйте обчислений підпис аутентифікації API зі значенням, обчисленим вашим власним кодом API (обидва значення повинні точно збігатися)

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

Наприклад

Screenshot_2021-06-21_at_14.42.35.png

Основна перевага використання наших клієнтських бібліотек-обгорток полягає в тому, що вам не потрібно витрачати час і зусилля на «винахід колеса» при створенні підписів API – це вже зроблено за вас.

Якщо ви плануєте лише викликати публічні методи, ви можете відмовитися від клієнтських бібліотек, оскільки аутентифікація не потрібна.

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

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