Цю сторінку перекладено автоматично. Оригінал англійською мовою є канонічним. Читати англійською →
Перейти к основному содержимому

Торгівля через API

Скористайтеся цим посібником, якщо ви інтегруєте з Hypercall маркетмейкера, систему котирування або сервіс виконання ордерів.

Продакшн API

Базовий 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-clientREST-клієнт, 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

Маркетмейкерам зазвичай слід використовувати агентський гаманець:

  1. Гаманець власника схвалює агента через POST /approve-agent.
  2. Агентський гаманець підписує ордери та скасування від імені гаманця власника.
  3. Гаманець власника залишається ідентичністю портфеля, фінансування та ризику.

Точні структури та назви полів див. у розділі Автентифікація та підписування.

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-specsmarket_updates, options_chain

Рекомендований цикл:

  1. Завантажте ринки під час запуску.
  2. Завантажте відкриті ордери та останні виконання перед котируванням.
  3. Підпишіться на оновлення WebSocket.
  4. Котируйте з детермінованими клієнтськими ідентифікаторами.
  5. Періодично опитуйте REST, щоб відновлюватися після розривів з'єднання або пропущених повідомлень.
  6. Припиняйте котирування за невідомого стану, доки стан 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=....

Наступні кроки​