Exchange エンドポイント
エクスチェンジエンドポイントは、Hyperliquidチェーンとのインタラクションおよび取引に使用されます。これらのリクエストの署名を生成するコードについては、Python SDKを参照してください。
Asset
多くのリクエストはassetを入力として取ります。永続契約の場合、これはmetaレスポンスのuniverseフィールドで返されるインデックスです。スポット資産の場合は10000 + indexを使用します。ここでindexはspotMeta.universe内の対応するインデックスです。例えば、PURR/USDCの注文を送信する場合、スポットメタデータにおけるassetインデックスが0であるため、使用すべきassetは10000です。
Subaccounts and vaults
サブアカウントとボールトには秘密鍵がありません。サブアカウントまたはボールトの代わりに操作を実行するには、マスターアカウントが署名を行い、vaultAddressフィールドにサブアカウントまたはボールトのアドレスを設定する必要があります。Python SDKのbasic_vault.pyの例がこれをデモンストレーションしています。
Expires After
一部のアクションはオプションフィールドexpiresAfterをサポートしており、これはこのアクションが拒否される期限となるミリ秒単位のタイムスタンプです。Core USDC transferなどのユーザー署名アクションはexpiresAfterフィールドをサポートしていません。なお、期限切れのexpiresAfterフィールドによりキャンセルされたアクションは、通常のアドレスベースのレート制限の5倍を消費します。
署名時にこのフィールドを組み込む方法の詳細については、Python SDKを参照してください。
Place an order
POST https://api.hyperliquid.xyz/exchange
注文リクエストのフィールドに関する全機能を備えた例については、Python SDKを参照してください。
リミットオーダーの場合、TIF(time-in-force)は、注文が最初にオーダーブックに到達したときの動作を設定します。
ALO(add liquidity only、すなわち「post only」)は、即時マッチングされる代わりにキャンセルされます。
IOC(immediate or cancel)は、未約定部分がオーダーブックに残る代わりにキャンセルされます。
GTC(good til canceled)の注文には特別な動作はありません。
Client Order ID(cloid)はオプションの128ビットの16進文字列です。例:0x1234567890abcdef1234567890abcdef
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description | |||||
|---|---|---|---|---|---|---|---|
| action* | Object | { "type": "order", "a": Number, "b": Boolean, "p": String, "s": String, "r": Boolean, "t": { "limit": { "tif": "Alo" |
"Ioc" | "Gtc" } or "trigger": { "isMarket": Boolean, "triggerPx": String, "tpsl": "tp" |
"sl" } }, "c": Cloid (optional) }], "grouping": "na" |
"normalTpsl" | "positionTpsl", "builder": Optional({"b": "address", "f": Number, "s": Optional([{"b": "address", "s": Number}])}) } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨 | |||||
| signature* | Object | ||||||
| vaultAddress | String | ボールトまたはサブアカウントの代わりに取引する場合、その42文字の16進形式のオンチェーンアドレス。例: 0x0000000000000000000000000000000000000000 | |||||
| expiresAfter | Number | ミリ秒単位のタイムスタンプ |
{% tabs %}
{
"status":"ok",
"response":{
"type":"order",
"data":{
"statuses":[
{
"resting":{
"oid":77738308
}
}
]
}
}
}
{% endtab %}
{% tab title="200: OK Error Response" %}
{
"status":"ok",
"response":{
"type":"order",
"data":{
"statuses":[
{
"error":"Order must have minimum value of $10."
}
]
}
}
}
{% endtab %}
{% tab title="200: OK Successful Response (filled)" %}
{
"status":"ok",
"response":{
"type":"order",
"data":{
"statuses":[
{
"filled":{
"totalSz":"0.02",
"avgPx":"1891.4",
"oid":77747314
}
}
]
}
}
}
{% endtab %}
Cancel order(s)
POST https://api.hyperliquid.xyz/exchange
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "cancel", "cancels": [ { "a": Number, "o": Number } ], "f": Boolean // fast } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨 |
| signature* | Object | |
| vaultAddress | String | ボールトまたはサブアカウントの代わりに取引する場合、その42文字の16進形式のアドレス。例: 0x0000000000000000000000000000000000000000 |
| expiresAfter | Number | ミリ秒単位のタイムスタンプ |
{% tabs %}
{
"status":"ok",
"response":{
"type":"cancel",
"data":{
"statuses":[
"success"
]
}
}
}
{% endtab %}
{% tab title="200: OK Error Response" %}
{
"status":"ok",
"response":{
"type":"cancel",
"data":{
"statuses":[
{
"error":"Order was never placed, already canceled, or filled."
}
]
}
}
}
{% endtab %}
cancelとcancelByCloidの両アクションにはオプションのfastフラグがあり、アクション内ではfとしてエンコードされます。f: trueの注文は、トリガー注文を参照している場合に拒否されます。現在のところfastには他の効果はありません。将来のネットワークアップグレードでは、キャンセルアクションはfast = trueの場合にのみmempool内で優先付けされる予定です。
なお、fがfalseの場合はスキップする必要があります。つまり、f: falseでハッシュされたアクションは拒否されます。
Cancel order(s) by cloid
POST https://api.hyperliquid.xyz/exchange
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "cancelByCloid", "cancels": [ { "asset": Number, "cloid": String } ], "f": Boolean // fast } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨 |
| signature* | Object | |
| vaultAddress | String | ボールトまたはサブアカウントの代わりに取引する場合、その42文字の16進形式のアドレス。例: 0x0000000000000000000000000000000000000000 |
| expiresAfter | Number | ミリ秒単位のタイムスタンプ |
{% tabs %}
{% endtab %}
{% tab title="200: OK Error Response" %}
{% endtab %}
Schedule cancel (dead man's switch)
POST https://api.hyperliquid.xyz/exchange
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "scheduleCancel", "time": number (optional) } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨 |
| signature* | Object | |
| vaultAddress | String | ボールトまたはサブアカウントの代わりに取引する場合、その42文字の16進形式のアドレス。例: 0x0000000000000000000000000000000000000000 |
| expiresAfter | Number | ミリ秒単位のタイムスタンプ |
将来の時刻にキャンセルすべての操作をスケジュールします。timeを含めない場合、スケジュールされたキャンセル操作は削除されます。timeは現在時刻から少なくとも5秒後でなければなりません。時刻になると、すべての未決済注文がキャンセルされ、トリガーカウントが1増加します。1日あたりの最大トリガー数は10です。このトリガーカウントは00:00 UTCにリセットされます。
Modify an order
POST https://api.hyperliquid.xyz/exchange
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description | ||||
|---|---|---|---|---|---|---|
| action* | Object | { "type": "modify", "oid": Number |
Cloid, "order": { "a": Number, "b": Boolean, "p": String, "s": String, "r": Boolean, "t": { "limit": { "tif": "Alo" |
"Ioc" | "Gtc" } or "trigger": { "isMarket": Boolean, "triggerPx": String, "tpsl": "tp" |
"sl" } }, "c": Cloid (optional) }, "a": Boolean // always_place } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨 | ||||
| signature* | Object | |||||
| vaultAddress | String | ボールトまたはサブアカウントの代わりに取引する場合、その42文字の16進形式のオンチェーンアドレス。例: 0x0000000000000000000000000000000000000000 | ||||
| expiresAfter | Number | ミリ秒単位のタイムスタンプ |
{% tabs %}
{% endtab %}
{% tab title="200: OK Error Response" %}
{% endtab %}
単一およびバッチのmodifyアクションの両方にはオプションのalways_placeフラグがあり、アクション内ではaとしてエンコードされます。always_place = trueの場合、キャンセルが成功したかどうかにかかわらず新しい注文が出されます。always_place = falseの場合、新しい注文は非トリガー注文でなければならず、TIF = ALOであるか、または実行不可能なTIF = GTCの注文でなければなりません。後者の場合、新しい注文のTIFはALOに上書きされます。
なお、aがfalseの場合はスキップする必要があります。つまり、a: falseでハッシュされたアクションは拒否されます。
Modify multiple orders
POST https://api.hyperliquid.xyz/exchange
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description | ||||
|---|---|---|---|---|---|---|
| action* | Object | { "type": "batchModify", "modifies": [{ "oid": Number |
Cloid, "order": { "a": Number, "b": Boolean, "p": String, "s": String, "r": Boolean, "t": { "limit": { "tif": "Alo" |
"Ioc" | "Gtc" } or "trigger": { "isMarket": Boolean, "triggerPx": String, "tpsl": "tp" |
"sl" } }, "c": Cloid (optional) } }], "a": Boolean // always_place } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨 | ||||
| signature* | Object | |||||
| vaultAddress | String | ボールトまたはサブアカウントの代わりに取引する場合、その42文字の16進形式のオンチェーンアドレス。例: 0x0000000000000000000000000000000000000000 | ||||
| expiresAfter | Number | ミリ秒単位のタイムスタンプ |
Update leverage
POST https://api.hyperliquid.xyz/exchange
コインのクロスレバレッジまたは分離レバレッジを更新します。
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "updateLeverage", "asset": コインのインデックス, "isCross": クロスレバレッジを更新する場合は true または false, "leverage": 新しいレバレッジを表す整数。当該コインのレバレッジ制約に従う } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨 |
| signature* | Object | |
| vaultAddress | String | ボールトまたはサブアカウントの代わりに取引する場合、その42文字の16進形式のオンチェーンアドレス。例: 0x0000000000000000000000000000000000000000 |
| expiresAfter | Number | ミリ秒単位のタイムスタンプ |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Update isolated margin
POST https://api.hyperliquid.xyz/exchange
分離ポジションに証拠金を追加または削除します。
証拠金変更のUSDC値ではなく特定のレバレッジをターゲットにするには、代替アクション{"type": "topUpIsolatedOnlyMargin", "asset": <asset>, "leverage": <float string>}があります。
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "updateIsolatedMargin", "asset": コインのインデックス, "isBuy": true(このパラメータはヘッジモードが導入されるまで効果はない), "ntli": 追加または削除する金額を6桁の小数で表す整数。例: 1 usd の場合は 1000000, } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨 |
| signature* | Object | |
| vaultAddress | String | ボールトまたはサブアカウントの代わりに取引する場合、その42文字の16進形式のオンチェーンアドレス。例: 0x0000000000000000000000000000000000000000 |
| expiresAfter | Number | ミリ秒単位のタイムスタンプ |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Send Asset
POST https://api.hyperliquid.xyz/exchange
この汎用メソッドは、異なる永続契約DEX、スポット残高、ユーザー、および/またはサブアカウント間でトークンを転送するために使用されます。デフォルトのUSDC永続契約DEXを指定するには""を使用し、スポットを指定するには"spot"を使用します。永続契約DEXとの間で転送できるのはコラテラルトークンのみです。
Headers
| Name | Value |
|---|---|
| Content-Type* | application/json |
Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "sendAsset", "hyperliquidChain": "Mainnet"(テストネットでは代わりに "Testnet" を使用), "signatureChainId": 署名時に使用されるチェーンのID(16進形式)。例: Arbitrum の場合は "0xa4b1", "destination": 42文字の16進形式のアドレス。例: 0x0000000000000000000000000000000000000000, "sourceDex": 転送元のperp dexの名前, "destinationDex": 転送先のperp dexの名前, "token": tokenName:tokenId。例: "PURR:0xc4bf3f870c0e9465323c0b6ed28096c2", "amount": 送信するトークンの量(文字列)。例: "0.01", "fromSubAccount": 42文字の16進形式のアドレス。サブアカウントからでない場合は空文字列, "nonce": 現在のタイムスタンプをミリ秒で表すNumber。nonceと一致すべき } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨。上記のaction Object内のnonceと一致する必要がある |
| signature* | Object |
Response
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Agent Send Asset
POST https://api.hyperliquid.xyz/exchange
send assetと同様ですが、エージェントが署名できます。転送先は転送元のアドレスと一致する必要があります。デフォルトのUSDC永続契約DEXを指定するには""を使用し、スポットを指定するには"spot"を使用します。永続契約DEXとの間で転送できるのはコラテラルトークンのみです。
Headers
| Name | Value |
|---|---|
| Content-Type* | application/json |
Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "agentSendAsset", "destination": 42文字の16進形式のアドレス。例: 0x0000000000000000000000000000000000000000, "sourceDex": 転送元のperp dexの名前, "destinationDex": 転送先のperp dexの名前, "token": tokenName:tokenId。例: "PURR:0xc4bf3f870c0e9465323c0b6ed28096c2", "amount": 送信するトークンの量(文字列)。例: "0.01", "fromSubAccount": 42文字の16進形式のアドレス。サブアカウントからでない場合は空文字列, "nonce": 現在のタイムスタンプをミリ秒で表すNumber。nonceと一致すべき } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨。上記のaction Object内のnonceと一致する必要がある |
| signature* | Object |
Response
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Send to EVM with data
POST https://api.hyperliquid.xyz/exchange
追加のデータペイロードを含むCoreからEVMへの転送のための特殊なアクションです。詳細についてはHyperCore <> HyperEVM transfersを参照してください。使用されると、transferの代わりにリンクされたコントラクト上でcoreReceiveWithDataが呼び出されます。重要:トークンが適切にリンクされており、リンクされたコントラクトが以下のインターフェースをサポートしていることを確認するのは呼び出し側の責任です:
interface ICoreReceiveWithData {
function coreReceiveWithData(
address from,
bytes32 destinationRecipient,
uint32 destinationChainId,
uint256 amount,
uint64 nonce,
bytes calldata data
) external;
}
Headers
| Name | Value |
|---|---|
| Content-Type* | application/json |
Body
| Name | Type | Description | |
|---|---|---|---|
| action* | Object | { "type": "sendToEvmWithData", "hyperliquidChain": "Mainnet"(テストネットでは代わりに "Testnet" を使用), "signatureChainId": 署名時に使用されるチェーンのID(16進形式)。例: Arbitrum の場合は "0xa4b1", "token": tokenName:tokenId。例: "PURR:0xc4bf3f870c0e9465323c0b6ed28096c2", "amount": 送信するトークンの量(文字列)。例: "0.01", "sourceDex": 転送元のperp dexの名前, "destinationRecipient": addressEncoding形式のアドレス, "addressEncoding": "hex" |
"base58", "destinationChainId": 数値, "gasLimit": 数値, "data": bytes, "nonce": 現在のタイムスタンプをミリ秒で表すNumber。nonceと一致すべき } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨。上記のaction Object内のnonceと一致する必要がある | |
| signature* | Object |
Response
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Core USDC transfer
POST https://api.hyperliquid.xyz/exchange
usdを別のアドレスに送信します。この転送はEVMブリッジを経由しません。署名形式はウォレットインターフェース向けに人間が読める形式です。
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "usdSend", "hyperliquidChain": "Mainnet"(テストネットでは代わりに "Testnet" を使用), "destination": 42文字の16進形式のアドレス。例: 0x0000000000000000000000000000000000000000, "amount": 送信するusdの量(文字列)。例: 1 usd の場合は "1", "time": 現在のタイムスタンプをミリ秒で表すNumber。nonceと一致すべき } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨 |
| signature* | Object |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Core spot transfer
POST https://api.hyperliquid.xyz/exchange
スポット資産を別のアドレスに送信します。この転送はEVMブリッジを経由しません。署名形式はウォレットインターフェース向けに人間が読める形式です。
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "spotSend", "hyperliquidChain": "Mainnet"(テストネットでは代わりに "Testnet" を使用), "destination": 42文字の16進形式のアドレス。例: 0x0000000000000000000000000000000000000000, "amount": 送信するトークンの量(文字列)。例: "0.01", "time": 現在のタイムスタンプをミリ秒で表すNumber。nonceと一致すべき } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨 |
| signature* | Object |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Example sign typed data for generating the signature:
{
"types": {
"HyperliquidTransaction:SpotSend": [
{
"name": "hyperliquidChain",
"type": "string"
},
{
"name": "destination",
"type": "string"
},
{
"name": "token",
"type": "string"
},
{
"name": "amount",
"type": "string"
},
{
"name": "time",
"type": "uint64"
}
]
},
"primaryType": "HyperliquidTransaction:SpotSend",
"domain": {
"name": "HyperliquidSignTransaction",
"version": "1",
"chainId": 42161,
"verifyingContract": "0x0000000000000000000000000000000000000000"
},
"message": {
"destination": "0x0000000000000000000000000000000000000000",
"token": "PURR:0xc1fb593aeffbeb02f85e0308e9956a90",
"amount": "0.1",
"time": 1716531066415,
"hyperliquidChain": "Mainnet"
}
}
Initiate a withdrawal request
POST https://api.hyperliquid.xyz/exchange
このメソッドは出金フローを開始するために使用されます。このリクエストを行うと、L1バリデーターが出金リクエストに署名し、ブリッジコントラクトに送信します。本記事の執筆時点で出金には$1の手数料がかかり、出金の確定には約5分かかります。
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "hyperliquidChain": "Mainnet"(テストネットでは代わりに "Testnet" を使用), "amount": 送信するusdの量(文字列)。例: 1 usd の場合は "1", "time": 現在のタイムスタンプをミリ秒で表すNumber。nonceと一致すべき, "destination": 42文字の16進形式のアドレス。例: 0x0000000000000000000000000000000000000000 } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨。上記のaction Object内のnonceと一致する必要がある |
| signature* | Object |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Transfer from Spot account to Perp account (and vice versa)
POST https://api.hyperliquid.xyz/exchange
このメソッドは、ユーザーのスポットウォレットから永続契約ウォレットへ、およびその逆にUSDCを転送するために使用されます。
Headers
| Name | Value |
|---|---|
| Content-Type* | "application/json" |
Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "usdClassTransfer", "hyperliquidChain": "Mainnet"(テストネットでは代わりに "Testnet" を使用), "amount": 転送するusdの量(文字列)。例: 1 usd の場合は "1"。このアクションをサブアカウントに対して使用する場合、amountの後に subaccount: address を含めることができる。例: "1" subaccount:0x0000000000000000000000000000000000000000, "toPerp": spot → perp の場合は true、それ以外は false, "nonce": 現在のタイムスタンプをミリ秒で表すNumber。外側のリクエストボディのnonceと一致する必要がある } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨。上記のaction Object内のnonceと一致する必要がある |
| signature* | Object |
Response
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Deposit into staking
POST https://api.hyperliquid.xyz/exchange
このメソッドは、バリデーターへのデリゲートのために、ユーザーのスポットアカウントからネイティブトークンをステーキングに移すために使用されます。
Headers
| Name | Value |
|---|---|
| Content-Type* | application/json |
Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "cDeposit", "hyperliquidChain": "Mainnet"(テストネットでは代わりに "Testnet" を使用), "wei": 転送するweiの量(数値), "nonce": 現在のタイムスタンプをミリ秒で表すNumber。外側のリクエストボディのnonceと一致する必要がある } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨。上記のaction Object内のnonceと一致する必要がある |
| signature* | Object |
Response
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Deposit into staking (agent)
POST https://api.hyperliquid.xyz/exchange
deposit into stakingと同様ですが、エージェントが署名できます。
Headers
| Name | Value |
|---|---|
| Content-Type* | application/json |
Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "cDeposit2", "wei": 転送するweiの量(数値) } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨 |
| signature* | Object | |
| expiresAfter | Number | ミリ秒単位のタイムスタンプ |
Response
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Withdraw from staking
POST https://api.hyperliquid.xyz/exchange
このメソッドは、ステーキングからネイティブトークンをユーザーのスポットアカウントに移すために使用されます。ステーキングからスポットアカウントへの転送は7日間のアンステーキングキューを経由することに注意してください。
Headers
| Name | Value |
|---|---|
| Content-Type* | application/json |
Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "cWithdraw", "hyperliquidChain": "Mainnet"(テストネットでは代わりに "Testnet" を使用), "wei": 転送するweiの量(数値), "nonce": 現在のタイムスタンプをミリ秒で表すNumber。外側のリクエストボディのnonceと一致する必要がある } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨。上記のaction Object内のnonceと一致する必要がある |
| signature* | Object |
Response
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Delegate or undelegate stake from validator
POST https://api.hyperliquid.xyz/exchange
バリデーターに対してネイティブトークンをデリゲートまたはデリゲート解除します。特定のバリデーターへのデリゲーションには1日間のロックアップ期間があることに注意してください。
Headers
| Name | Value |
|---|---|
| Content-Type* | application/json |
Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "tokenDelegate", "hyperliquidChain": "Mainnet"(テストネットでは代わりに "Testnet" を使用), "validator": 42文字の16進形式のアドレス。例: 0x0000000000000000000000000000000000000000, "wei": 数値, "nonce": 現在のタイムスタンプをミリ秒で表すNumber。外側のリクエストボディのnonceと一致する必要がある } |
| nonce* | number | 現在のタイムスタンプをミリ秒で使用することを推奨 |
| signature* | Object |
Response
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Deposit or withdraw from a vault
POST https://api.hyperliquid.xyz/exchange
ボールトに資金を追加または削除します。
Headers
| Name | Value |
|---|---|
| Content-Type* | application/json |
Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "vaultTransfer", "vaultAddress": 42文字の16進形式のアドレス。例: 0x0000000000000000000000000000000000000000, "usd": 数値 } |
| nonce* | number | 現在のタイムスタンプをミリ秒で使用することを推奨 |
| signature* | Object | |
| expiresAfter | Number | ミリ秒単位のタイムスタンプ |
Response
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Deposit or withdraw from an HIP-3 DEX's backstop liquidator
POST https://api.hyperliquid.xyz/exchange
HIP-3バックストップ清算人アドレスに資金を追加または削除します。ntlは1e-6クォートトークンを単位とする整数です。金額は1000クォートトークンの倍数でなければなりません(つまり ntl % 1000000000 == 0)。
出金できるのは元本のみであり、pnlは出金できません。
Headers
| Name | Value |
|---|---|
| Content-Type* | application/json |
Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "hip3LiquidatorTransfer", "dex": 文字列(例: "xyz"), "ntl": 数値, } |
| nonce* | number | 現在のタイムスタンプをミリ秒で使用することを推奨 |
| signature* | Object | |
| expiresAfter | Number | ミリ秒単位のタイムスタンプ |
Response
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Approve an API wallet
POST https://api.hyperliquid.xyz/exchange
APIウォレット(エージェントウォレットと呼ばれることもあります)を承認します。詳細についてはこちらを参照してください。
Headers
| Name | Value |
|---|---|
| Content-Type* | application/json |
Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "hyperliquidChain": "Mainnet"(テストネットでは代わりに "Testnet" を使用), "agentAddress": 42文字の16進形式のアドレス。例: 0x0000000000000000000000000000000000000000, "agentName": APIウォレットのオプションの名前。1つのアカウントは、名前なしの承認済みウォレットを1つ、名前付きウォレットを最大3つ持てる。さらに、サブアカウントごとに追加で2つの名前付きエージェントが許可される。名前の後に "nonce": 現在のタイムスタンプをミリ秒で表すNumber。外側のリクエストボディのnonceと一致する必要がある } |
| nonce* | number | 現在のタイムスタンプをミリ秒で使用することを推奨 |
| signature* | Object |
Response
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Approve a builder fee
POST https://api.hyperliquid.xyz/exchange
builderに対する最大手数料率を承認します。
Headers
| Name | Value |
|---|---|
| Content-Type* | application/json |
Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "hyperliquidChain": "Mainnet"(テストネットでは代わりに "Testnet" を使用), "maxFeeRate": 許可される最大のbuilder手数料率(パーセント文字列)。例: "0.001%", "builder": 42文字の16進形式のアドレス。例: 0x0000000000000000000000000000000000000000, "nonce": 現在のタイムスタンプをミリ秒で表すNumber。外側のリクエストボディのnonceと一致する必要がある } |
| nonce* | number | 現在のタイムスタンプをミリ秒で使用することを推奨 |
| signature* | Object |
Response
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Place a TWAP order
POST https://api.hyperliquid.xyz/exchange
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "twapOrder", "a": Number, "b": Boolean, "s": String, "r": Boolean, "m": Number, "t": Boolean } } m は minutes(分) |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨 |
| signature* | Object | |
| vaultAddress | String | ボールトまたはサブアカウントの代わりに取引する場合、その42文字の16進形式のオンチェーンアドレス。例: 0x0000000000000000000000000000000000000000 |
| expiresAfter | Number | ミリ秒単位のタイムスタンプ |
{% tabs %}
{
"status":"ok",
"response":{
"type":"twapOrder",
"data":{
"status": {
"running":{
"twapId":77738308
}
}
}
}
}
{% endtab %}
{% tab title="200: OK Error Response" %}
{
"status":"ok",
"response":{
"type":"twapOrder",
"data":{
"status": {
"error":"Invalid TWAP duration: 1 min(s)"
}
}
}
}
{% endtab %}
Cancel a TWAP order
POST https://api.hyperliquid.xyz/exchange
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "twapCancel", "a": Number, "t": Number } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨 |
| signature* | Object | |
| vaultAddress | String | ボールトまたはサブアカウントの代わりに取引する場合、その42文字の16進形式のアドレス。例: 0x0000000000000000000000000000000000000000 |
| expiresAfter | Number | ミリ秒単位のタイムスタンプ |
{% tabs %}
{
"status":"ok",
"response":{
"type":"twapCancel",
"data":{
"status": "success"
}
}
}
{% endtab %}
{% tab title="200: OK Error Response" %}
{
"status":"ok",
"response":{
"type":"twapCancel",
"data":{
"status": {
"error": "TWAP was never placed, already canceled, or filled."
}
}
}
}
{% endtab %}
Place a trailing stop order
POST https://api.hyperliquid.xyz/exchange
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description | |
|---|---|---|---|
| action* | Object | { "type": "trailingStop", "asset": Number, "isBuy": Boolean, "sz": String, "reduceOnly": Boolean, "retracement": {"pct": パーセント文字列。例: "1.234%"} または {"px": String}, "activationPx": String |
null } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨 | |
| signature* | Object | ||
| vaultAddress | String | ボールトまたはサブアカウントの代わりに取引する場合、その42文字の16進形式のアドレス。例: 0x0000000000000000000000000000000000000000 | |
| expiresAfter | Number | ミリ秒単位のタイムスタンプ |
{% tabs %}
{
"status":"ok",
"response":{
"type":"trailingStop",
"data":{
"oid":77738308
}
}
}
{% endtab %}
Reserve Additional Actions
POST https://api.hyperliquid.xyz/exchange
アドレスベースのレート制限を増やすために取引を行う代わりに、このアクションではリクエストごとに0.0005 USDCで追加のアクションを予約できます。コストは永続契約残高から支払われます。
destinationを設定すると、別のL1ユーザーの支払いを行うことができます。転送先ユーザーは既に存在している必要があります。このフィールドは未設定の場合、ハッシュ時にはスキップされます。
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description | |
|---|---|---|---|
| action* | Object | { "type": "reserveRequestWeight", "weight": Number, "destination": Address |
null } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨 | |
| signature* | Object | ||
| expiresAfter | Number | ミリ秒単位のタイムスタンプ |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Invalidate Pending Nonce (noop)
POST https://api.hyperliquid.xyz/exchange
このアクション自体は何も行いません(操作なし)が、nonceが使用済みとしてマークされます。これにより、キャンセルアクションよりも効果的に処理中の注文をキャンセルできる場合があります。
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "noop" } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨 |
| signature* | Object | |
| expiresAfter | Number | ミリ秒単位のタイムスタンプ |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Enable HIP-3 DEX abstraction
POST https://api.hyperliquid.xyz/exchange
注意: 非推奨です。userSetAbstractionを優先してください。
設定すると、HIP-3永続契約のアクションは、USDCがコラテラルトークンであるHIP-3 DEXについてはバリデーター運営のUSDC永続契約残高から、それ以外の場合はスポット残高からコラテラルを自動的に転送します。HIP-3 DEX abstractionが有効な場合、ポジションまたは未決済注文から解放されたコラテラルは同じソース(バリデーター運営のUSDC永続契約またはスポット残高)に戻されます。
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "userDexAbstraction", "hyperliquidChain": "Mainnet"(テストネットでは代わりに "Testnet" を使用), "signatureChainId": 署名時に使用されるチェーンのID(16進形式)。例: Arbitrum の場合は "0xa4b1", "user": 42文字の16進形式のアドレス。ユーザーのサブアカウントでもよい, "enabled": 真偽値, "nonce": 現在のタイムスタンプをミリ秒で表すNumber。nonceと一致すべき } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨 |
| signature* | Object |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Enable HIP-3 DEX abstraction (agent)
注意: 非推奨です。agentSetAbstractionを優先してください。
上記のUserDexAbstractionと同じ効果ですが、値をnullからtrueに設定する場合にのみ機能します。
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "agentEnableDexAbstraction" } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨 |
| signature* | Object |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Set User Abstraction
POST https://api.hyperliquid.xyz/exchange
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "userSetAbstraction", "hyperliquidChain": "Mainnet"(テストネットでは代わりに "Testnet" を使用), "signatureChainId": 署名時に使用されるチェーンのID(16進形式)。例: Arbitrum の場合は "0xa4b1", "user": 42文字の16進形式のアドレス。ユーザーのサブアカウントでもよい, "abstraction": 文字列 ["disabled", "unifiedAccount", "portfolioMargin"] のいずれか, "nonce": 現在のタイムスタンプをミリ秒で表すNumber。nonceと一致すべき } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨 |
| signature* | Object |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Set User Abstraction (agent)
POST https://api.hyperliquid.xyz/exchange
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "agentSetAbstraction", "abstraction": 文字列 ["i", "u", "p"] のいずれか。"i" は "disabled"、"u" は "unifiedAccount"、"p" は "portfolioMargin" を表す } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨 |
| signature* | Object |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Split outcome
XクォートトークンをX株のYesシェアとX株のNoシェアに分割します。
POST https://api.hyperliquid.xyz/exchange
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "userOutcome", "splitOutcome": { "outcome": Number, amount: String (e.g., "123.0") } } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨 |
| signature* | Object |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Merge outcome
X株のYesシェアとX株のNoシェアをXクォートトークンにマージします。
POST https://api.hyperliquid.xyz/exchange
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description | |
|---|---|---|---|
| action* | Object | { "type": "userOutcome", "mergeOutcome": { "outcome": Number, amount: String |
null(null は最大値を意味する) } } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨 | |
| signature* | Object |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Merge question
同じ質問に関連付けられた各アウトカムからX株のYesシェアをXクォートトークンにマージします。
POST https://api.hyperliquid.xyz/exchange
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description | |
|---|---|---|---|
| action* | Object | { "type": "userOutcome", "mergeQuestion": { "question": Number, amount: String |
null(null は最大値を意味する) } } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨 | |
| signature* | Object |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Negate outcome
質問に関連付けられたあるアウトカムのX株のNoシェアを、その質問に関連付けられた他のすべてのアウトカムのX株のYesシェアに変換します。
POST https://api.hyperliquid.xyz/exchange
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "userOutcome", "negateOutcome": { "question": Number, "outcome": Number, amount: String } } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨 |
| signature* | Object |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Validator vote on risk-free rate for aligned quote asset
POST https://api.hyperliquid.xyz/exchange
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "validatorL1Stream", "riskFreeRate": String // 例: 4% の場合は "0.04" } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨 |
| signature* | Object |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Authorize AQAv2 role
POST https://api.hyperliquid.xyz/exchange
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description | |
|---|---|---|---|
| action* | Object | { "type": "authorizeAqav2Role", "token": number // 例: USDC の場合は 0, "role": "technical" |
"treasury" } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨 | |
| signature* | Object |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Claim rewards
POST https://api.hyperliquid.xyz/exchange
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "claimRewards" } |
| nonce* | Number | 現在のタイムスタンプをミリ秒で使用することを推奨 |
| signature* | Object |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}