Exchange-Endpunkt
Der Exchange-Endpunkt dient zur Interaktion mit der Hyperliquid-Chain und zum Handel darauf. Code zum Erzeugen von Signaturen für diese Anfragen finden Sie im Python SDK.
Asset
Viele der Anfragen nehmen asset als Eingabe. Für Perpetuals ist dies der Index im Feld universe, das von dermeta-Antwort zurückgegeben wird. Für Spot-Assets verwenden Sie 10000 + index, wobei index der entsprechende Index in spotMeta.universe ist. Beim Aufgeben einer Order für PURR/USDC ist beispielsweise das zu verwendende asset 10000, da sein Asset-Index in den Spot-Metadaten 0 lautet.
Subkonten und Vaults
Subkonten und Vaults verfügen über keine privaten Schlüssel. Um Aktionen im Auftrag eines Subkontos oder Vault auszuführen, sollte die Signierung durch das Master-Konto erfolgen, und das Feld vaultAddress sollte auf die Adresse des Subkontos oder Vault gesetzt werden. Das Beispiel basic_vault.py im Python SDK veranschaulicht dies.
Ablaufzeitpunkt
Einige Aktionen unterstützen ein optionales Feld expiresAfter, einen Zeitstempel in Millisekunden, nach dem die Aktion abgelehnt wird. Vom Nutzer signierte Aktionen wie die Core-USDC-Übertragung unterstützen das Feld expiresAfter nicht. Beachten Sie, dass Aktionen das 5-fache des üblichen adressbasierten Rate Limits verbrauchen, wenn sie aufgrund eines veralteten expiresAfter-Feldes abgebrochen werden.
Details zur Einbindung dieses Feldes beim Signieren finden Sie im Python SDK.
Order aufgeben
POST https://api.hyperliquid.xyz/exchange
Vollständige Beispiele zu den Feldern der Order-Anfrage finden Sie im Python SDK.
Bei Limit-Orders legt TIF (time-in-force) das Verhalten der Order beim ersten Auftreffen auf das Orderbuch fest.
ALO (add liquidity only, d. h. „post only") wird storniert, anstatt sofort zu matchen.
Bei IOC (immediate or cancel) wird der nicht ausgeführte Teil storniert, anstatt im Orderbuch zu verbleiben.
GTC-Orders (good til canceled) weisen kein besonderes Verhalten auf.
Die Client-Order-ID (cloid) ist ein optionaler 128-Bit-Hex-String, z. B. 0x1234567890abcdef1234567890abcdef
Header
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Anfrage-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 | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden | |||||
| signature* | Object | ||||||
| vaultAddress | String | Beim Handel im Auftrag eines Vault oder Subkontos dessen Onchain-Adresse im 42-stelligen Hexadezimalformat; z. B. 0x0000000000000000000000000000000000000000 | |||||
| expiresAfter | Number | Zeitstempel in Millisekunden |
{% 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 %}
Order(s) stornieren
POST https://api.hyperliquid.xyz/exchange
Header
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Anfrage-Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "cancel", "cancels": [ { "a": Number, "o": Number } ], "f": Boolean // fast } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden |
| signature* | Object | |
| vaultAddress | String | Beim Handel im Auftrag eines Vault oder Subkontos dessen Adresse im 42-stelligen Hexadezimalformat; z. B. 0x0000000000000000000000000000000000000000 |
| expiresAfter | Number | Zeitstempel in Millisekunden |
{% 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 %}
Sowohl die Aktionen cancel als auch cancelByCloid enthalten ein optionales fast-Flag, das in der Aktion als f kodiert wird. Orders mit f: true werden abgelehnt, wenn sie sich auf Trigger-Orders beziehen. Derzeit hat fast keine weitere Wirkung. Bei einem künftigen Netzwerk-Upgrade werden Stornierungsaktionen im Mempool genau dann priorisiert, wenn fast = true.
Beachten Sie, dass f bei false ausgelassen werden muss, d. h. Aktionen, die mit f: false gehasht werden, werden abgelehnt.
Order(s) per cloid stornieren
POST https://api.hyperliquid.xyz/exchange
Header
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Anfrage-Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "cancelByCloid", "cancels": [ { "asset": Number, "cloid": String } ], "f": Boolean // fast } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden |
| signature* | Object | |
| vaultAddress | String | Beim Handel im Auftrag eines Vault oder Subkontos dessen Adresse im 42-stelligen Hexadezimalformat; z. B. 0x0000000000000000000000000000000000000000 |
| expiresAfter | Number | Zeitstempel in Millisekunden |
{% tabs %}
{% endtab %}
{% tab title="200: OK Error Response" %}
{% endtab %}
Stornierung planen (Totmannschalter)
POST https://api.hyperliquid.xyz/exchange
Header
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Anfrage-Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "scheduleCancel", "time": number (optional) } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden |
| signature* | Object | |
| vaultAddress | String | Beim Handel im Auftrag eines Vault oder Subkontos dessen Adresse im 42-stelligen Hexadezimalformat; z. B. 0x0000000000000000000000000000000000000000 |
| expiresAfter | Number | Zeitstempel in Millisekunden |
Planen Sie eine Stornierung aller Orders für einen zukünftigen Zeitpunkt. Ohne Angabe von time wird die geplante Stornierung entfernt. Der Zeitpunkt muss mindestens 5 Sekunden nach der aktuellen Zeit liegen. Sobald der Zeitpunkt eintritt, werden alle offenen Orders storniert und ein Auslöserzähler erhöht. Die maximale Anzahl an Auslösungen pro Tag beträgt 10. Dieser Auslöserzähler wird um 00:00 UTC zurückgesetzt.
Order ändern
POST https://api.hyperliquid.xyz/exchange
Header
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Anfrage-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 | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden | ||||
| signature* | Object | |||||
| vaultAddress | String | Beim Handel im Auftrag eines Vault oder Subkontos dessen Onchain-Adresse im 42-stelligen Hexadezimalformat; z. B. 0x0000000000000000000000000000000000000000 | ||||
| expiresAfter | Number | Zeitstempel in Millisekunden |
{% tabs %}
{% endtab %}
{% tab title="200: OK Error Response" %}
{% endtab %}
Sowohl einzelne als auch Batch-Modify-Aktionen enthalten ein optionales always_place-Flag, das in der Aktion als a kodiert wird. Bei always_place = true wird die neue Order unabhängig davon aufgegeben, ob die Stornierung erfolgreich war. Bei always_place = false muss die neue Order eine Nicht-Trigger-Order sein und entweder TIF = ALO oder eine nicht ausführbare Order mit TIF = GTC aufweisen. Im letzteren Fall wird TIF der neuen Order auf ALO überschrieben.
Beachten Sie, dass a bei false ausgelassen werden muss, d. h. Aktionen, die mit a: false gehasht werden, werden abgelehnt.
Mehrere Orders ändern
POST https://api.hyperliquid.xyz/exchange
Header
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Anfrage-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" } oder "trigger": { "isMarket": Boolean, "triggerPx": String, "tpsl": "tp" |
"sl" } }, "c": Cloid (optional) } }], "a": Boolean // always_place } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden | ||||
| signature* | Object | |||||
| vaultAddress | String | Beim Handel im Auftrag eines Vault oder Subkontos dessen On-Chain-Adresse im 42-stelligen Hexadezimalformat; z. B. 0x0000000000000000000000000000000000000000 | ||||
| expiresAfter | Number | Zeitstempel in Millisekunden |
Hebel aktualisieren
POST https://api.hyperliquid.xyz/exchange
Aktualisieren Sie den Cross- oder isolierten Hebel für einen Coin.
Header
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Anfrage-Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "updateLeverage", "asset": Index des Coin, "isCross": true oder false bei Aktualisierung des Cross-Hebels, "leverage": Integer, der den neuen Hebel darstellt, vorbehaltlich der Hebelbeschränkungen für diesen Coin } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden |
| signature* | Object | |
| vaultAddress | String | Beim Handel im Auftrag eines Vault oder Subkontos dessen On-Chain-Adresse im 42-stelligen Hexadezimalformat; z. B. 0x0000000000000000000000000000000000000000 |
| expiresAfter | Number | Zeitstempel in Millisekunden |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Isolierte Margin aktualisieren
POST https://api.hyperliquid.xyz/exchange
Margin einer isolierten Position hinzufügen oder entziehen
Beachten Sie, dass für einen bestimmten Hebel anstelle eines USDC-Werts der Margin-Änderung eine alternative Aktion zur Verfügung steht: {"type": "topUpIsolatedOnlyMargin", "asset": <asset>, "leverage": <float string>}
Header
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Anfrage-Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "updateIsolatedMargin", "asset": Index des Coin, "isBuy": true, (dieser Parameter hat erst mit Einführung des Hedge-Modus eine Wirkung) "ntli": int, der den hinzuzufügenden oder zu entfernenden Betrag mit 6 Dezimalstellen darstellt, z. B. 1000000 für 1 usd, } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden |
| signature* | Object | |
| vaultAddress | String | Beim Handel im Auftrag eines Vault oder Subkontos dessen On-Chain-Adresse im 42-stelligen Hexadezimalformat; z. B. 0x0000000000000000000000000000000000000000 |
| expiresAfter | Number | Zeitstempel in Millisekunden |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Asset senden
POST https://api.hyperliquid.xyz/exchange
Diese allgemeine Methode dient zur Übertragung von Token zwischen verschiedenen Perp-DEXs, dem Spot-Guthaben, Nutzern und/oder Subkonten. Verwenden Sie "" zur Angabe des standardmäßigen USDC-Perp-DEX und "spot" zur Angabe von Spot. Nur der Collateral-Token kann zu oder von einem Perp-DEX übertragen werden.
Header
| Name | Value |
|---|---|
| Content-Type* | application/json |
Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "sendAsset", "hyperliquidChain": "Mainnet" (im Testnet stattdessen "Testnet" verwenden), "signatureChainId": die ID der beim Signieren verwendeten Chain im Hexadezimalformat; z. B. "0xa4b1" für Arbitrum, "destination": Adresse im 42-stelligen Hexadezimalformat; z. B. 0x0000000000000000000000000000000000000000, "sourceDex": Name des Perp-DEX, von dem übertragen wird, "destinationDex": Name des Perp-DEX, zu dem übertragen wird, "token": tokenName:tokenId; z. B. "PURR:0xc4bf3f870c0e9465323c0b6ed28096c2", "amount": Menge des zu sendenden Token als String; z. B. "0.01", "fromSubAccount": Adresse im 42-stelligen Hexadezimalformat oder leerer String, falls nicht von einem Subkonto, "nonce": aktueller Zeitstempel in Millisekunden als Number, sollte mit nonce übereinstimmen } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden; muss mit der nonce im obenstehenden action-Objekt übereinstimmen |
| signature* | Object |
Antwort
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Asset senden über Agent
POST https://api.hyperliquid.xyz/exchange
Ähnlich wie beim Senden eines Asset, kann jedoch von einem Agent signiert werden. Das Ziel muss mit der Quelladresse übereinstimmen. Verwenden Sie "" zur Angabe des standardmäßigen USDC-Perp-DEX und "spot" zur Angabe von Spot. Nur der Collateral-Token kann zu oder von einem Perp-DEX übertragen werden.
Header
| Name | Value |
|---|---|
| Content-Type* | application/json |
Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "agentSendAsset", "destination": Adresse im 42-stelligen Hexadezimalformat; z. B. 0x0000000000000000000000000000000000000000, "sourceDex": Name des Perp-DEX, von dem übertragen wird, "destinationDex": Name des Perp-DEX, zu dem übertragen wird, "token": tokenName:tokenId; z. B. "PURR:0xc4bf3f870c0e9465323c0b6ed28096c2", "amount": Menge des zu sendenden Token als String; z. B. "0.01", "fromSubAccount": Adresse im 42-stelligen Hexadezimalformat oder leerer String, falls nicht von einem Subkonto, "nonce": aktueller Zeitstempel in Millisekunden als Number, sollte mit nonce übereinstimmen } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden; muss mit der nonce im obenstehenden action-Objekt übereinstimmen |
| signature* | Object |
Antwort
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Mit Daten an EVM senden
POST https://api.hyperliquid.xyz/exchange
Spezialisierte Aktion für die Übertragung von Core zu EVM, die eine zusätzliche Daten-Nutzlast enthält. Weitere Einzelheiten finden Sie unter HyperCore <> HyperEVM-Übertragungen. Bei Verwendung wird auf dem verknüpften Contract coreReceiveWithData anstelle von transfer aufgerufen. WICHTIG: Es liegt in der Verantwortung des Aufrufers sicherzustellen, dass der Token ordnungsgemäß verknüpft ist und der verknüpfte Contract die folgende Schnittstelle unterstützt:
interface ICoreReceiveWithData {
function coreReceiveWithData(
address from,
bytes32 destinationRecipient,
uint32 destinationChainId,
uint256 amount,
uint64 nonce,
bytes calldata data
) external;
}
Header
| Name | Value |
|---|---|
| Content-Type* | application/json |
Body
| Name | Type | Description | |
|---|---|---|---|
| action* | Object | { "type": "sendToEvmWithData", "hyperliquidChain": "Mainnet" (im Testnet stattdessen "Testnet" verwenden), "signatureChainId": die ID der beim Signieren verwendeten Chain im Hexadezimalformat; z. B. "0xa4b1" für Arbitrum, "token": tokenName:tokenId; z. B. "PURR:0xc4bf3f870c0e9465323c0b6ed28096c2", "amount": Menge des zu sendenden Token als String; z. B. "0.01", "sourceDex": Name des Perp-DEX, von dem übertragen wird, "destinationRecipient": Adresse im addressEncoding-Format, "addressEncoding": "hex" |
"base58", "destinationChainId": number, "gasLimit": number, "data": bytes, "nonce": aktueller Zeitstempel in Millisekunden als Number, sollte mit nonce übereinstimmen } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden; muss mit der nonce im obenstehenden action-Objekt übereinstimmen | |
| signature* | Object |
Antwort
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Core-USDC-Übertragung
POST https://api.hyperliquid.xyz/exchange
Senden Sie usd an eine andere Adresse. Diese Übertragung berührt nicht die EVM-Bridge. Das Signaturformat ist für Wallet-Schnittstellen im Klartext lesbar.
Header
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Anfrage-Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "usdSend", "hyperliquidChain": "Mainnet" (im Testnet stattdessen "Testnet" verwenden), "destination": Adresse im 42-stelligen Hexadezimalformat; z. B. 0x0000000000000000000000000000000000000000, "amount": Menge des zu sendenden usd als String, z. B. "1" für 1 usd, "time": aktueller Zeitstempel in Millisekunden als Number, sollte mit nonce übereinstimmen } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden |
| signature* | Object |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Core-Spot-Übertragung
POST https://api.hyperliquid.xyz/exchange
Senden Sie Spot-Assets an eine andere Adresse. Diese Übertragung berührt nicht die EVM-Bridge. Das Signaturformat ist für Wallet-Oberflächen im Klartext lesbar.
Header
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Anfrage-Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "spotSend", "hyperliquidChain": "Mainnet" (im Testnet verwenden Sie stattdessen "Testnet"), "destination": Adresse im 42-stelligen Hexadezimalformat; z. B. 0x0000000000000000000000000000000000000000, "amount": Menge des zu sendenden Tokens als String, z. B. "0.01", "time": aktueller Zeitstempel in Millisekunden als Number, sollte mit nonce übereinstimmen } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden |
| 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"
}
}
Auszahlungsanfrage einleiten
POST https://api.hyperliquid.xyz/exchange
Mit dieser Methode wird der Auszahlungsvorgang eingeleitet. Nach dieser Anfrage signieren die L1-Validatoren die Auszahlungsanfrage und senden sie an den Bridge-Contract. Zum Zeitpunkt der Erstellung dieses Dokuments fällt für die Auszahlung eine Gebühr von $1 an, und Auszahlungen benötigen ungefähr 5 Minuten bis zur Finalisierung.
Header
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Anfrage-Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "hyperliquidChain": "Mainnet" (im Testnet verwenden Sie stattdessen "Testnet"), "amount": Menge an usd, die als String gesendet wird, z. B. "1" für 1 usd, "time": aktueller Zeitstempel in Millisekunden als Number, sollte mit nonce übereinstimmen, "destination": Adresse im 42-stelligen Hexadezimalformat; z. B. 0x0000000000000000000000000000000000000000 } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden, muss mit der nonce im obigen action-Objekt übereinstimmen |
| signature* | Object |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Übertragung vom Spot-Konto auf das Perp-Konto (und umgekehrt)
POST https://api.hyperliquid.xyz/exchange
Mit dieser Methode wird USDC vom Spot-Wallet des Nutzers auf das Perp-Wallet übertragen und umgekehrt.
Header
| Name | Value |
|---|---|
| Content-Type* | "application/json" |
Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "usdClassTransfer", "hyperliquidChain": "Mainnet" (im Testnet verwenden Sie stattdessen "Testnet"), "amount": Menge an usd, die als String übertragen wird, z. B. "1" für 1 usd. Wenn Sie diese Aktion für ein Subkonto verwenden möchten, können Sie nach dem Betrag subaccount: Adresse einfügen, z. B. "1" subaccount:0x0000000000000000000000000000000000000000, "toPerp": true bei (spot -> perp), sonst false, "nonce": aktueller Zeitstempel in Millisekunden als Number, muss mit der nonce im äußeren Request Body übereinstimmen } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden, muss mit der nonce im obigen action-Objekt übereinstimmen |
| signature* | Object |
Antwort
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Einzahlung in Staking
POST https://api.hyperliquid.xyz/exchange
Mit dieser Methode wird der native Token vom Spot-Konto des Nutzers in das Staking übertragen, um ihn an Validatoren zu delegieren.
Header
| Name | Value |
|---|---|
| Content-Type* | application/json |
Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "cDeposit", "hyperliquidChain": "Mainnet" (im Testnet verwenden Sie stattdessen "Testnet"), "wei": Menge an wei, die als Number übertragen wird, "nonce": aktueller Zeitstempel in Millisekunden als Number, muss mit der nonce im äußeren Request Body übereinstimmen } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden, muss mit der nonce im obigen action-Objekt übereinstimmen |
| signature* | Object |
Antwort
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Einzahlung in Staking (Agent)
POST https://api.hyperliquid.xyz/exchange
Ähnlich wie die Einzahlung in Staking, kann jedoch von einem Agent signiert werden.
Header
| Name | Value |
|---|---|
| Content-Type* | application/json |
Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "cDeposit2", "wei": Menge an wei, die als Number übertragen wird } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden |
| signature* | Object | |
| expiresAfter | Number | Zeitstempel in Millisekunden |
Antwort
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Auszahlung aus Staking
POST https://api.hyperliquid.xyz/exchange
Mit dieser Methode wird der native Token aus dem Staking auf das Spot-Konto des Nutzers übertragen. Beachten Sie, dass Übertragungen vom Staking auf das Spot-Konto eine 7-tägige Unstaking-Warteschlange durchlaufen.
Header
| Name | Value |
|---|---|
| Content-Type* | application/json |
Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "cWithdraw", "hyperliquidChain": "Mainnet" (im Testnet verwenden Sie stattdessen "Testnet"), "wei": Menge an wei, die als Number übertragen wird, "nonce": aktueller Zeitstempel in Millisekunden als Number, muss mit der nonce im äußeren Request Body übereinstimmen } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden, muss mit der nonce im obigen action-Objekt übereinstimmen |
| signature* | Object |
Antwort
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Stake an einen Validator delegieren oder Delegierung aufheben
POST https://api.hyperliquid.xyz/exchange
Delegieren Sie native Token an einen Validator oder heben Sie die Delegierung auf. Beachten Sie, dass Delegierungen an einen bestimmten Validator eine Sperrdauer von 1 Tag haben.
Header
| Name | Value |
|---|---|
| Content-Type* | application/json |
Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "tokenDelegate", "hyperliquidChain": "Mainnet" (im Testnet verwenden Sie stattdessen "Testnet"), "validator": Adresse im 42-stelligen Hexadezimalformat; z. B. 0x0000000000000000000000000000000000000000, "wei": number, "nonce": aktueller Zeitstempel in Millisekunden als Number, muss mit der nonce im äußeren Request Body übereinstimmen } |
| nonce* | number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden |
| signature* | Object |
Antwort
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Einzahlung in einen Vault oder Auszahlung daraus
POST https://api.hyperliquid.xyz/exchange
Kapital in einen Vault einzahlen oder daraus entnehmen.
Header
| Name | Value |
|---|---|
| Content-Type* | application/json |
Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "vaultTransfer", "vaultAddress": Adresse im 42-stelligen Hexadezimalformat; z. B. 0x0000000000000000000000000000000000000000, "usd": number } |
| nonce* | number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden |
| signature* | Object | |
| expiresAfter | Number | Zeitstempel in Millisekunden |
Antwort
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Einzahlung in den Backstop-Liquidator einer HIP-3 DEX oder Auszahlung daraus
POST https://api.hyperliquid.xyz/exchange
Zahlen Sie Kapital auf die Adresse des HIP-3-Backstop-Liquidators ein oder entnehmen Sie es daraus. ntl ist eine Ganzzahl in Einheiten von 1e-6 Quote-Token. Der Betrag muss ein Vielfaches von 1000 Quote-Token sein (d. h. ntl % 1000000000 == 0).
Nur der Kapitalbetrag ist auszahlbar, nicht der pnl.
Header
| Name | Value |
|---|---|
| Content-Type* | application/json |
Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "hip3LiquidatorTransfer", "dex": string (z. B. "xyz"), "ntl": number, } |
| nonce* | number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden |
| signature* | Object | |
| expiresAfter | Number | Zeitstempel in Millisekunden |
Antwort
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
API-Wallet genehmigen
POST https://api.hyperliquid.xyz/exchange
Genehmigt eine API-Wallet (mitunter auch als Agent-Wallet bezeichnet). Weitere Details finden Sie hier.
Header
| Name | Value |
|---|---|
| Content-Type* | application/json |
Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "hyperliquidChain": "Mainnet" (im Testnet verwenden Sie stattdessen "Testnet"), "agentAddress": Adresse im 42-stelligen Hexadezimalformat; z. B. 0x0000000000000000000000000000000000000000, "agentName": Optionaler Name für die API-Wallet. Ein Konto kann 1 unbenannte genehmigte Wallet und bis zu 3 benannte besitzen. Zusätzlich sind 2 benannte Agents pro Subkonto erlaubt. Eine benutzerdefinierte Ablaufzeit kann festgelegt werden, indem "nonce": aktueller Zeitstempel in Millisekunden als Number, muss mit der nonce im äußeren Request Body übereinstimmen } |
| nonce* | number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden |
| signature* | Object |
Antwort
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Builder-Gebühr genehmigen
POST https://api.hyperliquid.xyz/exchange
Genehmigen Sie einen maximalen Gebührensatz für einen Builder.
Header
| Name | Value |
|---|---|
| Content-Type* | application/json |
Anfrage-Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "hyperliquidChain": "Mainnet" (im Testnet stattdessen "Testnet" verwenden), "maxFeeRate": der maximal zulässige Builder-Gebührensatz als Prozentangabe; z. B. "0.001%", "builder": Adresse im 42-stelligen Hexadezimalformat; z. B. 0x0000000000000000000000000000000000000000, "nonce": aktueller Zeitstempel in Millisekunden als Number, muss mit der Nonce im äußeren Anfrage-Body übereinstimmen } |
| nonce* | number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden |
| signature* | Object |
Antwort
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
TWAP-Order aufgeben
POST https://api.hyperliquid.xyz/exchange
Header
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Anfrage-Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "twapOrder", "a": Number, "b": Boolean, "s": String, "r": Boolean, "m": Number, "t": Boolean } } m ist minutes |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden |
| signature* | Object | |
| vaultAddress | String | Beim Handel im Namen eines Vault oder Subkontos dessen Onchain-Adresse im 42-stelligen Hexadezimalformat; z. B. 0x0000000000000000000000000000000000000000 |
| expiresAfter | Number | Zeitstempel in Millisekunden |
{% 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 %}
TWAP-Order stornieren
POST https://api.hyperliquid.xyz/exchange
Header
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Anfrage-Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "twapCancel", "a": Number, "t": Number } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden |
| signature* | Object | |
| vaultAddress | String | Beim Handel im Namen eines Vault oder Subkontos dessen Adresse im 42-stelligen Hexadezimalformat; z. B. 0x0000000000000000000000000000000000000000 |
| expiresAfter | Number | Zeitstempel in Millisekunden |
{% 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 %}
Trailing-Stop-Order aufgeben
POST https://api.hyperliquid.xyz/exchange
Header
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Anfrage-Body
| Name | Type | Description | |
|---|---|---|---|
| action* | Object | { "type": "trailingStop", "asset": Number, "isBuy": Boolean, "sz": String, "reduceOnly": Boolean, "retracement": {"pct": als Prozentangabe; z. B. "1.234%"} oder {"px": String}, "activationPx": String |
null } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden | |
| signature* | Object | ||
| vaultAddress | String | Beim Handel im Namen eines Vault oder Subkontos dessen Adresse im 42-stelligen Hexadezimalformat; z. B. 0x0000000000000000000000000000000000000000 | |
| expiresAfter | Number | Zeitstempel in Millisekunden |
{% tabs %}
{
"status":"ok",
"response":{
"type":"trailingStop",
"data":{
"oid":77738308
}
}
}
{% endtab %}
Zusätzliche Actions reservieren
POST https://api.hyperliquid.xyz/exchange
Anstatt zu handeln, um die adressbasierten Rate Limits zu erhöhen, können mit dieser Action zusätzliche Actions für 0.0005 USDC pro Anfrage reserviert werden. Die Kosten werden vom Perps-Guthaben abgezogen.
destination kann gesetzt werden, um für einen anderen L1-Nutzer zu bezahlen. Der Zielnutzer muss bereits existieren. Dieses Feld wird beim Hashing übersprungen, wenn es nicht gesetzt ist.
Header
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Anfrage-Body
| Name | Type | Description | |
|---|---|---|---|
| action* | Object | { "type": "reserveRequestWeight", "weight": Number, "destination": Address |
null } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden | |
| signature* | Object | ||
| expiresAfter | Number | Zeitstempel in Millisekunden |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Ausstehende Nonce ungültig machen (noop)
POST https://api.hyperliquid.xyz/exchange
Diese Action bewirkt nichts (keine Operation), führt aber dazu, dass die Nonce als verwendet markiert wird. Dies kann eine effektivere Möglichkeit sein, laufende Orders zu stornieren, als die Stornierungs-Action.
Header
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Anfrage-Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "noop" } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden |
| signature* | Object | |
| expiresAfter | Number | Zeitstempel in Millisekunden |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
HIP-3 DEX-Abstraktion aktivieren
POST https://api.hyperliquid.xyz/exchange
HINWEIS: Veraltet. Verwenden Sie stattdessen userSetAbstraction.
Wenn diese Option aktiviert ist, übertragen Actions auf HIP-3-Perps automatisch Sicherheiten vom von Validatoren betriebenen USDC-Perps-Guthaben für HIP-3 DEXs, bei denen USDC der Sicherheiten-Token ist, und andernfalls aus Spot. Wenn die HIP-3 DEX-Abstraktion aktiv ist, werden Sicherheiten bei Freigabe aus Positionen oder offenen Orders an dieselbe Quelle zurückgeführt (von Validatoren betriebenes USDC-Perps- oder Spot-Guthaben).
Header
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Anfrage-Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "userDexAbstraction", "hyperliquidChain": "Mainnet" (im Testnet stattdessen "Testnet" verwenden), "signatureChainId": die ID der beim Signieren verwendeten Chain im Hexadezimalformat; z. B. "0xa4b1" für Arbitrum, "user": Adresse im 42-stelligen Hexadezimalformat. Kann ein Subkonto des Nutzers sein, "enabled": boolean, "nonce": aktueller Zeitstempel in Millisekunden als Number, sollte mit der Nonce übereinstimmen } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden |
| signature* | Object |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
HIP-3 DEX-Abstraktion aktivieren (Agent)
HINWEIS: Veraltet. Verwenden Sie stattdessen agentSetAbstraction.
Gleiche Wirkung wie UserDexAbstraction oben, funktioniert jedoch nur, wenn der Wert von null auf true gesetzt wird.
Header
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Anfrage-Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "agentEnableDexAbstraction" } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden |
| signature* | Object |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
User-Abstraktion festlegen
POST https://api.hyperliquid.xyz/exchange
Header
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Anfrage-Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "userSetAbstraction", "hyperliquidChain": "Mainnet" (im Testnet stattdessen "Testnet" verwenden), "signatureChainId": die ID der beim Signieren verwendeten Chain im Hexadezimalformat; z. B. "0xa4b1" für Arbitrum, "user": Adresse im 42-stelligen Hexadezimalformat. Kann ein Subkonto des Nutzers sein, "abstraction": eine der Zeichenfolgen ["disabled", "unifiedAccount", "portfolioMargin"], "nonce": aktueller Zeitstempel in Millisekunden als Number, sollte mit der Nonce übereinstimmen } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden |
| signature* | Object |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
User-Abstraktion festlegen (Agent)
POST https://api.hyperliquid.xyz/exchange
Header
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Anfrage-Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "agentSetAbstraction", "abstraction": eine der Zeichenfolgen ["i", "u", "p"], wobei "i" für "disabled", "u" für "unifiedAccount" und "p" für "portfolioMargin" steht } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden |
| signature* | Object |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Outcome aufteilen
X Quote-Tokens in X Yes- und X No-Anteile aufteilen.
POST https://api.hyperliquid.xyz/exchange
Header
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Anfrage-Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "userOutcome", "splitOutcome": { "outcome": Number, amount: String (z. B. "123.0") } } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden |
| signature* | Object |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Outcome zusammenführen
X Yes- und X No-Anteile zu X Quote-Tokens zusammenführen.
POST https://api.hyperliquid.xyz/exchange
Header
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Anfrage-Body
| Name | Type | Description | |
|---|---|---|---|
| action* | Object | { "type": "userOutcome", "mergeOutcome": { "outcome": Number, amount: String |
null (null bedeutet Maximum) } } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden | |
| signature* | Object |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Question zusammenführen
X Yes-Anteile aus jedem Outcome, das derselben Question zugeordnet ist, zu X Quote-Tokens zusammenführen.
POST https://api.hyperliquid.xyz/exchange
Header
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Anfrage-Body
| Name | Type | Description | |
|---|---|---|---|
| action* | Object | { "type": "userOutcome", "mergeQuestion": { "question": Number, amount: String |
null (null bedeutet Maximum) } } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden | |
| signature* | Object |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Outcome negieren
Wandelt X No-Anteile eines Outcome, das mit einer Frage verknüpft ist, in X Yes-Anteile aller anderen Outcomes um, die mit der Frage verknüpft sind.
POST https://api.hyperliquid.xyz/exchange
Header
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Anfrage-Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "userOutcome", "negateOutcome": { "question": Number, "outcome": Number, amount: String } } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden |
| signature* | Object |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Abstimmung der Validatoren über den risikofreien Zinssatz für ein abgestimmtes Quote-Asset
POST https://api.hyperliquid.xyz/exchange
Header
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Anfrage-Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "validatorL1Stream", "riskFreeRate": String // e.g. "0.04" for 4% } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden |
| signature* | Object |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
AQAv2-Rolle autorisieren
POST https://api.hyperliquid.xyz/exchange
Header
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Anfrage-Body
| Name | Type | Description | |
|---|---|---|---|
| action* | Object | { "type": "authorizeAqav2Role", "token": number // e.g. 0 for USDC, "role": "technical" |
"treasury" } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden | |
| signature* | Object |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}
Belohnungen beanspruchen
POST https://api.hyperliquid.xyz/exchange
Header
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Anfrage-Body
| Name | Type | Description |
|---|---|---|
| action* | Object | { "type": "claimRewards" } |
| nonce* | Number | Es wird empfohlen, den aktuellen Zeitstempel in Millisekunden zu verwenden |
| signature* | Object |
{% tabs %}
{'status': 'ok', 'response': {'type': 'default'}}
{% endtab %}