bullpen hyperliquid send¶
Last updated: July 13, 2026
Send same-Hyperliquid spot tokens between the master account, owned subaccounts, or an explicitly acknowledged Hyperliquid/EVM 0x recipient
Usage¶
Live Help¶
Send same-Hyperliquid spot tokens between the master account, owned subaccounts, or an explicitly acknowledged Hyperliquid/EVM 0x recipient
Usage: bullpen hyperliquid send [OPTIONS] --asset <ASSET> --amount <AMOUNT> --to <TO>
Options:
--asset <ASSET>
Spot asset symbol to resolve from fresh Hyperliquid spot metadata
--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]
--amount <AMOUNT>
Spot-token amount to send
--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.
--from <FROM>
Source endpoint: `master` or one of the authenticated account's owned subaccount addresses
[default: master]
--to <TO>
Destination Hyperliquid/EVM 0x address. Owned master/subaccounts are allowed by default
--unsafe-recipient
Allow a destination that is not the active master account or one of its owned subaccounts
--dry-run
Show the planned send without signing or submitting
--read-only
Enable read-only mode: blocks all mutating commands
-y, --yes
Skip confirmation prompt
--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 sending USDC from the master account to an owned subaccount
bullpen hyperliquid send --asset USDC --amount 25 --to 0x2222222222222222222222222222222222222222 --dry-run
# Preview a selected non-USDC spot token resolved from fresh metadata
bullpen hyperliquid send --asset HYPE --amount 1.25 --to 0x2222222222222222222222222222222222222222 --dry-run
# Preview USDC from an owned subaccount back to the master account
bullpen hyperliquid send --asset USDC --amount 25 --from 0x2222222222222222222222222222222222222222 --to 0x1111111111111111111111111111111111111111 --dry-run
# Preview a third-party Hyperliquid 0x recipient after explicitly acknowledging the recipient risk
bullpen hyperliquid send --asset USDC --amount 5 --to 0x3333333333333333333333333333333333333333 --unsafe-recipient --dry-run
# Export the send dry-run as JSON
bullpen hyperliquid send --asset USDC --amount 25 --to 0x2222222222222222222222222222222222222222 --dry-run --output json
SAFETY:
This command builds same-Hyperliquid sendAsset actions for USDC and selected
Hyperliquid spot tokens resolved from fresh spotMetaAndAssetCtxs metadata.
Non-USDC live submit remains operator-gated; current
non-USDC support is dry-run/source/mock-tested until live validation is recorded.
Unit / Hyperunit native-chain deposit-address, guardian, and external withdrawal routes
are unsupported by hl send and tracked separately.
Third-party recipients require --unsafe-recipient, and live sends require --yes or an interactive confirmation.
Example Commands¶
bullpen hyperliquid send --asset USDC --amount 25 --to 0x2222222222222222222222222222222222222222 --dry-run
bullpen hyperliquid send --asset HYPE --amount 1.25 --to 0x2222222222222222222222222222222222222222 --dry-run
bullpen hyperliquid send --asset USDC --amount 25 --from 0x2222222222222222222222222222222222222222 --to 0x1111111111111111111111111111111111111111 --dry-run
bullpen hyperliquid send --asset USDC --amount 5 --to 0x3333333333333333333333333333333333333333 --unsafe-recipient --dry-run
bullpen hyperliquid send --asset USDC --amount 25 --to 0x2222222222222222222222222222222222222222 --dry-run --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 | no | Mutation preview/report schema version when emitted |
kind |
string | yes | hyperliquid_mutation_preview for dry-run JSON |
action |
string | no | Always send |
account |
string | no | Active Hyperliquid master account |
would_submit |
boolean | yes | False in dry-run output |
signature_requested |
boolean | yes | False in dry-run output |
exchange_request_submitted |
boolean | yes | False in dry-run output |
intent.transfer_source |
string | yes | master or owned source subaccount address |
intent.transfer_destination |
string | yes | Destination Hyperliquid/EVM address |
intent.transfer_token |
string | yes | Hyperliquid token string such as USDC:<tokenId> |
intent.transfer_asset |
string | yes | Requested spot asset symbol |
intent.transfer_amount |
string | yes | Requested spot asset amount |
Example¶
Example JSON output
bullpen hyperliquid send --asset USDC --amount 25 --to 0x2222222222222222222222222222222222222222 --dry-run --output json
{
"schema_version": 1,
"kind": "hyperliquid_mutation_preview",
"action": "send",
"account": "0x1111111111111111111111111111111111111111",
"scope": "primary 0x1111111111111111111111111111111111111111",
"coin": null,
"would_submit": false,
"signature_requested": false,
"exchange_request_submitted": false,
"summary": "Preview only - no signature requested and no Hyperliquid exchange request submitted. Planned send of 25 USDC to 0x2222222222222222222222222222222222222222.",
"intent": {
"action": "send",
"account": "0x1111111111111111111111111111111111111111",
"transfer_source": "master",
"transfer_destination": "0x2222222222222222222222222222222222222222",
"transfer_token": "USDC:0x00000000000000000000000000000000",
"transfer_asset": "USDC",
"transfer_amount": "25",
"reduce_only": false,
"builder_fee_bps": 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.