For information on changes for our US clients, please visit our Support Center article.

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

Вступ

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

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

EGeneral:У дозволі відмовлено
Помилки відмови в дозволі виникають, коли клієнт API намагається виконати завдання, на яке в ключа API немає дозволу. Наприклад, якщо клієнт API намагається отримати баланс рахунку за допомогою ключа API, що був налаштований на доступ до торгівлі, але не до управління обліковим записом, то запит поверне помилку відмови в дозволі. Ви можете переглянути свої ключі API та їхні налаштування (наприклад, права доступу) на вкладці «Налаштування –> API» в розділі управління обліковим записом. Ви повинні переконатися, що ключі API, які використовуються вашими сторонніми програмами, мають усі потрібні їм налаштування й дозволи.
EAPI:Недійсний ключ
Ця помилка виникає, коли термін дії ключа API, що використовується для виклику, закінчився або ключ було деактивовано. Перевірте ключ API на вкладці «Налаштування –> API» в розділі управління обліковим записом або згенеруйте новий і оновіть свою програму.
EQuery:Невідома пара активів
Ви можете отримати повний список наших пар активів за допомогою публічного виклику AssetPairs і знайти назву потрібної пари серед записів заголовків JSON або за параметром «altname»: https://api.kraken.com/0/public/AssetPairs
EGeneral:Недійсні аргументи
Ця помилка виникає, якщо викликати метод без необхідних параметрів. Наприклад, виклик методу QueryOrders без зазначення правильного параметра ідентифікатора транзакції (txid) призведе до виникнення помилки «Недійсні аргументи». Виклик методу з необов’язковими параметрами не поверне помилку недійсних аргументів, оскільки необов’язкові параметри просто будуть проігноровані.
EAPI:Недійсний підпис
Помилки недійсного підпису виникають, якщо у вашій програмі неправильно вказані ключ API чи секрет API або якщо дані POST, що використовуються для автентифікації, і дані POST, що надсилаються до API, не збігаються.
Для додаткової інформації нижче наведено приклад коду мовою Python для реалізації алгоритму підпису API. Відповідний відкритий ключ API слід скопіювати та вставити з розділу управління обліковим записом, а метод API і дані POST необхідно оновити відповідним чином. Вихідне значення можна використовувати безпосередньо як значення для HTTP-заголовка API-Sign.
#!/usr/bin/env python# Імпорт необхідних бібліотек Pythonimport timeimport base64import hashlibimport hmac# Декодування закритого ключа API з формату base64, що відображається в розділі управління обліковим записомapi_secret = base64.b64decode("nmlrD83t1J+yVWKUBx9vD6j26C5zhC11tFfXpN+Ww+8oOVuGgse5AeADcvl95jYaD+UAi3D5CrVfFr8GfQ7zhA==")# Змінні (метод API, nonce і дані POST)api_path = "/0/private/TradeBalance"api_nonce = str(int(time.time()*1000))api_post = "nonce=" + api_nonce + "&asset=xxbt"# Криптографічні хеш-алгоритмиapi_sha256 = hashlib.sha256(api_nonce + api_post).digest()api_hmac = hmac.new(api_secret, api_path + api_sha256, hashlib.sha512)# Кодування підпису у формат base64, що використовується для значення API-Signapi_signature = base64.b64encode(api_hmac.digest())# Підпис автентифікації API для використання в HTTP-заголовку API-Signprint(api_signature)
SHA256 обчислюється безпосередньо на основі значення nonce і даних POST для методу API, а дані POST складаються з пар «ім’я/значення» для nonce (знову) і параметрів методу API. Приклад даних, які необхідно передати в SHA256 для методу TradeBalance, може бути таким:
SHA256 = SHA256 від «1541933977000nonce=1541933977000&asset=xxbt»
Рядкове значення, яке передається в SHA256, не повинно містити додаткових значень NULL (\0), а також не має бути закодовано у форматі base64 або hex (тобто, рядкове значення повинно бути звичайним текстовим рядком).
Шлях URI – це повна URL-адреса методу API за винятком префікса «https://api.kraken.com», тому шлях URI методу TradeBalance (для прикладу) буде рядковим значенням «/0/private/TradeBalance» без будь-яких додаткових значень NULL.
HMAC SHA512 обчислюється з використанням шляху URI та попередньо обчисленого дайджесту SHA256, а в якості HMAC-ключа використовується приватний ключ API, декодований у форматі base64. Приклад даних, які необхідно передати в HMAC, може бути таким:
HMAC SHA512 із використанням приватного ключа, декодованого з формату base64 = HMAC від «/0/private/TradeBalanceSHA256»
HTTP-заголовки API-Key та API-Sign є єдиними двома обов’язковими користувацькими HTTP-заголовками. Заголовок API-Key є точною копією відкритого ключа API з розділу управління обліковим записом. Заголовок API-Sign – це дайджест HMAC SHA512, закодований у форматі base64.
EAPI:Недійсне значення nonce
Докладнішу інформацію про цю помилку можна знайти тут:
Додаткову інформацію про Nonce і вікно Nonce можна знайти тут:
ESession:Недійсний сеанс
Помилки недійсного сеансу повертаються через API WebSocket, коли ви намагаєтеся підписатися на автентифікований (приватний) канал за допомогою токена автентифікації, який більше не є дійсним (наприклад, термін його дії закінчився).
Рішення полягає в тому, щоб надіслати запит на новий токен автентифікації через кінцеву точку REST API GetWebSocketsToken, а потім використовувати новий токен для всіх подальших запитів на про автентифіковану (приватну) підписку.

