Повідомлення про помилки API

Останнє оновлення: 8 серп. 2025 р.

Вступ

Більшість запитів API успішно завершуються, але іноді щось йде не так, і замість очікуваної відповіді повертається повідомлення про помилку.

Наш API надає різноманітні описові повідомлення про помилки, призначені для пояснення причини помилки та надання пропозицій щодо відповідного рішення.

Повідомлення про помилки API можна розділити на кілька різних груп (залежно від типу помилки, основної причини та оптимального рішення), але формат повідомлень про помилки API є послідовним і виглядає наступним чином:

"Рівень серйозності""Категорія помилки":"Повідомлення про помилку"

"Рівень серйозності" може бути E для помилки або W для попередження. "Категорія помилки" може бути однією з: Загальна, API, Запит, Ордер, Торгівля, Поповнення або Сервіс. "Повідомлення про помилку" може бути будь-яким текстовим рядком, що описує причину помилки (наприклад, Недійсні аргументи).

Наприклад, помилка, що вказує на використання недійсної валютної пари в запиті тікера, буде виглядати так:

EQuery:Unknown asset pair

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

  • Загальні помилки використання

  • Помилки обмеження швидкості

  • Помилки торгівлі (розміщення/скасування ордерів)

  • Помилки поповнення (депозит/виведення)

  • Помилки стану сервісу

  • Внутрішні помилки

  • Помилки Cloudflare (мережеві)

Загальні помилки використання

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

Ця помилка повертається, коли ключ API, використаний для виклику, є простроченим або вимкненим. Будь ласка, перегляньте ключ API на вкладці "Налаштування" -> "API" в управлінні рахунком або згенеруйте новий і оновіть свою програму.

Ви можете отримати повний список наших пар активів з публічного виклику AssetPairs і шукати назву пари як запис заголовків Json або за параметром "altname": https://api.kraken.com/0/public/AssetPairs

Ця помилка повертається, коли метод викликається без необхідних параметрів. Наприклад, виклик методу QueryOrders без вказівки дійсного ідентифікатора транзакції (txid) призведе до повернення помилки про недійсні аргументи. Виклик методу з непотрібними параметрами все одно не поверне помилку про недійсні аргументи, оскільки непотрібні параметри будуть просто проігноровані.

Помилки недійсного підпису виникають, якщо ваш ключ API або секрет API неправильно записані у вашій програмі, або якщо дані POST, використані для автентифікації, та дані POST, надіслані до API, не збігаються. Для додаткової довідки, нижче наведено приклад коду Python для реалізації алгоритму підпису API. Відповідний публічний ключ API слід скопіювати та вставити з управління обліковим записом, а метод API та дані POST слід оновити відповідним чином. Вихідне значення можна використовувати безпосередньо як значення для заголовка HTTP API-Sign. #!/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 для методу API, а дані POST складаються з пар ім'я/значення для nonce (знову) та параметрів методу API. Приклад даних, які слід передати до SHA256 для методу TradeBalance, буде таким:SHA256 = SHA256 of "1541933977000nonce=1541933977000&asset=xxbt"Рядкове значення, яке передається до SHA256, не повинно містити додаткових нульових (\0) значень, і рядкове значення не повинно бути закодовано як base64 або hex (тобто рядкове значення повинно бути простим текстовим рядком).Шлях URI – це повна URL-адреса методу API, за винятком префікса "https://api.kraken.com", тому шлях URI методу TradeBalance (наприклад) буде рядковим значенням "/0/private/TradeBalance" без будь-яких додаткових нульових значень.HMAC SHA512 обчислюється за допомогою шляху URI та раніше обчисленого дайджесту SHA256, з розкодованим base64 приватним ключем API як ключем HMAC. Приклад даних, які слід передати до HMAC, буде таким:HMAC SHA512 using base64 decoded private key = HMAC of "/0/private/TradeBalanceSHA256"Заголовки HTTP API-Key та API-Sign є єдиними двома необхідними користувацькими заголовками HTTP. Заголовок API-Key є точною копією публічного ключа API з управління обліковим записом. Заголовок API-Sign – це дайджест HMAC SHA512, закодований за допомогою 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

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

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

Помилка поганого запиту вказує на те, що щось не так з базовим HTTP-запитом (а не з наступним API-запитом), наприклад, невідповідність URL-адрес між REST/WebSocket або неправильне включення даних HTTP POST:

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

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

Ця помилка повертається, коли викликана кінцева точка не є дійсною.

Помилки обмеження швидкості

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

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

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

Помилки торгівлі

