๐Ÿ”Œ API & Developers

Hyperliquid subAccounts Info Endpoint: List Subaccount Addresses (Python Example)

โš ๏ธ Disclosure: Some links on this page are affiliate links. If you sign up through them, I may earn a commission โ€” at no extra cost to you. I only review tools I actually use.
To list subaccount addresses and account state with the Hyperliquid API, send a POST request to https://api.hyperliquid.xyz/info with type set to "subAccounts" and user set to the account address you want to query.

The request is documented in the Hyperliquid info endpoint reference.

Request

Use the following HTTP request:

{
  "type": "subAccounts",
  "user": "0x0000000000000000000000000000000000000000"
}

The user field must be a 42-character hexadecimal address. The documentation notes that you should pass the actual address of the master or sub-account you are querying. A common pitfall is using an agent wallet address, which can lead to an empty result.

Response shape

The endpoint returns an array. Each item represents a subaccount and includes the fields shown in the documentation example:

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

๐Ÿ’ก Hyperliquid

Like what you're reading? Try it yourself โ€” this link supports ChartedTrader at no cost to you.

Sign up on Hyperliquid โ†’
๐ŸŽ You receive: 4% fee discount on first $25M volume ยท per account, lifetime

Field reference

FieldType in exampleMeaning in the documented response
nameStringSubaccount name shown in the example, such as "Test".
subAccountUserString42-character hexadecimal address of the subaccount.
masterString42-character hexadecimal address of the associated master account.
clearinghouseStateObjectPerpetuals/clearinghouse account state for the subaccount.
clearinghouseState.marginSummaryObjectContains accountValue, totalNtlPos, totalRawUsd, and totalMarginUsed.
clearinghouseState.crossMarginSummaryObjectContains accountValue, totalNtlPos, totalRawUsd, and totalMarginUsed.
clearinghouseState.crossMaintenanceMarginUsedStringValue shown in the documented example.
clearinghouseState.withdrawableStringValue shown in the documented example.
clearinghouseState.assetPositionsArrayPosition array; empty in the documented example.
clearinghouseState.timeNumberTimestamp shown in the documented example.
spotStateObjectSpot account state for the subaccount.
spotState.balancesArraySpot balance entries.
spotState.balances[].coinStringSpot coin or asset identifier, such as "USDC".
spotState.balances[].tokenNumberToken index shown in the documented example.
spotState.balances[].totalStringTotal balance value shown in the documented example.
spotState.balances[].holdStringHeld amount shown in the documented example.
spotState.balances[].entryNtlStringEntry notional value shown in the documented example.

Python example

This reference example uses a normal HTTP POST request to the documented endpoint. It is not a live-account test.

import requests


def list_subaccounts(user_address: str) -> list[dict]:
    response = requests.post(
        "https://api.hyperliquid.xyz/info",
        json={
            "type": "subAccounts",
            "user": user_address,
        },
        headers={"Content-Type": "application/json"},
        timeout=10,
    )
    response.raise_for_status()
    return response.json()


## Example:
## subaccounts = list_subaccounts("0x0000000000000000000000000000000000000000")
## for item in subaccounts:
##     print(item["name"], item["subAccountUser"], item["master"])

Troubleshooting notes

Create a Hyperliquid account

Sign up on Hyperliquid

This is an affiliate link. If you sign up, we may receive a commission. The referral page lists a 4% fee discount for the first $25M of volume per account; Vaults and sub-accounts are excluded.

Continue with Hyperliquid

Browse the Hyperliquid guide hub for the complete user journey.

๐Ÿงฎ Free Hyperliquid calculators

Fee Calculator โ†’
Hyperliquid vs centralized exchange fee comparison
PnL & Liquidation โ†’
Perp PnL + liquidation price
Position Size โ†’
Risk-aware position sizing for HL perps
Hyperliquid

Ready to get started? Use the link below โ€” it helps support ChartedTrader at no cost to you.

Sign up on Hyperliquid โ†’
๐ŸŽ You receive: 4% fee discount on first $25M volume ยท per account, lifetime
๐Ÿ“ˆ

About the author

I'm a systematic trader running live strategies on IB (USDJPY momentum) and Hyperliquid (crypto perps). Every tool reviewed here is something I've used with real capital. Questions? Reach out.

๐Ÿ“š Related Articles

๐Ÿ”Œ
API & Developers

Hyperliquid userRole Info Endpoint: Request, Response Objects, and Python Example

Use the Hyperliquid info endpoint's userRole type to identify whether an address is a user, agent, vault, sub-account, or missing, and inspect the returned data fields.

November 12, 2026 โฑ 2 min read
๐Ÿ”Œ
API & Developers

Hyperliquid scheduleCancel API: Dead Man's Switch for Cancel-All Orders

How Hyperliquid's scheduleCancel action schedules a future cancel-all of open orders, with daily trigger limits, request fields, and the difference from expiresAfter.

November 11, 2026 โฑ 3 min read
๐Ÿ”ง
Troubleshooting & Fixes

Hyperliquid Python SDK: Checksummed Address Signature Rejections in vault_usd_transfer (2026)

A reported Hyperliquid Python SDK issue: checksummed addresses in vault_usd_transfer and sub-account transfers can cause signature rejection; use lowercase addresses.

November 15, 2026 โฑ 3 min read