Помилки перевищення ліміту запитів

EOrder:Забагато запитів
Хоча додавання й скасування ордерів не враховується в наших стандартних лімітах на запити API, для додавання й скасування ордерів установлено власний ліміт. Алгоритм його роботи такий: що довше ордери залишаються в книзі ордерів, то більше ордерів клієнти можуть додати або скасувати.
EGeneral:Тимчасовий локаут
Повідомлення про помилки тимчасового локаута можуть виникати, якщо у вас було забагато невдалих викликів API, помилок недійсного значення nonce за короткий проміжок часу або недійсних підписів. Навіть якщо ці виклики повертають помилку, вона все одно враховується у ваших лімітах API й може призвести до тимчасового блокування (локаута).
Тимчасовий локаут триває приблизно 15 хвилин. Після виникнення помилки тимчасового локаута зачекайте 15 хвилин, перш ніж надсилати нові запити API. Якщо у вас виникає кілька помилок недійсного значення nonce, збільште вікно nonce: це може допомогти зменшити частоту виникнення таких помилок. Також спробуйте зменшити частоту викликів приватних методів API.

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

EOrder:Неможливо відкрити позицію
Відкриття нових спотових позицій із маржею було тимчасово призупинено на період технічного обслуговування торгової платформи. Незабаром цю функцію буде повернено. Ви можете стежити за оновленнями на сторінці status.kraken.com.
Іншою причиною може бути те, що спотові позиції з маржею наразі недоступні для клієнтів, які проживають у певних країнах.
EOrder:Неможливо відкрити протилежну позицію
На Kraken неможливо відкрити довгу (лонг) і коротку (шорт) позицію одночасно в одній парі.
Якщо ви хочете відкрити лонг і шорт по одній валюті, виберіть різні торгові пари з однією валютою в якості базової валюти або валюти котирування. Наприклад: шорт XBT/USD, лонг XBT/EUR.
EOrder:Перевищено доступну маржу
Ця помилка виникає, коли ви перевищуєте ліміти маржинального забезпечення для свого поточного рівня верифікації. Ліміти маржинального забезпечення для кожної валюти залежать від вашого поточного рівня верифікації.
EOrder:Недостатня маржа
У нас обмежені кошти для збільшення маржі. Повідомлення про недостатню маржу вказує на те, що в нас наразі вичерпані кошти у відповідному маржинальному пулі. Цей стан може змінитися в будь-який момент. Можливо, вам вдасться успішно розмістити свій ордер за кілька секунд або хвилин, але розміщення великих ордерів і ордерів у період великих торгових об’ємів може потребувати більше часу. Прийміть наші вибачення за можливі незручності.
EOrder:Недостатньо коштів (недостатньо коштів користувача)
У вас недостатньо коштів для розміщення цього ордера. Перегляньте свої відкриті позиції та ордери на наявність позицій, у яких можуть бути заблоковані ваші кошти.
EOrder:Об’єм ордера нижче мінімуму (об’єм надто низький)
Ви не досягли мінімального об’єму ордера для цього активу.
EOrder:Перевищено ліміт ордерів
Ви перевищили максимальну кількість відкритих ордерів для свого облікового запису.
Ці ліміти залежать від вашого рівня верифікації. Закрийте деякі з відкритих ордерів або підвищте свій рівень верифікації.
EOrder:Перевищено ліміт позицій
Ви перевищили максимальну кількість відкритих позицій для свого облікового запису.
Ці ліміти залежать від вашого рівня верифікації. Закрийте або врегулюйте деякі чи всі з відкритих позицій або за можливості підвищте свій рівень верифікації.