このページは機械翻訳されています。英語の原文が正式版です。 英語で読む
メインコンテンツにスキップ

APIトレーディング

このガイドは、マーケットメイカー、クオートシステム、または執行サービスをHypercallと統合する場合にご利用ください。

本番API

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 URLおよびWebSocket URL。テストネットが利用可能であると想定しないでください。
  • 照合: 自身のクライアント注文ID、ノンス、注文、約定、およびポジションのスナップショットを保持してください。

統合の方法

Rustクレート

Hypercallは、サポート対象の統合インターフェースに対応した公開Rustクレートを提供しています。

公開Rustリポジトリは github.com/hypercall-public/hypercall-rust です。

クレート用途
hypercall-clientRESTクライアント、WebSocketクライアント、EIP-712署名ヘルパー、ローカル署名、AWS KMS署名
hypercall-sdk-typesクライアントで共有される公開リクエスト・レスポンスDTO
hypercall-ws-protocol公開WebSocketメッセージ型
hypercall-hyperliquidHyperliquid上でもヘッジを行う統合向けのオプションの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

マーケットメイカーは通常、エージェントウォレットを使用してください。

  1. オーナーウォレットPOST /approve-agent でエージェントを承認します。
  2. エージェントウォレットがオーナーウォレットの代わりに注文とキャンセルに署名します。
  3. オーナーウォレットは引き続き、ポートフォリオ、資金、リスクのアイデンティティとして機能します。

正確な構造体とフィールド名については、認証と署名 を参照してください。

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": 1001,
"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": 1002,
"signature": "0x..."
}
]
}'

重要なルール:

  • pricesize は文字列です。署名対象のペイロードとJSONボディの両方で文字列として扱います。
  • 文字列フォーマットは、署名とJSONボディの間で完全に一致していなければなりません。
  • バルク注文のサイズは1リクエストあたり50件に制限されています。
  • バルクのルートはbook-onlyのみです。route: "best_execution" および route: "rfq_only" は単一注文用のパスであり、バルククオート用のパスではありません。
  • 取引リジェクトの多くは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",
"route": "book_only",
"client_id": "mm-bid-1",
"nonce": 1003,
"signature": "0x..."
}
]
}'

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: 注文ステータスの変更の受信。部分約定の更新は、ここでは意図的に省略されています。
  • fills: 部分約定および執行された取引の正式な情報源。
  • portfolio: アカウント状態の更新の受信。
  • orderbooktradesoptions_chainindex_prices: 公開マーケットデータの受信。

チャンネルのフォーマットと死活監視の挙動については、WebSocket API を参照してください。

6. 状態の照合

WebSocket接続が正常な場合でも、照合ループを実行してください。

状態RESTフォールバックWebSocketチャンネル
注文GET /orders?wallet=...order_updates
約定GET /fills?wallet=...fills
ポートフォリオGET /portfolio?wallet=...portfolio
マーケットGET /marketsGET /instrument-specsmarket_updatesoptions_chain

推奨ループ:

  1. 起動時にマーケットを読み込む
  2. クオート開始前に未約定注文と最新の約定を読み込む
  3. WebSocketの更新を購読する
  4. 決定論的なクライアントIDでクオートする
  5. 切断やメッセージ欠落から復旧するためにRESTを定期的にポーリングする
  6. RESTとWebSocketの状態が再び一致するまで、不明な状態ではクオートを停止する

7. ローンチ時の提供範囲の理解

メインネットアルファ版は意図的に制約されています。

  • 証拠金: 標準証拠金が稼働中です。ポートフォリオ証拠金は一般には有効化されていません。
  • ライターアクセス: オプションのショートエクスポージャーには承認済みアクセスが必要です。
  • インディカティブ・ストリーミング: クオートプロバイダー向けストリームは許可リスト制であり、まだ一般公開された統合パスではありません。
  • 清算ツール: 公開されているliquidatorクレートは標準証拠金の清算ワークフロー向けであり、通常のマーケットメイキング向けではありません。
  • テストネット: HypercallがテストネットHYPEを追加取得するまで利用できません。

よくある問題

署名検証の失敗

  • pricesize がJSON文字列であることを確認してください。
  • 署名した文字列が送信した文字列と完全に一致することを確認してください。
  • 本番環境ではチェーンID 999 を使用してください。
  • 署名付きの書き込みごとに新しいノンスを使用してください。
  • 署名者がウォレット本人または承認済みエージェントであることを確認してください。

証拠金不足

  • GET /portfolio?wallet=... を確認してください。
  • 担保を追加するか、クオートサイズを縮小してください。
  • クオートする戦略に必要なアクセスレベルをウォレットが持っていることを確認してください。

アクセスまたはカバレッジによる売り注文のリジェクト

  • 売り注文が約定済みのロング在庫でカバーされていることを確認するか、ライターアクセスについてHypercallにお問い合わせください。
  • 新しいウォレットでライターアクセスが有効になっていると想定しないでください。

WebSocketで約定が届かない

  • 認証が必要なチャンネルを購読する前に、Authenticate メッセージを送信してください。
  • order_updates だけでなく、fills も購読してください。
  • 再接続後は GET /fills?wallet=... にフォールバックしてください。

次のステップ