Торгівля через API
Скористайтеся цим посібником, якщо ви інтегруєте з Hypercall маркетмейкера, систему котирування або сервіс виконання ордерів.
Базовий URL REST: https://api.hypercall.xyz
URL WebSocket: wss://api.hypercall.xyz/ws
Статус тестнету: тестнет тимчасово вимкнено, доки Hypercall не отримає більше тестових HYPE. Нові інтеграції маркетмейкерів мають використовувати продакшн, якщо Hypercall не надасть вам окреме середовище.
Потокова передача індикативних котирувань від постачальників поки що не є загальнодоступною. Hypercall може ввімкнути її для схвалених інтеграцій, але звичайне підключення маркетмейкерів має використовувати ринкові дані через REST разом з автентифікованими WebSocket-каналами ордерів, виконань і портфеля.
Контрольний список підключення
- Торговий гаманець: EVM-гаманець, здатний підписувати типізовані дані EIP-712.
- Фінансування: поповнення USDC у продакшні на app.hypercall.xyz.
- Доступ: зв'яжіться з Hypercall, якщо вам потрібні ліміти маркетмейкера або потокова передача індикативних котирувань.
- Середовище: продакшн URL для REST і WebSocket, наведені вище. Не розраховуйте на доступність тестнету.
- Звірка: зберігайте власні клієнтські ідентифікатори ордерів, nonce, ордери, виконання та знімки позицій.
Шляхи інтеграції
TypeScript SDK
Встановіть офіційний пакет TypeScript для типізованих REST-клієнтів, валідації запитів під час виконання та допоміжних функцій підпису EIP-712:
npm install @hypercallxyz/sdk
Див. посібник з TypeScript SDK щодо читання ринкових даних, запитів до акаунта, підписаних операцій запису, обробки помилок і точок входу пакета. Наразі TypeScript SDK охоплює REST і підписування. Для потокових оновлень підключайтеся до WebSocket API напряму.
Rust-крейти
Hypercall публікує відкриті Rust-крейти для підтримуваної поверхні інтеграції в github.com/hypercall-public/hypercall-rust. Їх немає на crates.io. Додайте їх як git-залежності та зафіксуйте тег або коміт.
| Крейт | Призначення |
|---|---|
hypercall-client | REST-клієнт, WebSocket-клієнт, допоміжні функції підпису EIP-712, локальне підписування та підписування через AWS KMS |
hypercall-sdk-types | Публічні DTO запитів і відповідей, спільні з клієнтом |
hypercall-ws-protocol | Публічні типи повідомлень WebSocket |
hypercall-hyperliquid | Необов'язковий допоміжний крейт Hyperliquid для інтеграцій, які також хеджуються на Hyperliquid |
hypercall-liquidator | Еталонний клієнт ліквідації для Standard Margin. Для звичайного маркетмейкінгу він не потрібен |
За можливості використовуйте крейти. Вони кодують поточний домен підпису, структуру запитів, правила маршрутизації та правила форматування рядків, у яких легко помилитися вручну.
Прямий REST і WebSocket
Якщо ви не використовуєте Rust, вважайте основним джерелом інформації сторінки Довідник API, Автентифікація та підписування і WebSocket API.
1. Пошук ринків
Почніть із завантаження активних ринків і специфікацій інструментів:
curl https://api.hypercall.xyz/markets
curl "https://api.hypercall.xyz/instrument-specs?currency=BTC"
curl "https://api.hypercall.xyz/options-summary?currency=BTC"
Використовуйте:
GET /marketsдля переліку базових активів і груп експірацій.GET /instrument-specs?currency=BTCдля специфікацій опціонів, доступних для торгівлі.GET /options-summary?currency=BTCдля зведених полів рівня ланцюжка: найкращий бід, найкращий аск, марк-ціна та показники на кшталт грецьких.
2. Налаштування підпису
Операції запису використовують підписи EIP-712.
- Chain ID продакшну:
999 - Назва домену:
Hypercall - Версія домену:
1 - Контракт верифікації:
0x0000000000000000000000000000000000000000
Маркетмейкерам зазвичай слід використовувати агентський гаманець:
- Гаманець власника схвалює агента через
POST /approve-agent. - Агентський гаманець підписує ордери та скасування від імені гаманця власника.
- Гаманець власника залишається ідентичністю портфеля, фінансування та ризику.
Точні структури та назви полів див. у розділі Автентифікація та підписування.
3. Котирування через пакетні ордери
Для котирувань маркетмейкера використовуйте POST /bulk_order з route: "book_only".
curl -X POST https://api.hypercall.xyz/bulk_order \
-H "Content-Type: application/json" \
-d '{
"orders": [
{
"wallet": "0x...",
"symbol": "BTC-20260131-100000-C",
"price": "100.0",
"size": "0.1",
"side": "Buy",
"tif": "gtc",
"route": "book_only",
"client_id": "mm-bid-1",
"mmp_enabled": true,
"nonce": 1791273600000,
"signature": "0x..."
},
{
"wallet": "0x...",
"symbol": "BTC-20260131-100000-C",
"price": "101.0",
"size": "0.1",
"side": "Sell",
"tif": "gtc",
"route": "book_only",
"client_id": "mm-ask-1",
"mmp_enabled": true,
"nonce": 1791273600001,
"signature": "0x..."
}
]
}'
Важливі правила:
priceіsizeє рядками як у підписаному payload, так і в тілі JSON.- Форматування рядків має точно збігатися між підписом і тілом JSON.
- Розмір пакета обмежено 50 ордерами на запит.
- Пакетний маршрут лише через книгу заявок.
routeможе бутиbook_onlyабо бути пропущеним.route: "best_execution"відхиляється для пакетних ордерів; для нього використовуйтеPOST /order.route: "rfq_only"наразі відхиляється на всіх ендпоінтах ордерів. - Nonce є часовими мітками в мілісекундах. Nonce, що виходить за межі діапазону від двох днів до і одного дня після серверного часу, відхиляється. Див. Керування nonce.
- Більшість торгових відхилень повертають HTTP 200 зі
status: "REJECTED". Завжди перевіряйте кожен результат.
4. Оновлення котирувань
Використовуйте PUT /bulk_order, коли потрібно скасувати наявні ордери котирувань і розмістити заміни одним запитом.
curl -X PUT https://api.hypercall.xyz/bulk_order \
-H "Content-Type: application/json" \
-d '{
"replacements": [
{
"wallet": "0x...",
"order_id": 12345,
"symbol": "BTC-20260131-100000-C",
"price": "99.5",
"size": "0.1",
"side": "Buy",
"tif": "gtc",
"client_id": "mm-bid-1",
"mmp_enabled": true,
"nonce": 1791273600002,
"signature": "0x..."
}
]
}'
Заміни не містять поля route і підписуються як ReplaceOrder, що додає старий orderId до полів ордера. Див. Автентифікація та підписування.
PUT /bulk_order скасовує старий пакет перед створенням нового. Результати повертаються для кожної заміни в порядку запиту. Невдале скасування не дає створити відповідний ордер на заміну.
Для однієї заміни, чутливої до затримки, використовуйте PUT /order.
5. Підписка на оновлення
Підключіться до продакшн WebSocket:
const ws = new WebSocket("wss://api.hypercall.xyz/ws");
ws.onopen = () => {
ws.send(JSON.stringify({ type: "Authenticate", wallet: "0xYourWallet" }));
ws.send(JSON.stringify({ type: "Subscribe", channel: "order_updates" }));
ws.send(JSON.stringify({ type: "Subscribe", channel: "fills" }));
ws.send(JSON.stringify({ type: "Subscribe", channel: "portfolio" }));
};
Використовуйте:
order_updatesдля змін статусу ордерів, включно зPARTIALLY_FILLED. Йогоfilled_sizeє сукупною виконаною кількістю за ордером.fillsдля окремих виконань і кількості в кожному з них.portfolioдля оновлень стану акаунта.orderbook,trades,options_chainіindex_pricesдля публічних ринкових даних.
Формати каналів і поведінку перевірки з'єднання див. у розділі WebSocket API.
6. Звірка стану
Запускайте цикл звірки, навіть якщо ваше WebSocket-з'єднання працює справно.
| Стан | Резервний REST | Канал WebSocket |
|---|---|---|
| Ордери | GET /orders?wallet=... | order_updates |
| Виконання | GET /fills?wallet=... | fills |
| Портфель | GET /portfolio?wallet=... | portfolio |
| Ринки | GET /markets, GET /instrument-specs | market_updates, options_chain |
Рекомендований цикл:
- Завантажте ринки під час запуску.
- Завантажте відкриті ордери та останні виконання перед котируванням.
- Підпишіться на оновлення WebSocket.
- Котируйте з детермінованими клієнтськими ідентифікаторами.
- Періодично опитуйте REST, щоб відновлюватися після розривів з'єднання або пропущених повідомлень.
- Припиняйте котирування за невідомого стану, доки стан REST і WebSocket знову не збігатиметься.
7. Обсяг запуску
Mainnet Alpha навмисно обмежена.
- Маржа: Standard Margin і Portfolio Margin обидві працюють. Будь-який акаунт може перейти на Portfolio Margin, щойно його акаунт HyperCore перебуває в уніфікованому режимі.
- Короткі позиції за опціонами: шорти опціонів у Standard Margin увімкнено з урахуванням маржі та лімітів вашого рівня. Перевірте
standard_margin_shorts_enabledуGET /risk/limits?wallet=.... - Перпи: ордери на перпи використовують окремий домен підпису та ендпоінт. Див. Автентифікація та підписування.
- Індикативна потокова передача: потоки постачальників котирувань доступні лише за списком дозволених і поки що не є загальнодоступним шляхом інтеграції.
- Інструменти ліквідації: публічний крейт ліквідатора призначений для процесів ліквідації в Standard Margin, а не для звичайного маркетмейкінгу.
- Тестнет: недоступний, доки Hypercall не отримає більше тестових HYPE.
Поширені проблеми
Перевірка підпису не вдалася
- Перевірте, що
priceіsizeпередаються як рядки JSON. - Перевірте, що підписані рядки точно збігаються з надісланими.
- Використовуйте chain ID
999для продакшну. - Використовуйте новий nonce для кожної підписаної операції запису.
- Переконайтеся, що підписант є власником гаманця або схваленим агентом.
Недостатня маржа
- Перевірте
GET /portfolio?wallet=.... - Додайте забезпечення або зменште розмір котирування.
- Переконайтеся, що ваш гаманець має рівень доступу, необхідний для стратегії, яку ви котируєте.
Продаж відхилено через доступ або покриття
- Перевірте
GET /risk/limits?wallet=.... Деякі рівні дозволяють лише продажі, покриті виконаним довгим запасом. - Зв'яжіться з Hypercall, якщо вашому гаманцю потрібен інший рівень.
Немає виконань у WebSocket
- Надішліть повідомлення
Authenticateперед підпискою на автентифіковані канали. - Підпишіться на
fills, а не лише наorder_updates. - Після повторного підключення скористайтеся резервним
GET /fills?wallet=....
Наступні кроки
- Автентифікація: Автентифікація та підписування
- Протокол WebSocket: WebSocket API
- Ліміти запитів: Ліміти запитів
- Помилки: Помилки та причини відхилення
- Довідник: Довідник API