bullpen solana buy¶
Last updated: July 13, 2026
Buy a Solana token with USDC via Jupiter Ultra
Usage¶
Live Help¶
Buy a Solana token with USDC via Jupiter Ultra
Usage: bullpen solana buy [OPTIONS] <MINT> <USD_AMOUNT>
Arguments:
<MINT>
Output SPL token mint address
<USD_AMOUNT>
USD/USDC amount to spend (e.g. `5` = $5 of token; NOT token units)
Options:
--output <OUTPUT>
Output format for command results
[possible values: table, json]
--slippage-bps <SLIPPAGE_BPS>
Slippage tolerance in basis points
--env <ENV>
Target environment to connect to (overrides config.toml)
[env: BULLPEN_ENV=]
[possible values: staging, production]
--yes
Skip confirmation prompt
--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.
--preview
Show the Jupiter quote without signing or submitting the swap
--skip-shield-check
Skip JupiterShield token risk check (for automated/bot use)
--retry-after-rate-limit
Wait for Jupiter's rate-limit cooldown and retry once if the live submit is rate-limited before broadcast
--i-know-what-im-doing
Allow slippage above 500 bps
--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:
# Search before buying so you can verify the mint
bullpen solana search SOL
# Preview a USDC-to-BONK buy without signing or submitting
bullpen solana buy DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263 25 --preview
# Export the buy preview as JSON
bullpen solana buy DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263 25 --preview --output json
Example Commands¶
bullpen solana search SOL
bullpen solana buy DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263 25 --preview
bullpen solana buy DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263 25 --preview --output json
JSON Output¶
Contract: JSON Output Contract.
Preview (--preview --output json)¶
Preview output is a single JSON document emitted only when --preview --output json is passed. Live submit output uses the Solana swap mutation-report schema instead.
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 |
|---|---|---|---|
action |
string | no | buy, sell, or swap for the previewed Jupiter Ultra route |
input_mint |
string | no | Input SPL token mint address |
input_symbol |
string | yes | Input token symbol when metadata is available |
input_amount |
string | no | Decimal input amount in input-token units |
input_amount_atomics |
integer | no | Raw input amount in token atomics |
output_mint |
string | no | Output SPL token mint address |
output_symbol |
string | yes | Output token symbol when metadata is available |
output_amount |
string | no | Quoted decimal output amount |
output_amount_atomics |
integer | no | Raw output amount in token atomics |
effective_price_usd |
string | yes | Effective USD price when available |
price_impact_pct |
string | yes | Estimated price impact percentage when available |
slippage_bps |
integer | no | Slippage tolerance used for the quote |
fees_lamports |
integer | yes | Estimated Solana fees in lamports when available |
fixed_cost_lamports |
integer | yes | Estimated total fixed SOL costs in lamports when available |
warning |
string | yes | Non-fatal quote warning when Jupiter reports one |
referral_account_configured |
string | yes | Configured Solana referral account when present |
referral_fee_bps_configured |
integer | yes | Configured Solana referral fee in basis points |
shield_warnings |
array | yes | JupiterShield warnings when enabled; null when skipped or absent |
request |
object | no | Jupiter Ultra quote request preview |
Example¶
Example JSON output
{
"action": "buy",
"input_mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"input_symbol": "USDC",
"input_amount": "25",
"input_amount_atomics": 25000000,
"output_mint": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263",
"output_symbol": "BONK",
"output_amount": "6226017.66316",
"output_amount_atomics": 622601766316,
"effective_price_usd": "200",
"price_impact_pct": "0.12",
"slippage_bps": 100,
"fees_lamports": 5000,
"fixed_cost_lamports": 10000,
"warning": null,
"referral_account_configured": null,
"referral_fee_bps_configured": 0,
"shield_warnings": null,
"request": {
"input_mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"output_mint": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263",
"amount_lamports": 25000000,
"slippage_bps": 100,
"swap_mode": "ExactIn"
}
}
Live (--yes --output json)¶
Live output is a single JSON document after the transaction is submitted.
success=true requires a confirmed Solana receipt. Balance readback is reported
separately through readback_status.
| key | type | nullable | notes |
|---|---|---|---|
kind |
string | no | solana_swap_result |
success |
boolean | no | True only when receipt_status is confirmed |
status |
string | no | Transaction receipt status: confirmed, timeout, unknown, or failed |
signature |
string | no | Solana transaction signature |
tx_signature |
string | no | Compatibility alias for signature |
readback_status |
string | no | confirmed, readback_pending, readback_failed, or not_checked |
receipt_status |
string or object | no | Solana receipt proof; failed receipts include a reason object |
input_mint / output_mint |
string | no | Submitted input and output SPL token mints |
input_amount / output_amount |
string | no | Decimal submitted input and quoted output amounts |
post_swap_balance |
object | yes | Refreshed balance snapshot when available |
post_swap_balance_warning |
string | yes | Readback warning when balance refresh lags or fails |
post_swap_balance_next_action |
string | yes | Exact balance refresh command to run when readback lags or fails |
post_swap_dust |
object | yes | Sub-cent residual input-token dust guidance after a sell or swap |
Example live JSON output
{
"kind": "solana_swap_result",
"success": true,
"status": "confirmed",
"signature": "5WJ5c7dVn4yJmYw8cT9pP9Nqf9X4oMi4vMZL3a8f8CKiJx4CazQkJQf9QdZ8m4L3A3M7K1S4xGmQ3k8J2V6c9A1b",
"tx_signature": "5WJ5c7dVn4yJmYw8cT9pP9Nqf9X4oMi4vMZL3a8f8CKiJx4CazQkJQf9QdZ8m4L3A3M7K1S4xGmQ3k8J2V6c9A1b",
"readback_status": "confirmed",
"slot": 341234567,
"receipt_status": "confirmed",
"input_mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"input_symbol": "USDC",
"input_amount": "25",
"input_amount_atomics": 25000000,
"output_mint": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263",
"output_symbol": "BONK",
"output_amount": "6226017.66316",
"output_amount_atomics": 622601766316,
"post_swap_balance_warning": null,
"post_swap_balance_next_action": null,
"post_swap_dust": null
}
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.
Solana Execution Notes¶
--previewfetches and prints the Jupiter quote without signing or submitting a transaction.- Confirmed swaps are submitted through the Bullpen
TxService.SubmitV4transaction service. - The preview path must not construct signing material or call the submit path.