info (openOrders)
curl --request POST \
--url https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info \
--header 'Content-Type: application/json' \
--data '
{
"type": "openOrders",
"user": "0x31ca8395cf837de08b24da3f660e77761dfb974b",
"dex": ""
}
'import requests
url = "https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info"
payload = {
"type": "openOrders",
"user": "0x31ca8395cf837de08b24da3f660e77761dfb974b",
"dex": ""
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
type: 'openOrders',
user: '0x31ca8395cf837de08b24da3f660e77761dfb974b',
dex: ''
})
};
fetch('https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'type' => 'openOrders',
'user' => '0x31ca8395cf837de08b24da3f660e77761dfb974b',
'dex' => ''
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info"
payload := strings.NewReader("{\n \"type\": \"openOrders\",\n \"user\": \"0x31ca8395cf837de08b24da3f660e77761dfb974b\",\n \"dex\": \"\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"openOrders\",\n \"user\": \"0x31ca8395cf837de08b24da3f660e77761dfb974b\",\n \"dex\": \"\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"type\": \"openOrders\",\n \"user\": \"0x31ca8395cf837de08b24da3f660e77761dfb974b\",\n \"dex\": \"\"\n}"
response = http.request(request)
puts response.read_body[
{
"coin": "<string>",
"limitPx": "<string>",
"oid": 123,
"side": "<string>",
"sz": "<string>",
"timestamp": 123
}
]Hyperliquid node API
openOrders | Hyperliquid info
The info endpoint with type: “openOrders” retrieves a user’s open orders for both perpetuals and spot trading on the Hyperliquid exchange.
POST
/
4f8d8f4040bdacd1577bff8058438274
/
info
info (openOrders)
curl --request POST \
--url https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info \
--header 'Content-Type: application/json' \
--data '
{
"type": "openOrders",
"user": "0x31ca8395cf837de08b24da3f660e77761dfb974b",
"dex": ""
}
'import requests
url = "https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info"
payload = {
"type": "openOrders",
"user": "0x31ca8395cf837de08b24da3f660e77761dfb974b",
"dex": ""
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
type: 'openOrders',
user: '0x31ca8395cf837de08b24da3f660e77761dfb974b',
dex: ''
})
};
fetch('https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'type' => 'openOrders',
'user' => '0x31ca8395cf837de08b24da3f660e77761dfb974b',
'dex' => ''
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info"
payload := strings.NewReader("{\n \"type\": \"openOrders\",\n \"user\": \"0x31ca8395cf837de08b24da3f660e77761dfb974b\",\n \"dex\": \"\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"openOrders\",\n \"user\": \"0x31ca8395cf837de08b24da3f660e77761dfb974b\",\n \"dex\": \"\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"type\": \"openOrders\",\n \"user\": \"0x31ca8395cf837de08b24da3f660e77761dfb974b\",\n \"dex\": \"\"\n}"
response = http.request(request)
puts response.read_body[
{
"coin": "<string>",
"limitPx": "<string>",
"oid": 123,
"side": "<string>",
"sz": "<string>",
"timestamp": 123
}
]This method is available on Chainstack. Not all Hyperliquid methods are available on Chainstack, as the open-source node implementation does not support them yet — see Hyperliquid methods for the full availability breakdown.
info endpoint with type: "openOrders" retrieves a user’s open orders for both perpetuals and spot trading on the Hyperliquid exchange. This endpoint provides essential information about all pending orders that have not yet been filled or canceled.
Get your own node endpoint todayStart for free and get your app to production levels immediately. No credit card required.You can sign up with your GitHub, X, Google, or Microsoft account.
Parameters
Request body
type(string, required) — The request type. Must be"openOrders"to retrieve user’s open orders.user(string, required) — Address in 42-character hexadecimal format (e.g.,0x31ca8395cf837de08b24da3f660e77761dfb974b).dex(string, optional) — Perp dex name. Defaults to the empty string which represents the first perp dex. Spot open orders are only included with the first perp dex.
Response
The response is an array of open order objects, each containing:Order fields
coin(string) — Trading pair or asset symbol:- For perpetuals: Asset name (e.g., “BTC”, “ETH”)
- For spot: Token symbol or index format (e.g., “PURR/USDC”, “@107”)
limitPx(string) — Limit price of the order in string format for precisionoid(integer) — Order ID, a unique identifier for the orderside(string) — Order side:"A"— Ask (sell order)"B"— Bid (buy order)
sz(string) — Remaining size of the order (unfilled amount)timestamp(integer) — Order creation timestamp in milliseconds
Order side interpretation
- “A” (Ask): Sell order - user wants to sell the asset at the specified price
- “B” (Bid): Buy order - user wants to buy the asset at the specified price
Asset naming conventions
- Perpetuals: Use simple asset names like “BTC”, “ETH”
- Spot: Use either pair format like “PURR/USDC” or index format like “@107”
Example request
curl -X POST \
-H "Content-Type: application/json" \
-d '{"type": "openOrders", "user": "0x31ca8395cf837de08b24da3f660e77761dfb974b"}' \
https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info
from hyperliquid.info import Info
info = Info("YOUR_CHAINSTACK_ENDPOINT", skip_ws=True)
open_orders = info.open_orders("0x31ca8395cf837de08b24da3f660e77761dfb974b")
print(open_orders)
import { HttpTransport, InfoClient } from "@nktkas/hyperliquid";
const transport = new HttpTransport({ apiUrl: "YOUR_CHAINSTACK_ENDPOINT" });
const info = new InfoClient({ transport });
const openOrders = await info.openOrders({
user: "0x31ca8395cf837de08b24da3f660e77761dfb974b",
});
console.log(openOrders);
Use your own endpoint in your code. The code examples use a placeholder Chainstack endpoint (YOUR_CHAINSTACK_ENDPOINT) — replace it with your own Hyperliquid node endpoint from the Chainstack console. The curl above uses a shared public endpoint for quick checks only; do not use it in production.
Example response
[
{
"coin": "BTC",
"limitPx": "29792.0",
"oid": 91490942,
"side": "A",
"sz": "0.0",
"timestamp": 1681247412573
}
]
Use case
Theinfo endpoint with type: "openOrders" is essential for trading applications that need to:
- Display user’s current open orders in a trading interface
- Calculate total order exposure and risk management
- Implement order management features (cancel, modify)
- Show pending orders across both perpetuals and spot markets
- Track order status and remaining unfilled quantities
- Build comprehensive trading dashboards
- Monitor liquidity provision through open limit orders
- Implement automated trading strategies that need order awareness
Body
application/json
Request type to retrieve user's open orders
Available options:
openOrders Address in 42-character hexadecimal format
Perp dex name. Defaults to empty string which represents the first perp dex. Spot open orders are only included with the first perp dex
Response
200 - application/json
Array of user's open orders
Trading pair or asset symbol (e.g., 'BTC', 'ETH', '@107' for spot)
Limit price of the order
Order ID - unique identifier for the order
Order side: 'A' for ask (sell), 'B' for bid (buy)
Remaining size of the order (unfilled amount)
Order creation timestamp in milliseconds
Last modified on June 24, 2026
Was this page helpful?