bullpen hyperliquid status¶
Last updated: July 13, 2026
Show account positions and balances
Usage¶
Live Help¶
Show account positions and balances
Usage: bullpen hyperliquid status [OPTIONS]
Options:
--address <ADDRESS>
Ethereum address to query (defaults to authenticated account)
--no-multi-wallet-warning
Suppress the table-mode warning shown when multiple EVM wallet accounts exist
--output <OUTPUT>
Output format for command results
[possible values: table, json]
--all-dexes
Query main plus every registered HIP-3 perp DEX
--env <ENV>
Target environment to connect to (overrides config.toml)
[env: BULLPEN_ENV=]
[possible values: staging, production]
--config <CONFIG>
Path to a custom config.toml file (overrides $BULLPEN_CONFIG and the default location).
Explicit --config and BULLPEN_CONFIG paths fail closed: if the file is missing, the CLI exits validation instead of silently loading defaults. Credentials still resolve via BULLPEN_HOME, so set BULLPEN_HOME too when isolating a session.
--read-only
Enable read-only mode: blocks all mutating commands
--non-interactive
Suppress interactive prompts; does NOT imply --yes for money-moving commands
[env: BULLPEN_NON_INTERACTIVE=]
-h, --help
Print help (see a summary with '-h')
EXAMPLES:
# Show Hyperliquid status for an address
bullpen hyperliquid status --address 0x1111111111111111111111111111111111111111
# Export Hyperliquid status as JSON
bullpen hyperliquid status --address 0x1111111111111111111111111111111111111111 --output json
# Export positions across main plus registered HIP-3 DEXes
bullpen hyperliquid status --address 0x1111111111111111111111111111111111111111 --all-dexes --output json
Example Commands¶
bullpen hyperliquid status --address 0x1111111111111111111111111111111111111111
bullpen hyperliquid status --address 0x1111111111111111111111111111111111111111 --output json
bullpen hyperliquid status --address 0x1111111111111111111111111111111111111111 --all-dexes --output json
JSON Output¶
Contract: JSON Output Contract.
Successful output is a single JSON document. The shape below is representative for this command family; commands may add fields without breaking the shared contract.
Schema version: 1 when a command emits schema_version; otherwise treat the current command shape as contract version 1.
Top-level Keys¶
| key | type | nullable | notes |
|---|---|---|---|
address |
string | no | Hyperliquid account address queried |
signer_address |
string | yes | Authenticated signer address when the query is resolved from login state |
dex_scope |
string | yes | Present as all only for --all-dexes output |
totals |
object | yes | Aggregate totals across main plus registered HIP-3 DEXes for --all-dexes output |
per_dex |
array | yes | Per-DEX account/position breakdown for --all-dexes; omitted otherwise |
positions |
array | no | Open perp positions with coin, side, size, mark/entry price, value, PnL, leverage, and risk fields |
positions[].dex_label |
string | yes | Present for --all-dexes; labels the DEX that returned this position |
positions[].registry_index |
integer | yes | HIP-3 registry index for --all-dexes position rows |
margin_summary |
object | no | Account value, raw USD, total margin used, and total notional position summary |
cross_margin_summary |
object | yes | Cross-margin account summary when Hyperliquid returns one |
Example¶
Example JSON output
{
"address": "0x1111111111111111111111111111111111111111",
"positions": [
{
"coin": "BTC",
"side": "long",
"size": "0.01",
"entry_px": "65000",
"mark_px": "66250",
"position_value": "650",
"unrealized_pnl": "12.5",
"return_on_equity": "0.019",
"leverage": "cross 5x",
"liquidation_px": "52000",
"margin_used": "125.00"
}
],
"margin_summary": {
"accountValue": "1250.50",
"totalNtlPos": "500.00",
"totalRawUsd": "1125.50",
"totalMarginUsed": "125.00"
},
"cross_margin_summary": {
"accountValue": "1250.50",
"totalNtlPos": "500.00",
"totalRawUsd": "1125.50",
"totalMarginUsed": "125.00"
}
}
When --all-dexes is passed, the command returns an all-DEX envelope instead of
the default main-DEX shape. That envelope includes dex_scope: "all",
aggregate decimal-string totals, per_dex DEX detail rows, and flattened
positions where each row carries dex_label and registry_index. Default
status output remains main-DEX scoped for script compatibility.
All-DEX Example¶
All-DEX example JSON output
bullpen hyperliquid status --address 0x1111111111111111111111111111111111111111 --all-dexes --output json
{
"address": "0x1111111111111111111111111111111111111111",
"dex_scope": "all",
"totals": {
"account_value": "30.75",
"total_ntl_pos": "13",
"total_raw_usd": "30.75",
"total_margin_used": "4",
"cross_account_value": "30.25",
"cross_maintenance_margin_used": "1",
"withdrawable": "19",
"unrealized_pnl": "0.25",
"position_count": 2
},
"per_dex": [
{
"label": "main",
"registry_index": 0,
"position_count": 1,
"positions": []
},
{
"label": "dex-a",
"dex": "dex-a",
"registry_index": 1,
"position_count": 1,
"positions": []
}
],
"positions": [
{
"dex_label": "main",
"registry_index": 0,
"coin": "BTC",
"side": "long",
"size": "0.1",
"position_value": "6",
"unrealized_pnl": "0.75",
"return_on_equity": "0.1"
}
]
}
Stability¶
Patch releases may add nullable or optional fields. Minor releases may add required fields or increment schema_version. Major releases may remove or rename fields.