POST
/
v1
/
perps
/
hyperliquid
/
orders
Place Order
curl --request POST \
  --url https://api.example.com/v1/perps/hyperliquid/orders \
  --header 'Content-Type: application/json' \
  --data '
{
  "symbol": "<string>",
  "side": "<string>",
  "type": "<string>",
  "size": "<string>",
  "price": "<string>",
  "triggerPrice": "<string>",
  "reduceOnly": true,
  "wallet": "<string>",
  "signature": "<string>",
  "nonce": 123
}
'
{
  "orderId": "<string>",
  "status": "<string>",
  "symbol": "<string>",
  "side": "<string>",
  "type": "<string>",
  "size": "<string>",
  "filledSize": "<string>",
  "avgPrice": "<string>"
}

Upstream Mapping

This endpoint maps to Hyperliquid’s POST /exchange with an order action type. The Provider API normalizes the order format and handles EIP-712 signing delegation.
Market orders on Hyperliquid must use FrontendMarket TIF. The Provider API handles this automatically — you do not need to specify TIF.

Request

provider
string
required
Must be hyperliquid

Body Parameters

symbol
string
required
Market symbol (e.g., BTC, ETH)
side
string
required
Order side: buy or sell
type
string
required
Order type: market, limit, stop_market, stop_limit
size
string
required
Order size in base asset (e.g., "0.1" for 0.1 BTC)
price
string
Limit price. Required for limit and stop_limit orders.
triggerPrice
string
Trigger price. Required for stop_market and stop_limit orders.
reduceOnly
boolean
If true, the order can only reduce an existing position. Defaults to false.
wallet
string
required
Your main wallet address (the one that approved the agent).
signature
string
required
EIP-712 signature from the approved agent wallet.
nonce
number
required
Timestamp nonce in milliseconds. Must be unique and recent.

Response

orderId
string
Unique order identifier
status
string
Order status: open, filled, partially_filled, canceled
symbol
string
Market symbol
side
string
Order side
type
string
Order type
size
string
Ordered size
filledSize
string
Amount filled so far
avgPrice
string
Average fill price (if any fills)

Example

curl -X POST \
  -H "X-API-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  https://api.perps.studio/v1/perps/hyperliquid/orders \
  -d '{
    "symbol": "ETH",
    "side": "buy",
    "type": "limit",
    "size": "1.0",
    "price": "3200.00",
    "wallet": "0x1234567890abcdef1234567890abcdef12345678",
    "signature": "0xabcdef...",
    "nonce": 1712000000000
  }'
Example Response
{
  "orderId": "9876543210",
  "status": "open",
  "symbol": "ETH",
  "side": "buy",
  "type": "limit",
  "size": "1.0",
  "price": "3200.00",
  "filledSize": "0",
  "avgPrice": null
}

Errors

StatusCodeDescription
400INVALID_ORDERInvalid order parameters
400INVALID_PARAMSMissing required fields
401INVALID_API_KEYMissing or invalid API key
401SIGNATURE_ERRORInvalid EIP-712 signature
422INSUFFICIENT_MARGINNot enough collateral
422ORDER_REJECTEDExchange rejected the order
422PRICE_TOO_FARLimit price too far from mark
422SIZE_TOO_SMALLBelow minimum order size
422MAX_LEVERAGE_EXCEEDEDLeverage too high
422TOO_MANY_ORDERSMax open orders reached
429RATE_LIMITEDRate limit exceeded