bullpen hyperliquid withdraw¶
Last updated: July 13, 2026
Withdraw USDC from Hyperliquid to an Arbitrum L1 wallet (requires hyperliquid_trading feature)
Usage¶
Live Help¶
Withdraw USDC from Hyperliquid to an Arbitrum L1 wallet (requires hyperliquid_trading feature)
Usage: bullpen hyperliquid withdraw [OPTIONS] --amount <AMOUNT> [DESTINATION]
Arguments:
[DESTINATION]
Destination Arbitrum L1 address. Defaults to the authenticated signer wallet
Options:
--amount <AMOUNT>
USD amount to withdraw
--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]
--env <ENV>
Target environment to connect to (overrides config.toml)
[env: BULLPEN_ENV=]
[possible values: staging, production]
--unsafe-recipient
Acknowledge that a non-signer destination is correct. Required for live withdrawals to a different address
--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.
-y, --yes
Skip confirmation prompt
--dry-run
Show the planned withdrawal without signing or submitting
--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:
# Preview a USDC withdrawal without signing or submitting
bullpen hyperliquid withdraw --amount 25 --dry-run
# Preview a withdrawal to a specific Arbitrum wallet
bullpen hyperliquid withdraw 0x1111111111111111111111111111111111111111 --amount 25 --dry-run
# Export the withdrawal dry-run as JSON
bullpen hyperliquid withdraw --amount 25 --dry-run --output json
# Preview a verified non-signer Arbitrum wallet after explicit recipient acknowledgement
bullpen hyperliquid withdraw 0x1111111111111111111111111111111111111111 --amount 25 --unsafe-recipient --dry-run
Example Commands¶
bullpen hyperliquid withdraw --amount 25 --dry-run
bullpen hyperliquid withdraw 0x1111111111111111111111111111111111111111 --amount 25 --dry-run
bullpen hyperliquid withdraw --amount 25 --dry-run --output json
bullpen hyperliquid withdraw 0x1111111111111111111111111111111111111111 --amount 25 --unsafe-recipient --dry-run
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 |
|---|---|---|---|
dry_run |
boolean | no | True for non-submitting dry-run output |
action |
string | no | transfer or withdraw |
source_wallet |
object | no | Active account and source balance type |
destination |
object | no | Destination balance or Arbitrum address/network |
amount_usdc |
string | no | Requested USDC amount |
would_submit |
boolean | no | False in dry-run output |
signature_requested |
boolean | no | False in dry-run output |
exchange_request_submitted |
boolean | no | False in dry-run output |
balance_check |
object | yes | Best-effort balance check; absent when unavailable |
warnings |
array |
no | Dry-run warnings, including unavailable or insufficient balance checks; live reports may include command-specific warnings |
Example¶
Example JSON output
{
"dry_run": true,
"action": "withdraw",
"source_wallet": {
"account": "0x1111111111111111111111111111111111111111",
"balance": "hyperliquid_usd_collateral"
},
"destination": {
"kind": "l1_wallet",
"address": "0x1111111111111111111111111111111111111111",
"network": "arbitrum"
},
"amount_usdc": "25",
"would_submit": false,
"signature_requested": false,
"exchange_request_submitted": false,
"balance_check": {
"perp_raw_usd": "100",
"perp_account_value": "100"
},
"warnings": []
}
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.