Страница переведена сообществом и носит справочный характер; актуальна английская версия.
Оригинал ↗

Конечная точка exchange

Конечная точка exchange используется для взаимодействия с цепочкой Hyperliquid и торговли на ней. См. Python SDK для кода генерации подписей для этих запросов.

Актив

Многие запросы принимают актив в качестве входного параметра. Для бессрочных контрактов (перпов) это индекс в поле universe, возвращаемом ответом meta. Для спотовых активов используйте 10000 + index, где index — соответствующий индекс в spotMeta.universe. Например, при отправке ордера на PURR/USDC следует использовать актив 10000, поскольку его индекс актива в спотовых метаданных равен 0.

Субаккаунты и хранилища

Субаккаунты и хранилища не имеют приватных ключей. Для выполнения действий от имени субаккаунта или хранилища подписывание должно выполняться мастер-аккаунтом, а поле vaultAddress должно быть установлено на адрес субаккаунта или хранилища. Это демонстрируется в примере basic_vault.py из Python SDK.

Expires After

Некоторые действия поддерживают необязательное поле expiresAfter — метку времени в миллисекундах, после которой действие будет отклонено. Действия, подписываемые пользователем, такие как Core USDC transfer, не поддерживают поле expiresAfter. Обратите внимание, что действия, отменённые из-за устаревшего поля expiresAfter, расходуют 5-кратный обычный лимит запросов, основанный на адресах.

Подробнее о том, как включать это поле при подписывании, см. в Python SDK.

Разместить ордер

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-битная hex-строка, например 0x1234567890abcdef1234567890abcdef

Заголовки

Название Тип Описание
Content-Type* String "application/json"

Тело запроса

Название Тип Описание
action* Object

{

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

"a": Number,

"b": Boolean,

"p": String,

"s": String,

"r": Boolean,

"t": {

"limit": {

"tif": "Alo"

"Ioc" "Gtc"

} или

"trigger": {

"isMarket": Boolean,

"triggerPx": String,

"tpsl": "tp"

"sl"

}

},

"c": Cloid (необязательно)

}],

"grouping": "na"

"normalTpsl" "positionTpsl",

"builder": Optional({"b": "address", "f": Number, "s": Optional([{"b": "address", "s": Number}])})

}

Значения ключей:
a — актив
b — isBuy
p — цена
s — размер
r — reduceOnly
t — тип
c — cloid (идентификатор клиентского ордера)

Значения ключей необязательного аргумента builder:
b — адрес, который должен получить дополнительную комиссию
f — размер комиссии в десятых долях базисного пункта; например, если f равно 10, с пользователя будет взиматься 1bp от номинала ордера, и эта сумма отправляется билдеру
s — необязательный список до 5 суб-билдеров, которые получают часть комиссии билдера. В каждом элементе b — адрес (это должен быть существующий пользователь), а s — доля комиссии билдера в единицах 0,001%; например, если s равно 50000, половина комиссии билдера отправляется на этот адрес. Доли должны быть положительными и в сумме составлять не более 100%. Остаток получает билдер

nonce* Number Рекомендуется использовать текущую метку времени в миллисекундах
signature* Object
vaultAddress String Если торговля ведётся от имени хранилища или субаккаунта — его адрес onchain в 42-символьном шестнадцатеричном формате; например, 0x0000000000000000000000000000000000000000
expiresAfter Number Метка времени в миллисекундах

{% tabs %}

{
   "status":"ok",
   "response":{
      "type":"order",
      "data":{
         "statuses":[
            {
               "resting":{
                  "oid":77738308
               }
            }
         ]
      }
   }
}

{% endtab %}

{% tab title="200: OK Ответ с ошибкой" %}

{
   "status":"ok",
   "response":{
      "type":"order",
      "data":{
         "statuses":[
            {
               "error":"Order must have minimum value of $10."
            }
         ]
      }
   }
}

{% endtab %}

{% tab title="200: OK Успешный ответ (исполнен)" %}

{
   "status":"ok",
   "response":{
      "type":"order",
      "data":{
         "statuses":[
            {
               "filled":{
                  "totalSz":"0.02",
                  "avgPx":"1891.4",
                  "oid":77747314
               }
            }
         ]
      }
   }
}

{% endtab %}

Отмена ордера(ов)

POST https://api.hyperliquid.xyz/exchange

Заголовки

Название Тип Описание
Content-Type* String "application/json"

Тело запроса

Название Тип Описание
action* Object

{

"type": "cancel",

"cancels": [

{

"a": Number,

"o": Number

}

],

"f": Boolean // fast

}

Значения ключей:
a — актив
o — oid (идентификатор ордера)

nonce* Number Рекомендуется использовать текущую метку времени в миллисекундах
signature* Object
vaultAddress String Если торговля ведётся от имени хранилища или субаккаунта — его адрес в 42-символьном шестнадцатеричном формате; например, 0x0000000000000000000000000000000000000000
expiresAfter Number Метка времени в миллисекундах

