Skip to main content
POST
/
v1
/
hl
/
exchange
curl --request POST \
--url https://api.hypereth.io/v1/hl/exchange \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '{
"action": {
"type": "order",
"orders": [
{
"a": 0,
"b": true,
"p": "43250.0",
"s": "0.1",
"r": false,
"t": {
"limit": {
"tif": "Gtc"
}
}
}
]
},
"nonce": 1681923833000,
"signature": {
"r": "0x1234...",
"s": "0xfedc...",
"v": 27
}
}'
{
  "status": "<string>",
  "response": {}
}

Authorizations

Authorization
string
header
required

Hyperliquid uses a custom signing scheme for authentication.

Required for: All /exchange endpoints

Format: Signature generated using private key + nonce + action data

Headers:

  • Authorization: Signature
  • Content-Type: application/json

Important Notes:

  • Use official SDKs to avoid signing errors
  • Nonce must be current timestamp in milliseconds
  • Address fields must be lowercase
  • Order of fields in msgpack serialization matters

Common Pitfalls:

  • Not understanding the two signing schemes
  • Trailing zeros on numbers
  • Case sensitivity on addresses
  • Incorrect field ordering

Body

application/json

Any valid Hyperliquid exchange request payload. The entire request body is forwarded to Hyperliquid without modification.

action
object
required

The specific exchange action to perform

nonce
integer
required

Current timestamp in milliseconds

signature
object
required

Cryptographic signature for authentication

vaultAddress
string

Optional vault address for subaccount operations

Response

Successful response from Hyperliquid RPC. The exact response format depends on the action type.

status
string

Operation status

response
object

Action-specific response data