Відкриття нових спотових позицій з маржею тимчасово призупинено для технічного обслуговування торгового двигуна. Ця функція незабаром повернеться, і ви можете стежити за оновленнями на status.kraken.com.

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

На Kraken ви не можете відкрити довгу та коротку позицію для однієї й тієї ж пари.

Якщо ви бажаєте відкрити довгу та коротку позицію для однієї й тієї ж валюти, будь ласка, оберіть різні торгові пари з тією ж валютою як базовою або валютою котирування. Наприклад: коротка XBT/USD, довга XBT/EUR.

Ця помилка виникає, коли ви перевищили ліміти дозволеної маржі для вашого поточного рівня верифікації. Ліміти дозволеної маржі для кожної валюти залежать від вашого поточного рівня верифікації.

У нас обмежені кошти для маржинальних розширень. Повідомлення "недостатньо маржі" вказує на те, що наразі у нас закінчилися кошти у відповідному маржинальному пулі. Це може змінитися в будь-який час. Ви можете успішно розмістити своє замовлення через кілька секунд або хвилин, але замовлення з великим обсягом та замовлення, розміщені в періоди високого обсягу, можуть зайняти більше часу. Прийміть наші вибачення за будь-які незручності.

Ця помилка виникає, коли недостатньо вільної маржі для відкриття нової позиції на рахунку або якщо поточна спроба відкрити позицію призведе до падіння вільної маржі рахунку нижче 100%.

У вас недостатньо коштів для розміщення цього замовлення. Будь ласка, перегляньте свої відкриті позиції та замовлення на наявність елементів, які можуть утримувати ваші кошти.

Ви не досягли мінімального обсягу замовлення для цього активу.

Ви перевищили максимальну кількість відкритих замовлень, доступних для вашого облікового запису.

Ці ліміти базуються на вашому рівні верифікації. Будь ласка, закрийте деякі зі своїх відкритих замовлень або верифікуйте свій обліковий запис до вищого рівня.

Ви перевищили максимальну кількість відкритих позицій, доступних для вашого облікового запису.

Ці ліміти базуються на вашому рівні верифікації. Будь ласка, закрийте або врегулюйте деякі або всі свої відкриті позиції або, якщо можливо, верифікуйте свій обліковий запис до вищого рівня.

Була зроблена спроба редагувати існуюче (відкрите) замовлення, але зміни не вдалося успішно завершити. Можливі причини включають недостатність коштів для нового замовлення, деякі сценарії часткового виконання та деякі замовлення з кредитним плечем.

Новий обсяг менший за вже виконаний/заповнений обсяг.

Розмір ордера перевищив ліміт розміру маржинальної позиції для торгової пари.

Відображуваний обсяг не відповідає мінімальному обсягу ордера.

Відображуваний обсяг має бути меншим за обсяг ордера.

Айсберг-ордери несумісні з будь-якими іншими типами ордерів, окрім лімітних ордерів.

Помилки фінансування

Кожна криптовалюта має максимум 5 нових (невикористаних) адрес для поповнення, після чого будь-яка спроба створити 6-ту нову адресу поверне помилку.

Ця помилка повертається щоразу, коли кінцеві точки фінансування викликаються з недійсним або відсутнім параметром "method". 

Вхідний параметр "key" не відповідає опису адреси, встановленому в управлінні обліковим записом (через Фінансування -> Виведення).

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

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

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

Помилки стану сервісу

Помилки сервісу, які ви спостерігаєте, мають бути лише тимчасовими. Ви можете повторно надіслати свої запити, якщо вони не вдалися. Ми будемо відстежувати проблеми та оновлювати нашу сторінку:

https://status.kraken.com/

Внутрішні помилки

Коли ми стикаємося з проблемами деградації API, це може призвести до проблем для Kraken у вигляді повідомлень про недоступність сервісу та збоїв сайту.

Ця проблема пов'язана з безпекою вашого облікового запису, який міг бути скомпрометований. Будь ласка, змініть свій пароль та двофакторну автентифікацію та зверніться до нашого Центру підтримки.

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

Ці помилки 5xx та 10xx насправді не є помилками API, а є помилками веб-сервера від Cloudflare.

Помилки API завжди повертаються у форматі JSON, наприклад, “error”:[“ErrorType:ErrorMessage”], тому щоразу, коли отримується помилка в іншому форматі (наприклад, код стану HTTP 520, 504, 502, 1020 тощо), тимчасовим рішенням є повторна спроба виклику API незабаром після цього, і, сподіваємося, виклик буде успішним.

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