{% tabs %}

{
   "status":"ok",
   "response":{
      "type":"cancel",
      "data":{
         "statuses":[
            "success"
         ]
      }
   }
}

{% endtab %}

{% tab title="200: OK Ответ с ошибкой" %}

{
   "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.

Обратите внимание, что f должен быть пропущен, если он равен false, т.е. действия, захешированные с f: false, будут отклонены.

Отмена ордера(ов) по cloid

POST https://api.hyperliquid.xyz/exchange

Заголовки

Название Тип Описание
Content-Type* String "application/json"

Тело запроса

Название Тип Описание
action* Object

{

"type": "cancelByCloid",

"cancels": [

{

"asset": Number,

"cloid": String

}

],

"f": Boolean // fast

}

nonce* Number Рекомендуется использовать текущую метку времени в миллисекундах
signature* Object
vaultAddress String Если торговля ведётся от имени хранилища или субаккаунта — его адрес в 42-символьном шестнадцатеричном формате; например, 0x0000000000000000000000000000000000000000
expiresAfter Number Метка времени в миллисекундах

{% tabs %}

{% endtab %}

{% tab title="200: OK Ответ с ошибкой" %}

{% endtab %}

Запланированная отмена (dead man's switch)

POST https://api.hyperliquid.xyz/exchange

Заголовки

Название Тип Описание
Content-Type* String "application/json"

Тело запроса

Название Тип Описание
action* Object

{

"type": "scheduleCancel",

"time": number (необязательно)

}

nonce* Number Рекомендуется использовать текущую метку времени в миллисекундах
signature* Object
vaultAddress String Если торговля ведётся от имени хранилища или субаккаунта — его адрес в 42-символьном шестнадцатеричном формате; например, 0x0000000000000000000000000000000000000000
expiresAfter Number Метка времени в миллисекундах

Планирует операцию отмены всех ордеров на будущее время. Если time не указано, запланированная операция отмены будет удалена. Время должно быть минимум на 5 секунд позже текущего. Когда наступит время, все открытые ордера будут отменены, а счётчик триггеров увеличится. Максимальное число триггеров в сутки — 10. Счётчик триггеров сбрасывается в 00:00 UTC.

Изменить ордер

POST https://api.hyperliquid.xyz/exchange

Заголовки

Название Тип Описание
Content-Type* String "application/json"

Тело запроса

Название Тип Описание
action* Object

{

"type": "modify",

"oid": Number

Cloid,

"order": {

"a": Number,

"b": Boolean,

"p": String,

"s": String,

"r": Boolean,

"t": {

"limit": {

"tif": "Alo"

"Ioc" "Gtc"

} или

"trigger": {

"isMarket": Boolean,

"triggerPx": String,

"tpsl": "tp"

"sl"

}

},

"c": Cloid (необязательно)

},

"a": Boolean // always_place

}

Значения ключей:
a — актив
b — isBuy
p — цена
s — размер
r — reduceOnly
t — тип
c — cloid (идентификатор клиентского ордера)

nonce* Number Рекомендуется использовать текущую метку времени в миллисекундах
signature* Object
vaultAddress String Если торговля ведётся от имени хранилища или субаккаунта — его адрес onchain в 42-символьном шестнадцатеричном формате; например, 0x0000000000000000000000000000000000000000
expiresAfter Number Метка времени в миллисекундах

{% tabs %}

{% endtab %}

{% tab title="200: OK Ответ с ошибкой" %}

{% endtab %}

Как одиночные, так и пакетные действия изменения включают необязательный флаг always_place, кодируемый как a в действии. При always_place = true новый ордер будет размещён независимо от того, была ли успешной отмена. При always_place = false новый ордер должен быть не триггерным и должен иметь TIF = ALO либо быть неисполнимым ордером с TIF = GTC. В последнем случае TIF нового ордера переопределяется на ALO.

Обратите внимание, что a должен быть пропущен, если он равен false, т.е. действия, захешированные с a: false, будут отклонены.

Изменить несколько ордеров

POST https://api.hyperliquid.xyz/exchange

Заголовки

Название Тип Описание
Content-Type* String "application/json"

Тело запроса

Название Тип Описание
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"

} или

"trigger": {

"isMarket": Boolean,

"triggerPx": String,

"tpsl": "tp"

"sl"

}

},

"c": Cloid (необязательно)

}

}],

"a": Boolean // always_place

}

Значения ключей:
a — актив
b — isBuy
p — цена
s — размер
r — reduceOnly
t — тип
c — cloid (идентификатор клиентского ордера)

nonce* Number Рекомендуется использовать текущую метку времени в миллисекундах
signature* Object
vaultAddress String Если торговля ведётся от имени хранилища или субаккаунта — его адрес onchain в 42-символьном шестнадцатеричном формате; например, 0x0000000000000000000000000000000000000000
expiresAfter Number Метка времени в миллисекундах

