What a Bundle Is
A bundle is a group of 1 to 4 transactions that execute in order and all or nothing. Either every transaction in the bundle lands in the same block, in the order you gave, or none of them do. Use a bundle when a later transaction only makes sense if an earlier one succeeded, for example a setup transaction followed by a swap.Rules
The tip follows the same tip rule as a single send: one top-level SystemProgram transfer to a published tip account, funded by a signer, with the tip account in the static keys. That tip minus the 5,000 lamport base fee becomes the Jito bid for the whole bundle. Because the bundle is atomic, the tip is only paid if the entire bundle lands.
JSON-RPC sendBundle
The result is a bundle id. Keep it to query the bundle’s status.
sendBundle also accepts {"encoding": "base58"} for base58 encoded transactions. The examples below use base64.
POST /send-bundle
The binary route takes the same framing as/send-batch: for each transaction, a big-endian u16 length followed by the raw transaction bytes, 1 to 4 frames in execution order.
bundle label.
Track a Bundle
CallgetInflightBundleStatuses with an array of bundle ids:
landed_slot is the slot the bundle landed in, or null when it has not landed. status is one of four states:
The bundle id stays the same while Apex resubmits, so keep polling the id you got when you sent the bundle.
Ask the same Apex endpoint you sent the bundle to. Bundle ids are not shared between endpoints.
Since a bundle is atomic, you can also confirm it like any transaction: once any of its signatures shows up as confirmed in
getSignatureStatuses on a Solana RPC, the whole bundle landed.