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 mids for all coins

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

Note that if the book is empty, the last trade price will be used as a fallback

Headers

NameTypeDescription
Content-Type*String”application/json”

Request Body

NameTypeDescription
type*String”allMids”
dexStringPerp dex name. Defaults to the empty string which represents the first perp dex. Spot mids are only included with the first perp dex..

Response:

1{
2 "APE": "4.33245",
3 "ARB": "1.21695"
4}

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]

Retrieve a user’s fills

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

Returns at most 2000 most recent fills

Headers

NameTypeDescription
Content-Type*String”application/json”

Request Body

NameTypeDescription
type*String”userFills”
user*StringAddress in 42-character hexadecimal format; e.g. 0x0000000000000000000000000000000000000000.
aggregateByTimeboolWhen true, partial fills are combined when a crossing order gets filled by multiple different resting orders. Resting orders filled by multiple crossing orders will not be aggregated.

Response:

1[
2 // Perp fill
3 {
4 "closedPnl": "0.0",
5 "coin": "AVAX",
6 "crossed": false,
7 "dir": "Open Long",
8 "hash": "0xa166e3fa63c25663024b03f2e0da011a00307e4017465df020210d3d432e7cb8",
9 "oid": 90542681,
10 "px": "18.435",
11 "side": "B",
12 "startPosition": "26.86",
13 "sz": "93.53",
14 "time": 1681222254710,
15 "fee": "0.01", // the total fee, inclusive of builderFee below
16 "feeToken": "USDC",
17 "builderFee": "0.01", // this is optional and will not be present if 0
18 "tid": 118906512037719
19 },
20 // Spot fill - note the difference in the "coin" format. Refer to
21 // https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/asset-ids
22 // for more information on how spot asset IDs work
23 {
24 "coin": "@107",
25 "px": "18.62041381",
26 "sz": "43.84",
27 "side": "A",
28 "time": 1735969713869,
29 "startPosition": "10659.65434798",
30 "dir": "Sell",
31 "closedPnl": "8722.988077",
32 "hash": "0x2222138cc516e3fe746c0411dd733f02e60086f43205af2ae37c93f6a792430b",
33 "oid": 59071663721,
34 "crossed": true,
35 "fee": "0.304521",
36 "tid": 907359904431134,
37 "feeToken": "USDC"
38 }
39]

Retrieve a user’s fills by time

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

Returns at most 2000 fills per response and only the 10000 most recent fills are available

Headers

NameTypeDescription
Content-Type*String”application/json”

Request Body

NameTypeDescription
type*StringuserFillsByTime
user*StringAddress in 42-character hexadecimal format; e.g. 0x0000000000000000000000000000000000000000.
startTime*intStart time in milliseconds, inclusive
endTimeintEnd time in milliseconds, inclusive. Defaults to current time.
aggregateByTimeboolWhen true, partial fills are combined when a crossing order gets filled by multiple different resting orders. Resting orders filled by multiple crossing orders will not be aggregated.

Response:

1[
2 // Perp fill
3 {
4 "closedPnl": "0.0",
5 "coin": "AVAX",
6 "crossed": false,
7 "dir": "Open Long",
8 "hash": "0xa166e3fa63c25663024b03f2e0da011a00307e4017465df020210d3d432e7cb8",
9 "oid": 90542681,
10 "px": "18.435",
11 "side": "B",
12 "startPosition": "26.86",
13 "sz": "93.53",
14 "time": 1681222254710,
15 "fee": "0.01", // the total fee, inclusive of builderFee below
16 "feeToken": "USDC",
17 "builderFee": "0.01", // this is optional and will not be present if 0
18 "tid": 118906512037719
19 },
20 // Spot fill - note the difference in the "coin" format. Refer to
21 // https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/asset-ids
22 // for more information on how spot asset IDs work
23 {
24 "coin": "@107",
25 "px": "18.62041381",
26 "sz": "43.84",
27 "side": "A",
28 "time": 1735969713869,
29 "startPosition": "10659.65434798",
30 "dir": "Sell",
31 "closedPnl": "8722.988077",
32 "hash": "0x2222138cc516e3fe746c0411dd733f02e60086f43205af2ae37c93f6a792430b",
33 "oid": 59071663721,
34 "crossed": true,
35 "fee": "0.304521",
36 "tid": 907359904431134,
37 "feeToken": "USDC"
38 }
39]

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}