Обновить кредитное плечо

POST https://api.hyperliquid.xyz/exchange

Обновляет кросс- или изолированное кредитное плечо по монете.

Заголовки

Название Тип Описание
Content-Type* String "application/json"

Тело запроса

Название Тип Описание
action* Object

{

"type": "updateLeverage",

"asset": индекс монеты,

"isCross": true или false при обновлении кросс-плеча,

"leverage": целое число, задающее новое кредитное плечо, с учётом ограничений по плечу для этой монеты

}

nonce* Number Рекомендуется использовать текущую метку времени в миллисекундах
signature* Object
vaultAddress String Если торговля ведётся от имени хранилища или субаккаунта — его адрес onchain в 42-символьном шестнадцатеричном формате; например, 0x0000000000000000000000000000000000000000
expiresAfter Number Метка времени в миллисекундах

{% tabs %}

{'status': 'ok', 'response': {'type': 'default'}}

{% endtab %}

Обновить изолированную маржу

POST https://api.hyperliquid.xyz/exchange

Добавить или удалить маржу из изолированной позиции.

Обратите внимание, что для установки целевого кредитного плеча вместо изменения маржи на значение в USDC существует альтернативное действие {"type": "topUpIsolatedOnlyMargin", "asset": <asset>, "leverage": <float string>}

Заголовки

Название Тип Описание
Content-Type* String "application/json"

Тело запроса

Название Тип Описание
action* Object

{

"type": "updateIsolatedMargin",

"asset": индекс монеты,

"isBuy": true, (этот параметр не будет иметь эффекта, пока не будет введён режим хеджирования),

"ntli": целое число, задающее сумму для добавления или удаления с 6 десятичными знаками; например, 1000000 для 1 usd,

}

nonce* Number Рекомендуется использовать текущую метку времени в миллисекундах
signature* Object
vaultAddress String Если торговля ведётся от имени хранилища или субаккаунта — его адрес onchain в 42-символьном шестнадцатеричном формате; например, 0x0000000000000000000000000000000000000000
expiresAfter Number Метка времени в миллисекундах

{% tabs %}

{'status': 'ok', 'response': {'type': 'default'}}

{% endtab %}

Send Asset

POST https://api.hyperliquid.xyz/exchange

Этот обобщённый метод используется для перевода токенов между различными перп-DEX'ами, спотовым балансом, пользователями и/или субаккаунтами. Используйте "" для указания перп-DEX по умолчанию (USDC) и "spot" для указания спота. Только токен обеспечения может быть переведён в перп-DEX или из него.

Заголовки

Название Значение
Content-Type* application/json

Тело

Название Тип Описание
action* Object

{

"type": "sendAsset",

"hyperliquidChain": "Mainnet" (в тестовой сети используйте вместо этого "Testnet"),

"signatureChainId": id цепочки, используемой при подписывании, в шестнадцатеричном формате; например, "0xa4b1" для Arbitrum,

"destination": адрес в 42-символьном шестнадцатеричном формате; например, 0x0000000000000000000000000000000000000000,

"sourceDex": название перп-DEX, с которого выполняется перевод,

"destinationDex": название перп-DEX, на который выполняется перевод,

"token": tokenName:tokenId; например, "PURR:0xc4bf3f870c0e9465323c0b6ed28096c2",

"amount": количество токена для отправки в виде строки; например, "0.01",

"fromSubAccount": адрес в 42-символьном шестнадцатеричном формате или пустая строка, если не из субаккаунта,

"nonce": текущая метка времени в миллисекундах в виде Number, должна совпадать с nonce

}

nonce* Number Рекомендуется использовать текущую метку времени в миллисекундах; она должна совпадать с nonce в объекте action выше
signature* Object

Ответ

{% tabs %}

{'status': 'ok', 'response': {'type': 'default'}}

{% endtab %}

Agent Send Asset

POST https://api.hyperliquid.xyz/exchange

Аналогично send asset, но может быть подписано агентом. Адрес назначения должен совпадать с адресом источника. Используйте "" для указания перп-DEX по умолчанию (USDC) и "spot" для указания спота. Только токен обеспечения может быть переведён в перп-DEX или из него.

Заголовки

Название Значение
Content-Type* application/json

Тело

Название Тип Описание
action* Object

{

"type": "agentSendAsset",

"destination": адрес в 42-символьном шестнадцатеричном формате; например, 0x0000000000000000000000000000000000000000,

"sourceDex": название перп-DEX, с которого выполняется перевод,

"destinationDex": название перп-DEX, на который выполняется перевод,

"token": tokenName:tokenId; например, "PURR:0xc4bf3f870c0e9465323c0b6ed28096c2",

"amount": количество токена для отправки в виде строки; например, "0.01",

"fromSubAccount": адрес в 42-символьном шестнадцатеричном формате или пустая строка, если не из субаккаунта,

"nonce": текущая метка времени в миллисекундах в виде Number, должна совпадать с nonce

}

