Info endpoint

Pagination

Responses that take a time range will only return 500 elements or distinct blocks of data. To query larger ranges, use the last returned timestamp as the next startTime for pagination.

Perpetuals vs Spot

The endpoints in this section work for both Perpetuals and Spot. For perpetuals coin is the name returned in the meta response. For Spot, coin should be PURR/USDC for PURR, and @{index} e.g. @1 for all other spot tokens where index is the index of the spot pair in the universe field of the spotMeta response. For example, the spot index for HYPE on mainnet is @107 because the token index of HYPE is 150 and the spot pair @107 has tokens [150, 0]. Note that some assets may be remapped on user interfaces. For example, BTC/USDC on app.hyperliquid.xyz corresponds to UBTC/USDC on mainnet HyperCore. The L1 name on the hyperliquid token details page can be used to detect remappings.

User address

To query the account data associated with a master or sub-account, you must pass in the actual address of that account. A common pitfall is to use an agent wallet’s address which leads to an empty result.

Retrieve a user’s open orders

POST https://hyperliquid-mainnet.g.alchemy.com/v2/${apiKey}/info

See a user’s open orders

Headers

NameTypeDescription
Content-Type*String”application/json”

Request Body

NameTypeDescription
type*String”openOrders”
user*StringAddress in 42-character hexadecimal format; e.g. 0x0000000000000000000000000000000000000000.
dexStringPerp 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:

1[
2 {
3 "coin": "BTC",
4 "limitPx": "29792.0",
5 "oid": 91490942,
6 "side": "A",
7 "sz": "0.0",
8 "timestamp": 1681247412573
9 }
10]

Retrieve a user’s open orders with additional frontend info

POST https://hyperliquid-mainnet.g.alchemy.com/v2/${apiKey}/info

Headers

NameTypeDescription
Content-Type*String”application/json”

Request Body

NameTypeDescription
type*String”frontendOpenOrders”
user*StringAddress in 42-character hexadecimal format; e.g. 0x0000000000000000000000000000000000000000.
dexStringPerp 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:

1[
2 {
3 "coin": "BTC",
4 "isPositionTpsl": false,
5 "isTrigger": false,
6 "limitPx": "29792.0",
7 "oid": 91490942,
8 "orderType": "Limit",
9 "origSz": "5.0",
10 "reduceOnly": false,
11 "side": "A",
12 "sz": "5.0",
13 "timestamp": 1681247412573,
14 "triggerCondition": "N/A",
15 "triggerPx": "0.0",
16 }
17]

Query user rate limits

POST https://hyperliquid-mainnet.g.alchemy.com/v2/${apiKey}/info

Request Body

NameTypeDescription
userStringAddress in 42-character hexadecimal format; e.g. 0x0000000000000000000000000000000000000000
typeStringuserRateLimit

Response:

1{
2 "cumVlm": "2854574.593578",
3 "nRequestsUsed": 2890,
4 "nRequestsCap": 2864574
5}

Check builder fee approval

POST https://hyperliquid-mainnet.g.alchemy.com/v2/${apiKey}/info

Headers

NameValue
Content-Type*“application/json”

Body

NameTypeDescription
type*String”maxBuilderFee”
user*StringAddress in 42-character hexadecimal format; e.g. 0x0000000000000000000000000000000000000000.
builder*StringAddress in 42-character hexadecimal format; e.g. 0x0000000000000000000000000000000000000000.

Response:

11 // maximum fee approved in tenths of a basis point i.e. 1 means 0.001%

Retrieve a user’s subaccounts

POST https://hyperliquid-mainnet.g.alchemy.com/v2/${apiKey}/info

Headers

NameTypeDescription
Content-Type*String”application/json”

Request Body

NameTypeDescription
type*String”subAccounts”
user*StringAddress in 42-character hexadecimal format; e.g. 0x0000000000000000000000000000000000000000.

Response:

1[
2 {
3 "name": "Test",
4 "subAccountUser": "0x035605fc2f24d65300227189025e90a0d947f16c",
5 "master": "0x8c967e73e6b15087c42a10d344cff4c96d877f1d",
6 "clearinghouseState": {
7 "marginSummary": {
8 "accountValue": "29.78001",
9 "totalNtlPos": "0.0",
10 "totalRawUsd": "29.78001",
11 "totalMarginUsed": "0.0"
12 },
13 "crossMarginSummary": {
14 "accountValue": "29.78001",
15 "totalNtlPos": "0.0",
16 "totalRawUsd": "29.78001",
17 "totalMarginUsed": "0.0"
18 },
19 "crossMaintenanceMarginUsed": "0.0",
20 "withdrawable": "29.78001",
21 "assetPositions": [],
22 "time": 1733968369395
23 },
24 "spotState": {
25 "balances": [
26 {
27 "coin": "USDC",
28 "token": 0,
29 "total": "0.22",
30 "hold": "0.0",
31 "entryNtl": "0.0"
32 }
33 ]
34 }
35 }
36]

