bullpen hyperliquid orders¶
Last updated: July 13, 2026
Show open orders for an address, optionally filtered by coin
Usage¶
Live Help¶
Show open orders for an address, optionally filtered by coin
Usage: bullpen hyperliquid orders [OPTIONS] [COIN]
Arguments:
[COIN]
Optional coin filter, for example BTC or xyz:SPCX
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]
--dex <DEX>
Optional dex context for the request
--env <ENV>
Target environment to connect to (overrides config.toml)
[env: BULLPEN_ENV=]
[possible values: staging, production]
--all-dexes
Query main plus every registered HIP-3 perp DEX
--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 open Hyperliquid orders for an address
bullpen hyperliquid orders --address 0x1111111111111111111111111111111111111111
# Export open BTC orders as JSON before cleanup
bullpen hyperliquid orders BTC --address 0x1111111111111111111111111111111111111111 --output json
# Export open HIP-3 orders by DEX-prefixed coin or explicit DEX
bullpen hyperliquid orders xyz:SPCX --address 0x1111111111111111111111111111111111111111 --output json
# Export open orders across main plus registered HIP-3 DEXes
bullpen hyperliquid orders --address 0x1111111111111111111111111111111111111111 --all-dexes --output json
OUTPUT NOTE:
Main-perp filters keep the basic open-orders JSON shape. HIP-3 scopes use the
frontend-order envelope so DEX identity is preserved; JSON then matches
`hyperliquid frontend-orders`.
Example Commands¶
bullpen hyperliquid orders --address 0x1111111111111111111111111111111111111111
bullpen hyperliquid orders BTC --address 0x1111111111111111111111111111111111111111 --output json
bullpen hyperliquid orders xyz:SPCX --address 0x1111111111111111111111111111111111111111 --output json
bullpen hyperliquid orders --address 0x1111111111111111111111111111111111111111 --all-dexes --output json
bullpen hyperliquid orders --address 0x1111111111111111111111111111111111111111 --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 |
|---|---|---|---|
schema_version |
integer | yes | Present on DEX-scoped/frontend envelopes; currently 1 |
kind |
string | yes | Present on DEX-scoped/frontend envelopes, such as hyperliquid_frontend_orders_all_dex_report |
address |
string | no | Hyperliquid account address queried |
all_dexes |
boolean | yes | Present on frontend envelopes; true for --all-dexes |
dex_scope |
string | yes | Present as single for --dex or all for --all-dexes |
per_dex |
array | yes | Per-DEX breakdown for --all-dexes; omitted otherwise |
orders |
array | no | Open orders returned by Hyperliquid |
orders[].dex_id |
string | yes | Present on --dex/--all-dexes frontend rows to disambiguate duplicate symbols |
orders[].instrument_id |
string | yes | Stable DEX-qualified instrument id for frontend rows |
orders[].row_key |
string | yes | Stable DEX-qualified row key for frontend rows |
orders[].coin |
string | no | Market symbol |
orders[].side |
string | no | Hyperliquid side label |
orders[].limit_px |
string/decimal | no | Limit price |
orders[].sz |
string/decimal | no | Remaining order size |
orders[].oid |
integer | no | Hyperliquid order id |
orders[].timestamp_iso |
string | no | UTC rendering of the order timestamp |
orders[].order_type |
string | yes | Present on frontend rows |
orders[].orig_sz |
string/decimal | yes | Original order size; present on frontend rows and usually present on basic rows |
orders[].trigger_condition |
string | yes | Present on frontend rows |
orders[].children |
array | yes | Child frontend orders recursively mapped with the same snake_case field names |
Example¶
{
"address": "0x1111111111111111111111111111111111111111",
"orders": [
{
"coin": "BTC",
"side": "B",
"limit_px": "65000",
"sz": "0.01",
"oid": 123456789,
"timestamp": 1779920575000,
"timestamp_iso": "2026-07-13 13:42:55Z",
"orig_sz": "0.01"
}
]
}
For --dex and --all-dexes, orders intentionally uses the frontend-order
reader so HIP-3 DEX identity is not lost. The row still preserves the basic
automation aliases above (coin, side, limit_px, sz, oid,
timestamp_iso, and orig_sz) and adds frontend/DEX metadata.
All-DEX example JSON output
bullpen hyperliquid orders --address 0x1111111111111111111111111111111111111111 --all-dexes --output json
{
"schema_version": 1,
"kind": "hyperliquid_frontend_orders_all_dex_report",
"address": "0x1111111111111111111111111111111111111111",
"all_dexes": true,
"dex_scope": "all",
"partial": false,
"per_dex": [
{
"dex_id": "main",
"label": "main",
"status": "ok",
"order_count": 1,
"orders": [
{
"dex_id": "main",
"coin": "BTC",
"side": "B",
"limit_px": "65000",
"sz": "0.01",
"oid": 123456789,
"timestamp": 1779920575000,
"timestamp_iso": "2026-07-13 13:42:55Z",
"orig_sz": "0.01",
"is_position_tpsl": false,
"is_trigger": false,
"order_type": "Limit",
"reduce_only": false,
"trigger_condition": "N/A",
"trigger_px": "0.0"
}
]
}
],
"orders": [
{
"dex_id": "main",
"coin": "BTC",
"side": "B",
"limit_px": "65000",
"sz": "0.01",
"oid": 123456789,
"timestamp": 1779920575000,
"timestamp_iso": "2026-07-13 13:42:55Z",
"orig_sz": "0.01",
"is_position_tpsl": false,
"is_trigger": false,
"order_type": "Limit",
"reduce_only": false,
"trigger_condition": "N/A",
"trigger_px": "0.0"
}
]
}
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.