Расширенные вопросы и ответы по API

Последнее обновление: 25 нояб. 2025 г.

Используя конечные точки финансирования REST API, клиенты могут вносить/выводить средства со своего счета Kraken и запрашивать статус транзакции пополнения/вывода средств в режиме реального времени.

Пополнения/выводы средств проходят несколько этапов от первоначального запроса до завершения транзакции, поэтому конечные точки финансирования будут возвращать различные значения статуса в зависимости от того, когда они были вызваны.

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

Пополнения

Возможные значения статуса для транзакций пополнения следующие:

  • Settled = Депозит получен, но все еще требует дополнительных подтверждений в блокчейне.

  • Success = Депозит получил необходимое количество подтверждений в блокчейне.

  • Failure = Депозит не выполнен (по одной или нескольким причинам).

Ниже приведены некоторые примеры того, как вышеуказанные значения статуса будут отображаться в ответах от конечной точки DepositStatus:

Settled status:{"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"}]}

Success status:{"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"}]}

Выводы средств

Возможные значения статуса для транзакций вывода средств следующие:

  • Initial = Запрос на вывод средств получен и проверяется на действительность (наличие ограничений на финансирование счета и т. д.).

  • Pending = Вывод средств ожидает обработки нашим платежным шлюзом.

  • Settled = Вывод средств отправлен в блокчейн (на этом этапе идентификатор транзакции блокчейна станет доступен).

  • Success = Транзакция вывода средств имеет как минимум 1 подтверждение в блокчейне.

  • On hold = Вывод средств приостановлен и должен быть проверен вручную нашей командой по финансированию.

  • Failure = Вывод средств не выполнен (по одной или нескольким причинам).

Ниже приведены некоторые примеры того, как вышеуказанные значения статуса будут отображаться в ответах от конечной точки WithdrawStatus:

Initial status:{"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"}]}

Pending status:{"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"}]}

Settled status:{"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"}]}

Success status:{"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"}]}

Failure status:{"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 (нулю), вернет исторические данные о времени и продажах с начала работы рынка (начиная с самой первой сделки).

Идентификатор пользователя (user reference) — это идентификатор ордера, предоставленный клиентом, который может использоваться вместо фактического идентификатора ордера (предоставленного 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".

Это может произойти, если ваш запрос содержит подозрительные заголовки. Например, в вашем запросе может отсутствовать пользовательский агент или использоваться нестандартный пользовательский агент; поэтому, пожалуйста, проверьте заголовки вашего запроса.

Если вы не можете создать какие-либо стандартные запросы, разрешенные нашей системой, отправьте нам полную копию запроса(ов), который вы пытаетесь выполнить, включая ваш 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 Sheets может быть использована для расчета подписи аутентификации REST API для любой комбинации входных данных:

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

  • Конечная точка API (Balance, TradeBalance, QueryOrders и т. д.)

  • Значение Nonce (подробнее см. на нашей странице поддержки что такое nonce)

  • Входные параметры конечной точки (например, asset=doge)

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

Инструкции по использованию

  1. 1

    Откройте калькулятор аутентификации REST API в Chrome (или любом другом современном веб-браузере)

  2. 2

    Создайте копию калькулятора на своем Google Диске через меню Файл -> Создать копию (для этого шага вам потребуется войти в свой аккаунт Google)

  3. 3

    Отредактируйте поля API key, API endpoint, nonce value и input data, используя свой собственный ключ API и данные запроса

  4. 4

    Сравните рассчитанную подпись аутентификации API со значением, рассчитанным вашим собственным API-кодом (два значения должны точно совпадать)

По соображениям безопасности мы рекомендуем использовать калькулятор аутентификации с временным ключом API, а затем удалить ключ API из вашей учетной записи, как только реализация вашей подписи аутентификации будет признана правильной.

Пример

Screenshot_2021-06-21_at_14.42.35.png

Основное преимущество использования наших оболочек клиентских библиотек заключается в том, что вам не нужно тратить время/усилия на изобретение велосипеда для создания подписей API, это уже сделано за вас.

Если вы намерены совершать вызовы только к публичным методам, то вы можете отказаться от клиентских библиотек, так как аутентификация не требуется.

Список доступных оболочек вы можете найти здесь.

Нужна дополнительная помощь?