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.
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.
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.
POST https://hyperliquid-mainnet.g.alchemy.com/v2/${apiKey}/info
See a user's open orders
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description |
|---|---|---|
| type* | String | "openOrders" |
| user* | String | Address in 42-character hexadecimal format; e.g. 0x0000000000000000000000000000000000000000. |
| dex | String | 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:
[
{
"coin": "BTC",
"limitPx": "29792.0",
"oid": 91490942,
"side": "A",
"sz": "0.0",
"timestamp": 1681247412573
}
]POST https://hyperliquid-mainnet.g.alchemy.com/v2/${apiKey}/info
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description |
|---|---|---|
| type* | String | "frontendOpenOrders" |
| user* | String | Address in 42-character hexadecimal format; e.g. 0x0000000000000000000000000000000000000000. |
| dex | String | 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:
[
{
"coin": "BTC",
"isPositionTpsl": false,
"isTrigger": false,
"limitPx": "29792.0",
"oid": 91490942,
"orderType": "Limit",
"origSz": "5.0",
"reduceOnly": false,
"side": "A",
"sz": "5.0",
"timestamp": 1681247412573,
"triggerCondition": "N/A",
"triggerPx": "0.0",
}
]POST https://hyperliquid-mainnet.g.alchemy.com/v2/${apiKey}/info
Request Body
| Name | Type | Description |
|---|---|---|
| user | String | Address in 42-character hexadecimal format; e.g. 0x0000000000000000000000000000000000000000 |
| type | String | userRateLimit |
Response:
{
"cumVlm": "2854574.593578",
"nRequestsUsed": 2890,
"nRequestsCap": 2864574
}POST https://hyperliquid-mainnet.g.alchemy.com/v2/${apiKey}/info
Headers
| Name | Value |
|---|---|
| Content-Type* | "application/json" |
Body
| Name | Type | Description |
|---|---|---|
| type* | String | "maxBuilderFee" |
| user* | String | Address in 42-character hexadecimal format; e.g. 0x0000000000000000000000000000000000000000. |
| builder* | String | Address in 42-character hexadecimal format; e.g. 0x0000000000000000000000000000000000000000. |
Response:
1 // maximum fee approved in tenths of a basis point i.e. 1 means 0.001%POST https://hyperliquid-mainnet.g.alchemy.com/v2/${apiKey}/info
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description |
|---|---|---|
| type* | String | "subAccounts" |
| user* | String | Address in 42-character hexadecimal format; e.g. 0x0000000000000000000000000000000000000000. |
Response:
[
{
"name": "Test",
"subAccountUser": "0x035605fc2f24d65300227189025e90a0d947f16c",
"master": "0x8c967e73e6b15087c42a10d344cff4c96d877f1d",
"clearinghouseState": {
"marginSummary": {
"accountValue": "29.78001",
"totalNtlPos": "0.0",
"totalRawUsd": "29.78001",
"totalMarginUsed": "0.0"
},
"crossMarginSummary": {
"accountValue": "29.78001",
"totalNtlPos": "0.0",
"totalRawUsd": "29.78001",
"totalMarginUsed": "0.0"
},
"crossMaintenanceMarginUsed": "0.0",
"withdrawable": "29.78001",
"assetPositions": [],
"time": 1733968369395
},
"spotState": {
"balances": [
{
"coin": "USDC",
"token": 0,
"total": "0.22",
"hold": "0.0",
"entryNtl": "0.0"
}
]
}
}
]POST https://hyperliquid-mainnet.g.alchemy.com/v2/${apiKey}/info
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description |
|---|---|---|
| type* | String | "userVaultEquities" |
| user* | String | Address in 42-character hexadecimal format; e.g. 0x0000000000000000000000000000000000000000. |
Response:
[
{
"vaultAddress": "0xdfc24b077bc1425ad1dea75bcb6f8158e10df303",
"equity": "742500.082809",
}
]POST https://hyperliquid-mainnet.g.alchemy.com/v2/${apiKey}/info
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description |
|---|---|---|
| type* | String | "userRole" |
| user* | String | Address in 42-character hexadecimal format; e.g. 0x0000000000000000000000000000000000000000. |
Response (User):
{"role":"user"} # "missing", "user", "agent", "vault", or "subAccount"Response (Agent):
{"role":"agent", "data": {"user": "0x..."}}Response (Vault):
{"role":"vault"}Response (Subaccount):
{"role":"subAccount", "data":{"master":"0x..."}}Response (Missing):
{"role":"missing"}POST https://hyperliquid-mainnet.g.alchemy.com/v2/${apiKey}/info
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description |
|---|---|---|
| type* | String | "userFees" |
| user* | String | hexadecimal format; e.g. 0x0000000000000000000000000000000000000000. |
Response:
{
"dailyUserVlm": [
{
"date": "2025-05-23",
"userCross": "0.0",
"userAdd": "0.0",
"exchange": "2852367.0770729999"
},
...
],
"feeSchedule": {
"cross": "0.00045",
"add": "0.00015",
"spotCross": "0.0007",
"spotAdd": "0.0004",
"tiers": {
"vip": [
{
"ntlCutoff": "5000000.0",
"cross": "0.0004",
"add": "0.00012",
"spotCross": "0.0006",
"spotAdd": "0.0003"
},
...
],
"mm": [
{
"makerFractionCutoff": "0.005",
"add": "-0.00001"
},
...
]
},
"referralDiscount": "0.04",
"stakingDiscountTiers": [
{
"bpsOfMaxSupply": "0.0",
"discount": "0.0"
},
{
"bpsOfMaxSupply": "0.0001",
"discount": "0.05"
},
...
]
},
"userCrossRate": "0.000315",
"userAddRate": "0.000105",
"userSpotCrossRate": "0.00049",
"userSpotAddRate": "0.00028",
"activeReferralDiscount": "0.0",
"trial": null,
"feeTrialReward": "0.0",
"nextTrialAvailableTimestamp": null,
"stakingLink": {
"type": "tradingUser",
"stakingUser": "0x54c049d9c7d3c92c2462bf3d28e083f3d6805061"
},
"activeStakingDiscount": {
"bpsOfMaxSupply": "4.7577998927",
"discount": "0.3"
}
}POST https://hyperliquid-mainnet.g.alchemy.com/v2/${apiKey}/info
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description |
|---|---|---|
| type* | String | "delegations" |
| user* | String | hexadecimal format; e.g. 0x0000000000000000000000000000000000000000. |
Response:
[
{
"validator":"0x5ac99df645f3414876c816caa18b2d234024b487",
"amount":"12060.16529862",
"lockedUntilTimestamp":1735466781353
},
...
]POST https://hyperliquid-mainnet.g.alchemy.com/v2/${apiKey}/info
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description |
|---|---|---|
| type* | String | "delegatorSummary" |
| user* | String | hexadecimal format; e.g. 0x0000000000000000000000000000000000000000. |
Response:
{
"delegated": "12060.16529862",
"undelegated": "0.0",
"totalPendingWithdrawal": "0.0",
"nPendingWithdrawals": 0
}POST https://hyperliquid-mainnet.g.alchemy.com/v2/${apiKey}/info
Headers
| Name | Type | Description |
|---|---|---|
| Content-Type* | String | "application/json" |
Request Body
| Name | Type | Description |
|---|---|---|
| type* | String | "userDexAbstraction" |
| user* | String | hexadecimal format; e.g. 0x0000000000000000000000000000000000000000. |
Response:
true