nonce* Number Рекомендуется использовать текущую метку времени в миллисекундах; она должна совпадать с nonce в объекте action выше
signature* Object

Ответ

{% tabs %}

{'status': 'ok', 'response': {'type': 'default'}}

{% endtab %}

Отправка в EVM с данными

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;
}

Заголовки

Название Значение
Content-Type* application/json

Тело

Название Тип Описание
action* Object

{

"type": "sendToEvmWithData",

"hyperliquidChain": "Mainnet" (в тестовой сети используйте вместо этого "Testnet"),

"signatureChainId": id цепочки, используемой при подписывании, в шестнадцатеричном формате; например, "0xa4b1" для Arbitrum,

"token": tokenName:tokenId; например, "PURR:0xc4bf3f870c0e9465323c0b6ed28096c2",

"amount": количество токена для отправки в виде строки; например, "0.01",

"sourceDex": название перп-DEX, с которого выполняется перевод,

"destinationRecipient": адрес в формате addressEncoding,

"addressEncoding": "hex"

"base58",

"destinationChainId": число,

"gasLimit": число,

"data": bytes,

"nonce": текущая метка времени в миллисекундах в виде Number, должна совпадать с nonce

}

nonce* Number Рекомендуется использовать текущую метку времени в миллисекундах; она должна совпадать с nonce в объекте action выше
signature* Object

Ответ

{% tabs %}

{'status': 'ok', 'response': {'type': 'default'}}

{% endtab %}

Перевод USDC в Core

POST https://api.hyperliquid.xyz/exchange

Отправить usd на другой адрес. Этот перевод не затрагивает EVM-мост. Формат подписи удобочитаем для кошельковых интерфейсов.

Заголовки

Название Тип Описание
Content-Type* String "application/json"

Тело запроса

Название Тип Описание
action* Object

{

"type": "usdSend",

"hyperliquidChain": "Mainnet" (в тестовой сети используйте вместо этого "Testnet"),
"signatureChainId": id цепочки, используемой при подписывании, в шестнадцатеричном формате; например, "0xa4b1" для Arbitrum,

"destination": адрес в 42-символьном шестнадцатеричном формате; например, 0x0000000000000000000000000000000000000000,

"amount": количество usd для отправки в виде строки; например, "1" для 1 usd,

"time": текущая метка времени в миллисекундах в виде Number, должна совпадать с nonce

}

nonce* Number Рекомендуется использовать текущую метку времени в миллисекундах
signature* Object

{% tabs %}

{'status': 'ok', 'response': {'type': 'default'}}

{% endtab %}

Спотовый перевод в Core

POST https://api.hyperliquid.xyz/exchange

Отправить спотовые активы на другой адрес. Этот перевод не затрагивает EVM-мост. Формат подписи удобочитаем для кошельковых интерфейсов.

Заголовки

Название Тип Описание
Content-Type* String "application/json"

Тело запроса

Название Тип Описание
action* Object