Query order status by oid or cloid

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

Request Body

NameTypeDescription
user*StringAddress in 42-character hexadecimal format; e.g. 0x0000000000000000000000000000000000000000.
type*String”orderStatus”
oid*uint64 or stringEither u64 representing the order id or 16-byte hex string representing the client order id

The <status> string returned has the following possible values:

Order statusExplanation
openPlaced successfully
filledFilled
canceledCanceled by user
triggeredTrigger order triggered
rejectedRejected at time of placement
marginCanceledCanceled because insufficient margin to fill
vaultWithdrawalCanceledVaults only. Canceled due to a user’s withdrawal from vault
openInterestCapCanceledCanceled due to order being too aggressive when open interest was at cap
selfTradeCanceledCanceled due to self-trade prevention
reduceOnlyCanceledCanceled reduced-only order that does not reduce position
siblingFilledCanceledTP/SL only. Canceled due to sibling ordering being filled
delistedCanceledCanceled due to asset delisting
liquidatedCanceledCanceled due to liquidation
scheduledCancelAPI only. Canceled due to exceeding scheduled cancel deadline (dead man’s switch)
tickRejectedRejected due to invalid tick price
minTradeNtlRejectedRejected due to order notional below minimum
perpMarginRejectedRejected due to insufficient margin
reduceOnlyRejectedRejected due to reduce only
badAloPxRejectedRejected due to post-only immediate match
iocCancelRejectedRejected due to IOC not able to match
badTriggerPxRejectedRejected due to invalid TP/SL price
marketOrderNoLiquidityRejectedRejected due to lack of liquidity for market order
positionIncreaseAtOpenInterestCapRejectedRejected due to open interest cap
positionFlipAtOpenInterestCapRejectedRejected due to open interest cap
tooAggressiveAtOpenInterestCapRejectedRejected due to price too aggressive at open interest cap
openInterestIncreaseRejectedRejected due to open interest cap
insufficientSpotBalanceRejectedRejected due to insufficient spot balance
oracleRejectedRejected due to price too far from oracle
perpMaxPositionRejectedRejected due to exceeding margin tier limit at current leverage

Response:

1{
2 "status": "order",
3 "order": {
4 "order": {
5 "coin": "ETH",
6 "side": "A",
7 "limitPx": "2412.7",
8 "sz": "0.0",
9 "oid": 1,
10 "timestamp": 1724361546645,
11 "triggerCondition": "N/A",
12 "isTrigger": false,
13 "triggerPx": "0.0",
14 "children": [],
15 "isPositionTpsl": false,
16 "reduceOnly": true,
17 "orderType": "Market",
18 "origSz": "0.0076",
19 "tif": "FrontendMarket",
20 "cloid": null
21 },
22 "status": <status>,
23 "statusTimestamp": 1724361546645
24 }
25}

Response (Missing Order):

1{
2 "status": "unknownOid"
3}

L2 book snapshot

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

Returns at most 20 levels per side

Headers

NameValue
Content-Type*“application/json”

Body

NameTypeDescription
type*String”l2Book”
coin*Stringcoin
nSigFigsNumberOptional field to aggregate levels to nSigFigs significant figures. Valid values are 2, 3, 4, 5, and null, which means full precision
mantissaNumberOptional field to aggregate levels. This field is only allowed if nSigFigs is 5. Accepts values of 1, 2 or 5.

Response:

1{
2 "coin": "BTC",
3 "time": 1754450974231,
4 "levels": [
5 [
6 {
7 "px": "113377.0",
8 "sz": "7.6699",
9 "n": 17 // number of levels
10 },
11 {
12 "px": "113376.0",
13 "sz": "4.13714",
14 "n": 8
15 },
16 ],
17 [
18 {
19 "px": "113397.0",
20 "sz": "0.11543",
21 "n": 3
22 }
23 ]
24 ]
25}

Candle snapshot

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

Only the most recent 5000 candles are available

