Diese Seite ist eine Community-Übersetzung und dient nur zur Orientierung; maßgeblich ist die englische Originalversion.
Englisches Original ↗

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

Name Type Description
Content-Type* String "application/json"

Anfrage-Body

Name Type Description
action* Object

{

"type": "order",
"orders": [{

"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}])})

}

Bedeutung der Schlüssel:
a ist asset
b ist isBuy
p ist price
s ist size
r ist reduceOnly
t ist type
c ist cloid (Client-Order-ID)

Bedeutung der Schlüssel im optionalen builder-Argument:
b ist die Adresse, die die zusätzliche Gebühr erhalten soll
f ist die Höhe der Gebühr in Zehnteln eines Basispunkts, z. B. wenn f 10 ist, wird 1bp des Order-Notionals dem Nutzer berechnet und an den Builder gesendet
s ist eine optionale Liste von bis zu 5 Sub-Buildern, die einen Teil der Builder-Gebühr erhalten. In jedem Eintrag ist b die Adresse, die ein bestehender Nutzer sein muss, und s ist der Anteil an der Builder-Gebühr in Einheiten von 0.001%, z. B. wenn s 50000 ist, wird die Hälfte der Builder-Gebühr an diese Adresse gesendet. Die Anteile müssen positiv sein und sich auf höchstens 100% summieren. Der Builder erhält den Restbetrag

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

}

Bedeutung der Schlüssel:
a ist asset
o ist oid (Order-ID)

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

}

Bedeutung der Schlüssel:
a ist asset
b ist isBuy
p ist price
s ist size
r ist reduceOnly
t ist type
c ist cloid (Client-Order-ID)

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

}

Bedeutung der Schlüssel:
a ist asset
b ist isBuy
p ist price
s ist size
r ist reduceOnly
t ist type
c ist cloid (client order id)

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),
"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,

"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"),
"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,
"token": tokenName:tokenId; z. B. "PURR:0xc4bf3f870c0e9465323c0b6ed28096c2",

"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

{
"type": "withdraw3",

"hyperliquidChain": "Mainnet" (im Testnet verwenden Sie stattdessen "Testnet"),
"signatureChainId": die ID der beim Signieren verwendeten Chain im Hexadezimalformat; z. B. "0xa4b1" für Arbitrum,

"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

NameTypeDescription
action*Object

{

"type": "usdClassTransfer",

"hyperliquidChain": "Mainnet" (im Testnet verwenden Sie stattdessen "Testnet"),
"signatureChainId": die ID der beim Signieren verwendeten Chain im Hexadezimalformat; z. B. "0xa4b1" für Arbitrum,

"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*NumberEs 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"),
"signatureChainId": die ID der beim Signieren verwendeten Chain im Hexadezimalformat; z. B. "0xa4b1" für Arbitrum,

"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"),
"signatureChainId": die ID der beim Signieren verwendeten Chain im Hexadezimalformat; z. B. "0xa4b1" für Arbitrum,

"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"),
"signatureChainId": die ID der beim Signieren verwendeten Chain im Hexadezimalformat; z. B. "0xa4b1" für Arbitrum,

"validator": Adresse im 42-stelligen Hexadezimalformat; z. B. 0x0000000000000000000000000000000000000000,
"isUndelegate": boolean,

"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,
"isDeposit": boolean,

"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,
"isDeposit": boolean

}

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

{
"type": "approveAgent",

"hyperliquidChain": "Mainnet" (im Testnet verwenden Sie stattdessen "Testnet"),
"signatureChainId": die ID der beim Signieren verwendeten Chain im Hexadezimalformat; z. B. "0xa4b1" für Arbitrum,

"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 valid_until {timestamp} nach dem Namen angehängt wird. Die Ablaufzeit darf höchstens 180 Tage in der Zukunft liegen,

"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

{
"type": "approveBuilderFee",

"hyperliquidChain": "Mainnet" (im Testnet stattdessen "Testnet" verwenden),
"signatureChainId": die ID der beim Signieren verwendeten Chain im Hexadezimalformat; z. B. "0xa4b1" für Arbitrum,

"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",
"twap": {

"a": Number,

"b": Boolean,

"s": String,

"r": Boolean,

"m": Number,

"t": Boolean

}

}

Bedeutung der Schlüssel:
a ist asset
b ist isBuy
s ist size
r ist reduceOnly

m ist minutes
t ist randomize

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

}

Bedeutung der Schlüssel:
a ist asset
t ist twap_id

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

NameTypeDescription
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*NumberEs 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 %}

Offizielle Quelle: https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/exchange-endpoint
Quellstand: · Mirror erstellt: · Community-Übersetzung; die englische Fassung ist maßgeblich
Inoffizielle Community-Übersetzung der Hyperliquid-Dokumentation. Inhalte © Hyperliquid; maßgeblich ist die englische Version. Quelle: https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/exchange-endpoint