API取引
マーケットメイカー、クオートシステム、または執行サービスをHypercallと統合する場合は、このガイドをご利用ください。
REST ベースURL: https://api.hypercall.xyz
WebSocket URL: wss://api.hypercall.xyz/ws
テストネットの状況: Hypercallが追加のテストネットHYPEを確保するまで、テストネットは一時的に停止しています。Hypercallから専用環境が提供されない限り、新規のマーケットメイカー統合では本番環境をご利用ください。
インディカティブ・クオートプロバイダー向けのストリーミングは、まだ一般提供されていません。Hypercallは承認済みの統合に対して有効化できますが、通常のマーケットメイカーのオンボーディングでは、RESTのマーケットデータと、認証済みの注文、約定、ポートフォリオのWebSocketチャネルをご利用ください。
オンボーディング・チェックリスト
- 取引用ウォレット: EIP-712型付きデータに署名できるEVMウォレット。
- 資金: app.hypercall.xyz での本番USDC入金。
- アクセス: マーケットメイカー向けの上限やインディカティブ・クオートプロバイダー向けストリーミングが必要な場合は、Hypercallにお問い合わせください。
- 環境: 上記の本番RESTおよびWebSocket URL。テストネットが利用可能であることを前提にしないでください。
- 照合: 独自のクライアント注文ID、ノンス、注文、約定、ポジションのスナップショットを永続化してください。
統合方法
TypeScript SDK
型付きRESTクライアント、実行時のリクエスト検証、EIP-712署名ヘルパーを利用するには、公式TypeScriptパッケージをインストールします。
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 | スタンダード証拠金の清算用リファレンスクライアント。通常のマーケットメイクには不要です |
可能な限りクレートをご利用ください。現在の署名ドメイン、リクエスト形式、ルートのルール、文字列フォーマットのルールが組み込まれており、手作業では誤りやすい部分をカバーします。
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署名を使用します。
- 本番チェーンID:
999 - ドメイン名:
Hypercall - ドメインバージョン:
1 - 検証コントラクト:
0x0000000000000000000000000000000000000000
マーケットメイカーは通常、エージェントウォレットを使用します。
- オーナーウォレットが
POST /approve-agentでエージェントを承認します。 - エージェントウォレットがオーナーウォレットに代わって注文とキャンセルに署名します。
- オーナーウォレットは引き続きポートフォリオ、資金、リスクの主体となります。
正確な構造体とフィールド名については、認証と署名を参照してください。
3. 一括注文によるクオート
マーケットメイカーのクオートには、route: "book_only" を指定した POST /bulk_order を使用します。
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は文字列です。署名ペイロードとJSONボディの両方で文字列として扱います。- 文字列のフォーマットは署名とJSONボディで完全に一致する必要があります。
- 一括注文は1リクエストあたり最大50件です。
- 一括注文のルートはオーダーブックのみです。
routeはbook_onlyを指定するか省略できます。route: "best_execution"は一括注文では拒否されるため、POST /orderを使用してください。route: "rfq_only"は現在すべての注文エンドポイントで拒否されます。 - ノンスはミリ秒単位のタイムスタンプです。 サーバー時刻の2日前から1日後の範囲外のノンスは拒否されます。ノンス管理を参照してください。
- ほとんどの取引拒否はHTTP 200を返します。その際
status: "REJECTED"となります。必ず各結果を確認してください。
4. クオートの更新
既存のクオート注文をキャンセルし、置き換え注文を1回のリクエストで発注したい場合は 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の更新を購読します。
- 決定論的なクライアントIDでクオートします。
- 切断やメッセージの取りこぼしから回復するため、定期的にRESTをポーリングします。
- RESTとWebSocketの状態が再び一致するまで、状態が不明な場合はクオートを停止します。
7. ローンチ時の対象範囲
Mainnet Alphaは意図的に機能を制限しています。
- 証拠金: スタンダード証拠金とポートフォリオ証拠金の両方が稼働しています。HyperCoreアカウントがユニファイドモードであれば、どのアカウントでもポートフォリオ証拠金に切り替えられます。
- オプションのショート: スタンダード証拠金でのオプションのショートは、証拠金とご利用ティアの上限の範囲内で有効です。
standard_margin_shorts_enabledについてはGET /risk/limits?wallet=...を確認してください。 - パーペチュアル: パーペチュアル注文は別の署名ドメインとエンドポイントを使用します。認証と署名を参照してください。
- インディカティブ・ストリーミング: クオートプロバイダー向けストリームは許可リスト制で、まだ一般公開の統合方法ではありません。
- 清算ツール: 公開されているliquidatorクレートはスタンダード証拠金の清算ワークフロー向けであり、通常のマーケットメイク向けではありません。
- テストネット: Hypercallが追加のテストネットHYPEを確保するまで利用できません。
よくある問題
署名検証に失敗する
priceとsizeがJSON文字列であることを確認してください。- 署名した文字列が送信した文字列と完全に一致していることを確認してください。
- 本番環境ではチェーンID
999を使用してください。 - 署名付き書き込みごとに新しいノンスを使用してください。
- 署名者がウォレット本人または承認済みエージェントであることを確認してください。
証拠金不足
GET /portfolio?wallet=...を確認してください。- 担保を追加するか、クオートサイズを縮小してください。
- クオートする戦略に必要なアクセスレベルがウォレットにあることを確認してください。
アクセスまたはカバーを理由に売りが拒否される
GET /risk/limits?wallet=...を確認してください。一部のティアでは、約定済みのロング在庫でカバーされた売りのみが許可されます。- ウォレットに別のティアが必要な場合は、Hypercallにお問い合わせください。
WebSocketで約定が届かない
- 認証済みチャネルを購読する前に
Authenticateメッセージを送信してください。 order_updatesだけでなくfillsも購読してください。- 再接続後は
GET /fills?wallet=...にフォールバックしてください。
次のステップ
- 認証: 認証と署名
- WebSocketプロトコル: WebSocket API
- レート制限: レート制限
- エラー: エラーと拒否理由
- リファレンス: APIリファレンス