Skip to content

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

bullpen hyperliquid send [OPTIONS] --asset <ASSET> --amount <AMOUNT> --to <TO>

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.