Retrieve a user’s vault deposits

POST https://hyperliquid-mainnet.g.alchemy.com/v2/${apiKey}/info

Headers

NameTypeDescription
Content-Type*String”application/json”

Request Body

NameTypeDescription
type*String”userVaultEquities”
user*StringAddress in 42-character hexadecimal format; e.g. 0x0000000000000000000000000000000000000000.

Response:

1[
2 {
3 "vaultAddress": "0xdfc24b077bc1425ad1dea75bcb6f8158e10df303",
4 "equity": "742500.082809",
5 }
6]

Query a user’s role

POST https://hyperliquid-mainnet.g.alchemy.com/v2/${apiKey}/info

Headers

NameTypeDescription
Content-Type*String”application/json”

Request Body

NameTypeDescription
type*String”userRole”
user*StringAddress in 42-character hexadecimal format; e.g. 0x0000000000000000000000000000000000000000.

Response (User):

1{"role":"user"} # "missing", "user", "agent", "vault", or "subAccount"

Response (Agent):

1{"role":"agent", "data": {"user": "0x..."}}

Response (Vault):

1{"role":"vault"}

Response (Subaccount):

1{"role":"subAccount", "data":{"master":"0x..."}}

Response (Missing):

1{"role":"missing"}

Query a user’s fees

POST https://hyperliquid-mainnet.g.alchemy.com/v2/${apiKey}/info

Headers

NameTypeDescription
Content-Type*String”application/json”

Request Body

NameTypeDescription
type*String”userFees”
user*Stringhexadecimal format; e.g. 0x0000000000000000000000000000000000000000.

Response:

1{
2 "dailyUserVlm": [
3 {
4 "date": "2025-05-23",
5 "userCross": "0.0",
6 "userAdd": "0.0",
7 "exchange": "2852367.0770729999"
8 },
9 ...
10 ],
11 "feeSchedule": {
12 "cross": "0.00045",
13 "add": "0.00015",
14 "spotCross": "0.0007",
15 "spotAdd": "0.0004",
16 "tiers": {
17 "vip": [
18 {
19 "ntlCutoff": "5000000.0",
20 "cross": "0.0004",
21 "add": "0.00012",
22 "spotCross": "0.0006",
23 "spotAdd": "0.0003"
24 },
25 ...
26 ],
27 "mm": [
28 {
29 "makerFractionCutoff": "0.005",
30 "add": "-0.00001"
31 },
32 ...
33 ]
34 },
35 "referralDiscount": "0.04",
36 "stakingDiscountTiers": [
37 {
38 "bpsOfMaxSupply": "0.0",
39 "discount": "0.0"
40 },
41 {
42 "bpsOfMaxSupply": "0.0001",
43 "discount": "0.05"
44 },
45 ...
46 ]
47 },
48 "userCrossRate": "0.000315",
49 "userAddRate": "0.000105",
50 "userSpotCrossRate": "0.00049",
51 "userSpotAddRate": "0.00028",
52 "activeReferralDiscount": "0.0",
53 "trial": null,
54 "feeTrialReward": "0.0",
55 "nextTrialAvailableTimestamp": null,
56 "stakingLink": {
57 "type": "tradingUser",
58 "stakingUser": "0x54c049d9c7d3c92c2462bf3d28e083f3d6805061"
59 },
60 "activeStakingDiscount": {
61 "bpsOfMaxSupply": "4.7577998927",
62 "discount": "0.3"
63 }
64}

Query a user’s staking delegations

POST https://hyperliquid-mainnet.g.alchemy.com/v2/${apiKey}/info

Headers

NameTypeDescription
Content-Type*String”application/json”

Request Body

NameTypeDescription
type*String”delegations”
user*Stringhexadecimal format; e.g. 0x0000000000000000000000000000000000000000.

Response:

1[
2 {
3 "validator":"0x5ac99df645f3414876c816caa18b2d234024b487",
4 "amount":"12060.16529862",
5 "lockedUntilTimestamp":1735466781353
6 },
7 ...
8]

Query a user’s staking summary

POST https://hyperliquid-mainnet.g.alchemy.com/v2/${apiKey}/info

Headers

NameTypeDescription
Content-Type*String”application/json”

Request Body

NameTypeDescription
type*String”delegatorSummary”
user*Stringhexadecimal format; e.g. 0x0000000000000000000000000000000000000000.

Response:

1{
2 "delegated": "12060.16529862",
3 "undelegated": "0.0",
4 "totalPendingWithdrawal": "0.0",
5 "nPendingWithdrawals": 0
6}

Query a user’s HIP-3 DEX abstraction state

POST https://hyperliquid-mainnet.g.alchemy.com/v2/${apiKey}/info

Headers

NameTypeDescription
Content-Type*String”application/json”

Request Body

NameTypeDescription
type*String”userDexAbstraction”
user*Stringhexadecimal format; e.g. 0x0000000000000000000000000000000000000000.

Response:

1true