API-ключ позволяет подключить торговых ботов, терминалы и аналитику к вашему счёту на ABCEX по REST и WebSocket.
API-ключ — это пара из публичного ключа (publicKey) и секретного (secretKey). Он заменяет логин и пароль при программном доступе: публичный ключ уходит в заголовке запроса, секретным этот запрос подписывается. Так бот или внешний сервис работает от вашего имени, не зная пароля от аккаунта.
secretKey отдаётся в момент создания и на серверах биржи не хранится — восстановить его нельзя ни через поддержку, ни как-то ещё. Не сохранили — удаляйте ключ и выпускайте новый.
Все эндпоинты, формула подписи, WebSocket-каналы и коды ошибок — в справочнике abcex.readme.io. Ссылка «Читать документацию» на странице «API ключи» ведёт туда же.
Одновременно у вас может быть до 10 активных ключей — счётчик виден рядом с заголовком раздела. Выпустить или удалить ключ можно только под полноценным входом в аккаунт (пароль и 2FA). Сам API-ключ такого права не имеет ни при каких настройках: даже утёкшим ключом нельзя выпустить себе новый.

В форме создания права разбиты на две группы: для счетов (Фиатный процессинг, Криптопроцессинг, Переводы) и для трейдинга (Торговля спот, Торговля фьючерсы). По умолчанию везде стоит «Нет» — включайте только то, что нужно вашему боту.

Создание ключа подтверждается кодом 2FA. Сразу после этого биржа один раз покажет secretKey — скопируйте его прежде, чем закроете окно.
Права на ABCEX устроены не как один переключатель «читать / торговать / выводить». Для каждой категории операций вы отдельно выбираете один из трёх уровней. Поэтому ключ для бота может полноценно торговать на споте и при этом вообще не иметь доступа к выводу средств.
Уровень выбирается для каждой из категорий:
| Категория | Что охватывает | Нужен whitelist IP |
|---|---|---|
| Торговля спот | Создание и отмена ордеров по спотовым парам | Нет |
| Торговля фьючерсы | Ордера и позиции по фьючерсным инструментам | Нет |
| Переводы | Переводы между своими счетами на бирже | Нет |
| Справочники | Инструменты, тикеры, коды валют | Нет |
| Фиатный процессинг | Пополнение и вывод рублей через кассу | Да |
| Криптопроцессинг | Кошельки, ввод и вывод криптовалюты | Да |
| P2P | Сделки на P2P-платформе | Да |
Фиатный процессинг, Криптопроцессинг и P2P — единственные категории, которые двигают деньги за пределы счёта. Пока у ключа не задан список IP-адресов, им можно поставить только уровень «Нет». Это правило биржи, а не особенность интерфейса.
Список доверенных IP-адресов — это не просто рекомендация по безопасности. От него зависит и срок жизни ключа, и то, какие права ему вообще можно выдать.
| Без whitelist IP | С whitelist IP | |
|---|---|---|
| Срок жизни ключа | 90 дней | Бессрочно |
| Откуда принимаются запросы | С любого IP | Только с указанных |
| Торговля, переводы, справочники | Доступны | Доступны |
| Ввод, вывод и P2P | Недоступны | Доступны |
Отсюда простое правило: боту на своём сервере со статическим IP whitelist нужен всегда — ключ перестаёт протухать, и права можно выдать любые. Ключ без whitelist имеет смысл для временных задач и аналитики, где всё равно нужно только чтение.
Ровно через 90 дней после создания такой ключ истекает, и каждый запрос начинает получать отказ api key expired. Никакого предупреждения перед этим не приходит — либо задайте whitelist, либо заранее поставьте себе напоминание на замену ключа.
Не передавайте secretKey никому, не выкладывайте его в репозиторий и не пишите в логи. При любом подозрении на утечку сразу удалите ключ в личном кабинете и выпустите новый — удалённый ключ перестаёт работать немедленно.
Вводя ключ в чужое приложение, вы отдаёте ему все права этого ключа — фактически доступ к счёту в объёме выданных категорий. Выдавайте только необходимый минимум и обязательно указывайте whitelist с IP-адресами именно этого сервиса.
Почти все отказы по API-ключу приходят с кодом 401, а конкретная причина — текстом в теле ответа. По ней сразу понятно, что чинить.
| Ответ биржи | Что это значит |
|---|---|
ip address not in whitelist |
Запрос пришёл с IP, которого нет в списке ключа. Обычная причина — сервер сменил адрес или у провайдера он динамический. |
api key expired |
Истёк срок ключа — 90 дней у ключа без whitelist. Задайте whitelist или выпустите новый. |
timestamp expired |
Часы на вашей машине разошлись с биржей больше чем на 30 секунд. Синхронизируйте время по NTP. |
insufficient permissions for this route |
Ключу не хватает уровня в нужной категории — например, стоит «Чтение» там, где требуются «Полные». |
invalid signature |
Подпись запроса не совпала — см. чек-лист ниже. |
api key not foundapi key is not active |
Ключ удалён либо заблокирован, или publicKey скопирован с ошибкой. |
invalid API key format |
publicKey не 64 hex-символа — обычно при копировании потерялась часть строки. |
Метод пишется заглавными буквами. Путь в подписи — вместе с query-string и ровно такой же, как в URL. Тело — байт-в-байт то же, что уходит в запрос (не сериализуйте дважды). Разделитель — настоящий перевод строки, не \r\n и не литерал. secretKey подставляется в HMAC как hex-строка, без декодирования в байты. timestamp в подписи и в заголовке — одно и то же значение. Полная формула и готовые примеры на Node.js и Python — в документации API.
До 10 активных одновременно. Сколько уже занято, видно в счётчике рядом с заголовком раздела «API ключи». Если лимит исчерпан — удалите неиспользуемые.
Нигде. Секретный ключ показывается один раз при создании и на серверах биржи не хранится, поэтому восстановить его не может и поддержка. Удалите этот ключ и выпустите новый.
Две частые причины. Первая: ключ был создан без whitelist IP и истёк через 90 дней — в ответе будет api key expired. Вторая: у ключа задан whitelist, а сервер сменил IP-адрес — тогда придёт ip address not in whitelist. Точная причина всегда написана в теле ответа.
Категориям, которые двигают деньги наружу — Криптопроцессинг, Фиатный процессинг и P2P — обязателен whitelist IP. Пока список адресов у ключа пуст, этим категориям доступен только уровень «Нет». Добавьте IP-адреса, и уровни станут доступны.
Нет. Выпуск и удаление ключей возможны только под полноценным входом в аккаунт — с паролем и 2FA. Это сделано специально: даже если ваш ключ утечёт, выпустить себе новый им не смогут.
Соединение нужно поддерживать самому: клиент отправляет {"method":"ping"} и получает в ответ pong. Рекомендуемый интервал — каждые 20–25 секунд. Если от клиента около 30 секунд не приходит ничего, сервер закрывает соединение.
Через справочники API: список сетей и валют — GET /api/v1/currency-network/list, список активов — GET /api/v2/exchange/client/asset/list, торговые пары — GET /api/v2/exchange/public/asset/instrument/spot/list. Для доступа к ним ключу достаточно уровня «Чтение» в категории «Справочники».
Справочник — abcex.readme.io. Туда же ведёт ссылка «Читать документацию» на странице «API ключи» в личном кабинете. Там аутентификация, формула подписи, все эндпоинты и WebSocket-каналы.