Supported intervals: “1m”, “3m”, “5m”, “15m”, “30m”, “1h”, “2h”, “4h”, “8h”, “12h”, “1d”, “3d”, “1w”, “1M”

Headers

NameValue
Content-Type*“application/json”

Body

NameTypeDescription
type*String”candleSnapshot”
req*Object{“coin”: <coin>, “interval”: “15m”, “startTime”: <epoch millis>, “endTime”: <epoch millis>}

Response:

1[
2 {
3 "T": 1681924499999,
4 "c": "29258.0",
5 "h": "29309.0",
6 "i": "15m",
7 "l": "29250.0",
8 "n": 189,
9 "o": "29295.0",
10 "s": "BTC",
11 "t": 1681923600000,
12 "v": "0.98639"
13 }
14]

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 historical orders

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

Returns at most 2000 most recent historical orders

Headers

NameTypeDescription
Content-Type*String”application/json”

Request Body

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

Response:

1[
2 {
3 "order": {
4 "coin": "ETH",
5 "side": "A",
6 "limitPx": "2412.7",
7 "sz": "0.0",
8 "oid": 1,
9 "timestamp": 1724361546645,
10 "triggerCondition": "N/A",
11 "isTrigger": false,
12 "triggerPx": "0.0",
13 "children": [],
14 "isPositionTpsl": false,
15 "reduceOnly": true,
16 "orderType": "Market",
17 "origSz": "0.0076",
18 "tif": "FrontendMarket",
19 "cloid": null
20 },
21 "status": "filled" | "open" | "canceled" | "triggered" | "rejected" | "marginCanceled",
22 "statusTimestamp": 1724361546645
23 }
24]

Retrieve a user’s TWAP slice fills

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

Returns at most 2000 most recent TWAP slice fills

Headers

NameTypeDescription
Content-Type*String”application/json”

Request Body

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

Response:

1[
2 {
3 "fill": {
4 "closedPnl": "0.0",
5 "coin": "AVAX",
6 "crossed": true,
7 "dir": "Open Long",
8 "hash": "0x0000000000000000000000000000000000000000000000000000000000000000", // TWAP fills have a hash of 0
9 "oid": 90542681,
10 "px": "18.435",
11 "side": "B",
12 "startPosition": "26.86",
13 "sz": "93.53",
14 "time": 1681222254710,
15 "fee": "0.01",
16 "feeToken": "USDC",
17 "tid": 118906512037719
18 },
19 "twapId": 3156
20 }
21]

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 details for a vault

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

Headers

NameTypeDescription
Content-Type*String”application/json”

Request Body

NameTypeDescription
type*String”vaultDetails”
vaultAddress*StringAddress in 42-character hexadecimal format; e.g. 0x0000000000000000000000000000000000000000.
userStringAddress in 42-character hexadecimal format; e.g. 0x0000000000000000000000000000000000000000.

Response:

1{
2 "name": "Test",
3 "vaultAddress": "0xdfc24b077bc1425ad1dea75bcb6f8158e10df303",
4 "leader": "0x677d831aef5328190852e24f13c46cac05f984e7",
5 "description": "This community-owned vault provides liquidity to Hyperliquid through multiple market making strategies, performs liquidations, and accrues platform fees.",
6 "portfolio": [
7 [
8 "day",
9 {
10 "accountValueHistory": [
11 [
12 1734397526634,
13 "329265410.90790099"
14 ]
15 ],
16 "pnlHistory": [
17 [
18 1734397526634,
19 "0.0"
20 ],
21 ],
22 "vlm": "0.0"
23 }
24 ],
25 [
26 "week" | "month" | "allTime" | "perpDay" | "perpWeek" | "perpMonth" | "perpAllTime",
27 {...}
28 ]
29 ],
30 "apr": 0.36387129259090006,
31 "followerState": null,
32 "leaderFraction": 0.0007904828725729887,
33 "leaderCommission": 0,
34 "followers": [
35 {
36 "user": "0x005844b2ffb2e122cf4244be7dbcb4f84924907c",
37 "vaultEquity": "714491.71026243",
38 "pnl": "3203.43026143",
39 "allTimePnl": "79843.74476743",
40 "daysFollowing": 388,
41 "vaultEntryTime": 1700926145201,
42 "lockupUntil": 1734824439201
43 }
44 ],
45 "maxDistributable": 94856870.164485,
46 "maxWithdrawable": 742557.680863,
47 "isClosed": false,
48 "relationship": {
49 "type": "parent",
50 "data": {
51 "childAddresses": [
52 "0x010461c14e146ac35fe42271bdc1134ee31c703a",
53 "0x2e3d94f0562703b25c83308a05046ddaf9a8dd14",
54 "0x31ca8395cf837de08b24da3f660e77761dfb974b"
55 ]
56 }
57 },
58 "allowDeposits": true,
59 "alwaysCloseOnWithdraw": false
60}

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):