{

"type": "spotSend",

"hyperliquidChain": "Mainnet" (в тестовой сети используйте вместо этого "Testnet"),
"signatureChainId": id цепочки, используемой при подписывании, в шестнадцатеричном формате; например, "0xa4b1" для Arbitrum,

"destination": адрес в 42-символьном шестнадцатеричном формате; например, 0x0000000000000000000000000000000000000000,
"token": tokenName:tokenId; например, "PURR:0xc4bf3f870c0e9465323c0b6ed28096c2",

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

Инициировать запрос на вывод

POST https://api.hyperliquid.xyz/exchange

Этот метод используется для запуска процесса вывода. После выполнения этого запроса валидаторы L1 подпишут и отправят запрос на вывод в контракт моста. На момент написания комиссия за вывод составляет $1, а завершение вывода занимает примерно 5 минут.

Заголовки

Название Тип Описание
Content-Type* String "application/json"

Тело запроса

Название Тип Описание
action* Object

{
"type": "withdraw3",

"hyperliquidChain": "Mainnet" (в тестовой сети используйте вместо этого "Testnet"),
"signatureChainId": id цепочки, используемой при подписывании, в шестнадцатеричном формате; например, "0xa4b1" для Arbitrum,

"amount": количество usd для отправки в виде строки; например, "1" для 1 usd,

"time": текущая метка времени в миллисекундах в виде Number, должна совпадать с nonce,

"destination": адрес в 42-символьном шестнадцатеричном формате; например, 0x0000000000000000000000000000000000000000

}

nonce* Number Рекомендуется использовать текущую метку времени в миллисекундах; она должна совпадать с nonce в объекте action выше
signature* Object

{% tabs %}

{'status': 'ok', 'response': {'type': 'default'}}

{% endtab %}

Перевод со спотового аккаунта на перп-аккаунт (и наоборот)

POST https://api.hyperliquid.xyz/exchange

Этот метод используется для перевода USDC со спотового кошелька пользователя на перп-кошелёк и наоборот.

Заголовки

Название Значение
Content-Type* "application/json"

Тело

НазваниеТипОписание
action*Object

{

"type": "usdClassTransfer",

"hyperliquidChain": "Mainnet" (в тестовой сети используйте вместо этого "Testnet"),
"signatureChainId": id цепочки, используемой при подписывании, в шестнадцатеричном формате; например, "0xa4b1" для Arbitrum,

"amount": количество usd для перевода в виде строки; например, "1" для 1 usd. Если вы хотите использовать это действие для субаккаунта, можно указать subaccount: адрес после amount, например, "1" subaccount:0x0000000000000000000000000000000000000000,

"toPerp": true, если (спот -> перп), иначе false,

"nonce": текущая метка времени в миллисекундах в виде Number, должна совпадать с nonce во внешнем теле запроса

}

nonce*NumberРекомендуется использовать текущую метку времени в миллисекундах; она должна совпадать с nonce в объекте action выше
signature*Object

Ответ

{% tabs %}

{'status': 'ok', 'response': {'type': 'default'}}

{% endtab %}

Внести в стейкинг

POST https://api.hyperliquid.xyz/exchange

Этот метод используется для перевода нативного токена со спотового аккаунта пользователя в стейкинг для делегирования валидаторам.

Заголовки

Название Значение
Content-Type* application/json

Тело

Название Тип Описание
action* Object

{

"type": "cDeposit",

"hyperliquidChain": "Mainnet" (в тестовой сети используйте вместо этого "Testnet"),
"signatureChainId": id цепочки, используемой при подписывании, в шестнадцатеричном формате; например, "0xa4b1" для Arbitrum,

"wei": количество wei для перевода в виде числа,

"nonce": текущая метка времени в миллисекундах в виде Number, должна совпадать с nonce во внешнем теле запроса

}

nonce* Number Рекомендуется использовать текущую метку времени в миллисекундах; она должна совпадать с nonce в объекте action выше
signature* Object

Ответ

{% tabs %}

{'status': 'ok', 'response': {'type': 'default'}}

{% endtab %}

Внести в стейкинг (агент)

POST https://api.hyperliquid.xyz/exchange

Аналогично внесению в стейкинг, но может быть подписано агентом.

Заголовки

Название Значение
Content-Type* application/json

Тело

Название Тип Описание
action* Object

{

"type": "cDeposit2",

"wei": количество wei для перевода в виде числа

}

nonce* Number Рекомендуется использовать текущую метку времени в миллисекундах
signature* Object
expiresAfter Number Метка времени в миллисекундах

Ответ

{% tabs %}

{'status': 'ok', 'response': {'type': 'default'}}

{% endtab %}

Вывести из стейкинга

POST https://api.hyperliquid.xyz/exchange

Этот метод используется для перевода нативного токена из стейкинга на спотовый аккаунт пользователя. Обратите внимание, что переводы из стейкинга на спотовый аккаунт проходят через 7-дневную очередь вывода из стейкинга.

Заголовки

Название Значение
Content-Type* application/json

Тело

Название Тип Описание
action* Object

{

"type": "cWithdraw",

"hyperliquidChain": "Mainnet" (в тестовой сети используйте вместо этого "Testnet"),
"signatureChainId": id цепочки, используемой при подписывании, в шестнадцатеричном формате; например, "0xa4b1" для Arbitrum,

"wei": количество wei для перевода в виде числа,

"nonce": текущая метка времени в миллисекундах в виде Number, должна совпадать с nonce во внешнем теле запроса

}

nonce* Number Рекомендуется использовать текущую метку времени в миллисекундах; она должна совпадать с nonce в объекте action выше
signature* Object

Ответ

{% tabs %}

{'status': 'ok', 'response': {'type': 'default'}}

{% endtab %}

Делегировать или вывести стейк у валидатора

POST https://api.hyperliquid.xyz/exchange

Делегировать нативные токены валидатору или вывести их. Обратите внимание, что делегирование конкретному валидатору имеет срок блокировки 1 день.

Заголовки

Название Значение
Content-Type* application/json

Тело

Название Тип Описание
action* Object

{

"type": "tokenDelegate",

"hyperliquidChain": "Mainnet" (в тестовой сети используйте вместо этого "Testnet"),
"signatureChainId": id цепочки, используемой при подписывании, в шестнадцатеричном формате; например, "0xa4b1" для Arbitrum,

"validator": адрес в 42-символьном шестнадцатеричном формате; например, 0x0000000000000000000000000000000000000000,
"isUndelegate": boolean,

"wei": число,

"nonce": текущая метка времени в миллисекундах в виде Number, должна совпадать с nonce во внешнем теле запроса

}

nonce* number Рекомендуется использовать текущую метку времени в миллисекундах
signature* Object

Ответ

{% tabs %}

{'status': 'ok', 'response': {'type': 'default'}}

{% endtab %}

Ввод или вывод средств из хранилища

POST https://api.hyperliquid.xyz/exchange

Добавить или удалить средства из хранилища.

Заголовки

Название Значение
Content-Type* application/json

Тело

Название Тип Описание
action* Object

{

"type": "vaultTransfer",

"vaultAddress": адрес в 42-символьном шестнадцатеричном формате; например, 0x0000000000000000000000000000000000000000,
"isDeposit": boolean,

"usd": число

}

nonce* number Рекомендуется использовать текущую метку времени в миллисекундах
signature* Object
expiresAfter Number Метка времени в миллисекундах

Ответ

{% tabs %}

{'status': 'ok', 'response': {'type': 'default'}}

{% endtab %}

Ввод или вывод средств из backstop-ликвидатора HIP-3 DEX

POST https://api.hyperliquid.xyz/exchange

Добавить или удалить средства с адреса backstop-ликвидатора HIP-3. ntl — целое число в единицах 1e-6 котируемого актива. Сумма должна быть кратна 1000 котируемого актива (т.е. ntl % 1000000000 == 0).

Вывести можно только основную сумму, но не pnl.

Заголовки

Название Значение
Content-Type* application/json

Тело

Название Тип Описание
action* Object

{

"type": "hip3LiquidatorTransfer",

"dex": string (например, "xyz"),

"ntl": число,
"isDeposit": boolean

}

nonce* number Рекомендуется использовать текущую метку времени в миллисекундах
signature* Object
expiresAfter Number Метка времени в миллисекундах

Ответ

{% tabs %}

{'status': 'ok', 'response': {'type': 'default'}}

{% endtab %}

Одобрить API-кошелёк

POST https://api.hyperliquid.xyz/exchange

Одобряет API-кошелёк (иногда также называемый Agent Wallet). Подробнее см. здесь.

Заголовки

Название Значение
Content-Type* application/json

Тело

Название Тип Описание
action* Object

{
"type": "approveAgent",

"hyperliquidChain": "Mainnet" (в тестовой сети используйте вместо этого "Testnet"),
"signatureChainId": id цепочки, используемой при подписывании, в шестнадцатеричном формате; например, "0xa4b1" для Arbitrum,

"agentAddress": адрес в 42-символьном шестнадцатеричном формате; например, 0x0000000000000000000000000000000000000000,

"agentName": необязательное имя для API-кошелька. Аккаунт может иметь 1 неодобренный по имени кошелёк без имени и до 3 именованных. Дополнительно разрешены 2 именованных агента на каждый субаккаунт. Пользовательский срок действия можно задать, добавив valid_until {timestamp} после имени. Срок действия может быть максимум на 180 дней в будущем,

"nonce": текущая метка времени в миллисекундах в виде Number, должна совпадать с nonce во внешнем теле запроса

}

nonce* number Рекомендуется использовать текущую метку времени в миллисекундах
signature* Object

Ответ

{% tabs %}

{'status': 'ok', 'response': {'type': 'default'}}

{% endtab %}

Одобрить комиссию билдера

POST https://api.hyperliquid.xyz/exchange

Одобрить максимальную ставку комиссии для билдера.

Заголовки

Название Значение
Content-Type* application/json

Тело

Название Тип Описание
action* Object

{
"type": "approveBuilderFee",

"hyperliquidChain": "Mainnet" (в тестовой сети используйте вместо этого "Testnet"),
"signatureChainId": id цепочки, используемой при подписывании, в шестнадцатеричном формате; например, "0xa4b1" для Arbitrum,

"maxFeeRate": максимально допустимая ставка комиссии билдера в виде строки с процентами; например, "0.001%",

"builder": адрес в 42-символьном шестнадцатеричном формате; например, 0x0000000000000000000000000000000000000000,

"nonce": текущая метка времени в миллисекундах в виде Number, должна совпадать с nonce во внешнем теле запроса

}

nonce* number Рекомендуется использовать текущую метку времени в миллисекундах
signature* Object

Ответ

{% tabs %}

{'status': 'ok', 'response': {'type': 'default'}}

{% endtab %}

Разместить TWAP-ордер

POST https://api.hyperliquid.xyz/exchange

Заголовки

Название Тип Описание
Content-Type* String "application/json"

Тело запроса

Название Тип Описание
action* Object

{

"type": "twapOrder",
"twap": {

"a": Number,

"b": Boolean,

"s": String,

"r": Boolean,

"m": Number,

"t": Boolean

}

}

Значения ключей:
a — актив
b — isBuy
s — размер
r — reduceOnly

m — минуты
t — randomize

nonce* Number Рекомендуется использовать текущую метку времени в миллисекундах
signature* Object
vaultAddress String Если торговля ведётся от имени хранилища или субаккаунта — его адрес onchain в 42-символьном шестнадцатеричном формате; например, 0x0000000000000000000000000000000000000000
expiresAfter Number Метка времени в миллисекундах

{% tabs %}

{
   "status":"ok",
   "response":{
      "type":"twapOrder",
      "data":{
         "status": {
            "running":{
               "twapId":77738308
            }
         }
      }
   }
}

{% endtab %}

{% tab title="200: OK Ответ с ошибкой" %}

{
   "status":"ok",
   "response":{
      "type":"twapOrder",
      "data":{
         "status": {
            "error":"Invalid TWAP duration: 1 min(s)"
         }
      }
   }
}

{% endtab %}

Отменить TWAP-ордер

POST https://api.hyperliquid.xyz/exchange

Заголовки

Название Тип Описание
Content-Type* String "application/json"

Тело запроса

Название Тип Описание
action* Object

{

"type": "twapCancel",

"a": Number,

"t": Number

}

Значения ключей:
a — актив
t — twap_id

nonce* Number Рекомендуется использовать текущую метку времени в миллисекундах
signature* Object
vaultAddress String Если торговля ведётся от имени хранилища или субаккаунта — его адрес в 42-символьном шестнадцатеричном формате; например, 0x0000000000000000000000000000000000000000
expiresAfter Number Метка времени в миллисекундах

{% tabs %}

{
   "status":"ok",
   "response":{
      "type":"twapCancel",
      "data":{
         "status": "success"
      }
   }
}

{% endtab %}

{% tab title="200: OK Ответ с ошибкой" %}

{
   "status":"ok",
   "response":{
      "type":"twapCancel",
      "data":{
         "status": {
            "error": "TWAP was never placed, already canceled, or filled."
         }
      }
   }
}

{% endtab %}

Разместить трейлинг-стоп ордер

POST https://api.hyperliquid.xyz/exchange

Заголовки

Название Тип Описание
Content-Type* String "application/json"

Тело запроса

Название Тип Описание
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-символьном шестнадцатеричном формате; например, 0x0000000000000000000000000000000000000000
expiresAfter Number Метка времени в миллисекундах

{% tabs %}

{
   "status":"ok",
   "response":{
      "type":"trailingStop",
      "data":{
         "oid":77738308
      }
   }
}

{% endtab %}

Резервирование дополнительных действий

POST https://api.hyperliquid.xyz/exchange

Вместо увеличения основанных на адресе лимитов запросов путём торговли, это действие позволяет резервировать дополнительные действия за 0.0005 USDC за запрос. Стоимость списывается с перп-баланса.

destination может быть задан, чтобы оплатить за другого пользователя L1. Пользователь назначения должен уже существовать. Это поле пропускается при хешировании, если оно не задано.

Заголовки

Название Тип Описание
Content-Type* String "application/json"

Тело запроса

Название Тип Описание
action* Object

{

"type": "reserveRequestWeight",

"weight": Number,

"destination": Address

null

}

nonce* Number Рекомендуется использовать текущую метку времени в миллисекундах
signature* Object
expiresAfter Number Метка времени в миллисекундах

{% tabs %}

{'status': 'ok', 'response': {'type': 'default'}}

{% endtab %}

Аннулировать ожидающий nonce (noop)

POST https://api.hyperliquid.xyz/exchange

Это действие ничего не делает (no operation), но приводит к отметке nonce как использованного. Это может быть более эффективным способом отменить ордера в обработке, чем действие отмены.

Заголовки

Название Тип Описание
Content-Type* String "application/json"

Тело запроса

Название Тип Описание
action* Object

{

"type": "noop"

}

nonce* Number Рекомендуется использовать текущую метку времени в миллисекундах
signature* Object
expiresAfter Number Метка времени в миллисекундах

{% tabs %}

{'status': 'ok', 'response': {'type': 'default'}}

{% endtab %}

Включить абстракцию HIP-3 DEX

POST https://api.hyperliquid.xyz/exchange

ПРИМЕЧАНИЕ: устарело. Предпочтительнее использовать userSetAbstraction.

Если установлено, действия с перпами HIP-3 будут автоматически переводить обеспечение с перп-баланса USDC, управляемого валидаторами, для HIP-3 DEX'ов, где USDC является токеном обеспечения, а иначе со спота. Когда абстракция HIP-3 DEX активна, обеспечение при высвобождении из позиций или открытых ордеров возвращается в тот же источник (перп-баланс USDC, управляемый валидаторами, или спотовый баланс).

Заголовки

Название Тип Описание
Content-Type* String "application/json"

Тело запроса

НазваниеТипОписание
action*Object

{

"type": "userDexAbstraction",

"hyperliquidChain": "Mainnet" (в тестовой сети используйте вместо этого "Testnet"),

"signatureChainId": id цепочки, используемой при подписывании, в шестнадцатеричном формате; например, "0xa4b1" для Arbitrum,

"user": адрес в 42-символьном шестнадцатеричном формате. Может быть субаккаунтом пользователя,

"enabled": boolean,

"nonce": текущая метка времени в миллисекундах в виде Number, должна совпадать с nonce

}

nonce*NumberРекомендуется использовать текущую метку времени в миллисекундах
signature*Object

{% tabs %}

{'status': 'ok', 'response': {'type': 'default'}}

{% endtab %}

Включить абстракцию HIP-3 DEX (агент)

ПРИМЕЧАНИЕ: устарело. Предпочтительнее использовать agentSetAbstraction.

Тот же эффект, что и у UserDexAbstraction выше, но работает только при установке значения с null на true.

Заголовки

Название Тип Описание
Content-Type* String "application/json"

Тело запроса

Название Тип Описание
action* Object

{

"type": "agentEnableDexAbstraction"

}

nonce* Number Рекомендуется использовать текущую метку времени в миллисекундах
signature* Object

{% tabs %}

{'status': 'ok', 'response': {'type': 'default'}}

{% endtab %}

Установить пользовательскую абстракцию

POST https://api.hyperliquid.xyz/exchange

Заголовки

Название Тип Описание
Content-Type* String "application/json"

Тело запроса

Название Тип Описание
action* Object

{

"type": "userSetAbstraction",

"hyperliquidChain": "Mainnet" (в тестовой сети используйте вместо этого "Testnet"),

"signatureChainId": id цепочки, используемой при подписывании, в шестнадцатеричном формате; например, "0xa4b1" для Arbitrum,

"user": адрес в 42-символьном шестнадцатеричном формате. Может быть субаккаунтом пользователя,

"abstraction": одна из строк ["disabled", "unifiedAccount", "portfolioMargin"],

"nonce": текущая метка времени в миллисекундах в виде Number, должна совпадать с nonce

}

nonce* Number Рекомендуется использовать текущую метку времени в миллисекундах
signature* Object

{% tabs %}

{'status': 'ok', 'response': {'type': 'default'}}

{% endtab %}

Установить пользовательскую абстракцию (агент)

POST https://api.hyperliquid.xyz/exchange

Заголовки

Название Тип Описание
Content-Type* String "application/json"

Тело запроса

Название Тип Описание
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

Заголовки

Название Тип Описание
Content-Type* String "application/json"

Тело запроса

Название Тип Описание
action* Object

{

"type": "userOutcome",

"splitOutcome": { "outcome": Number, amount: String (например, "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

Заголовки

Название Тип Описание
Content-Type* String "application/json"

Тело запроса

Название Тип Описание
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

Заголовки

Название Тип Описание
Content-Type* String "application/json"

Тело запроса

Название Тип Описание
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

Заголовки

Название Тип Описание
Content-Type* String "application/json"

Тело запроса

Название Тип Описание
action* Object

{

"type": "userOutcome",

"negateOutcome": { "question": Number, "outcome": Number, amount: String }

}

nonce* Number Рекомендуется использовать текущую метку времени в миллисекундах
signature* Object

{% tabs %}

{'status': 'ok', 'response': {'type': 'default'}}

{% endtab %}

Голосование валидатора по безрисковой ставке для выровненного котируемого актива

POST https://api.hyperliquid.xyz/exchange

Заголовки

Название Тип Описание
Content-Type* String "application/json"

Тело запроса

Название Тип Описание
action* Object

{

"type": "validatorL1Stream",

"riskFreeRate": String // например, "0.04" для 4%

}

nonce* Number Рекомендуется использовать текущую метку времени в миллисекундах
signature* Object

{% tabs %}

{'status': 'ok', 'response': {'type': 'default'}}

{% endtab %}

Авторизовать роль AQAv2

POST https://api.hyperliquid.xyz/exchange

Заголовки

Название Тип Описание
Content-Type* String "application/json"

Тело запроса

Название Тип Описание
action* Object

{

"type": "authorizeAqav2Role",

"token": number // например, 0 для USDC,

"role": "technical"

"treasury"

}

nonce* Number Рекомендуется использовать текущую метку времени в миллисекундах
signature* Object

{% tabs %}

{'status': 'ok', 'response': {'type': 'default'}}

{% endtab %}

Получить вознаграждения

POST https://api.hyperliquid.xyz/exchange

Заголовки

Название Тип Описание
Content-Type* String "application/json"

Тело запроса

Название Тип Описание
action* Object

{

"type": "claimRewards"

}

nonce* Number Рекомендуется использовать текущую метку времени в миллисекундах
signature* Object

{% tabs %}

{'status': 'ok', 'response': {'type': 'default'}}

{% endtab %}

Официальный источник: https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/exchange-endpoint
Дата снимка: · Дата сборки: · Перевод сообщества; приоритет у английской версии
Неофициальный перевод сообщества. Права на контент принадлежат Hyperliquid; актуальна английская версия. Источник: https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/exchange-endpoint