{"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"}

Query a user’s portfolio

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

Headers

NameTypeDescription
Content-Type*String”application/json”

Request Body

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

Response:

1[
2 [
3 "day",
4 {
5 "accountValueHistory": [
6 [
7 1741886630493,
8 "0.0"
9 ],
10 [
11 1741895270493,
12 "0.0"
13 ],
14 ...
15 ],
16 "pnlHistory": [
17 [
18 1741886630493,
19 "0.0"
20 ],
21 [
22 1741895270493,
23 "0.0"
24 ],
25 ...
26 ],
27 "vlm": "0.0"
28 }
29 ],
30 ["week", { ... }],
31 ["month", { ... }],
32 ["allTime", { ... }],
33 ["perpDay", { ... }],
34 ["perpWeek", { ... }],
35 ["perpMonth", { ... }],
36 ["perpAllTime", { ... }]
37]

Query a user’s referral information

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

Headers

NameTypeDescription
Content-Type*String”application/json”

Request Body

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

Response:

1{
2 "referredBy": {
3 "referrer": "0x5ac99df645f3414876c816caa18b2d234024b487",
4 "code": "TESTNET"
5 },
6 "cumVlm": "149428030.6628420055", // USDC Only
7 "unclaimedRewards": "11.047361", // USDC Only
8 "claimedRewards": "22.743781", // USDC Only
9 "builderRewards": "0.027802", // USDC Only
10 "tokenToState":[
11 0,
12 {
13 "cumVlm":"149428030.6628420055",
14 "unclaimedRewards":"11.047361",
15 "claimedRewards":"22.743781",
16 "builderRewards":"0.027802"
17 }
18 ],
19 "referrerState": {
20 "stage": "ready",
21 "data": {
22 "code": "TEST",
23 "referralStates": [
24 {
25 "cumVlm": "960652.017122",
26 "cumRewardedFeesSinceReferred": "196.838825",
27 "cumFeesRewardedToReferrer": "19.683748",
28 "timeJoined": 1679425029416,
29 "user": "0x11af2b93dcb3568b7bf2b6bd6182d260a9495728"
30 },
31 {
32 "cumVlm": "438278.672653",
33 "cumRewardedFeesSinceReferred": "97.628107",
34 "cumFeesRewardedToReferrer": "9.762562",
35 "timeJoined": 1679423947882,
36 "user": "0x3f69d170055913103a034a418953b8695e4e42fa"
37 }
38 ]
39 }
40 },
41 "rewardHistory": []
42}

Note that rewardHistory is for legacy rewards. Claimed rewards are now returned in nonFundingLedgerUpdate

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 staking history

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

Headers

NameTypeDescription
Content-Type*String”application/json”

Request Body

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

Response:

1[
2 {
3 "time": 1735380381353,
4 "hash": "0x55492465cb523f90815a041a226ba90147008d4b221a24ae8dc35a0dbede4ea4",
5 "delta": {
6 "delegate": {
7 "validator": "0x5ac99df645f3414876c816caa18b2d234024b487",
8 "amount": "10000.0",
9 "isUndelegate": false
10 }
11 }
12 },
13 ...
14]

Query a user’s staking rewards

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

Headers

NameTypeDescription
Content-Type*String”application/json”

Request Body

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

Response:

1[
2 {
3 "time": 1736726400073,
4 "source": "delegation",
5 "totalAmount": "0.73117184"
6 },
7 {
8 "time": 1736726400073,
9 "source": "commission",
10 "totalAmount": "130.76445876"
11 },
12 ...
13]

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