Batch transfer (SOL + SPL + Token-2022)
One→one or one→many transfer of native SOL and/or any SPL / Token-2022
token. Accepts either a batched items[] array or the legacy
single-item shorthand.
Items are grouped by sender (one fee payer per tx) and packed into
the fewest possible 1232-byte transactions. The server detects each
mint’s token program via one batched getMultipleAccounts and emits
create_associated_token_account_idempotent + transfer_checked for
non-SOL items.
Replaces POST /api/sol/transfer from public.raze.sh with a batched
shape and Token-2022 autodetection.
Authorizations
Body
Batch transfer. Either pass items[] for the full batched form, or use
the top-level sender / receiver / tokenAddress / amount for the
legacy single-item shape. Items are grouped by sender and packed into
the fewest possible 1232-byte transactions.
Legacy alias for tipLamports — tips the Raze relay wallet.
Custom tip recipient wallet (defaults to the Raze relay tip wallet).
Flat tip in lamports, floored at 100000. Takes precedence over feeTipLamports.
Custom fee recipient wallet. Only charged together with feeBps.
Percentage fee in basis points of the SOL volume this endpoint moves, sent to feeWallet. Endpoints with no SOL volume charge nothing.
Optional priority fee in lamports. When set, compute-budget instructions are added to every output tx.
base64, base58 Optional cap on non-fee instructions per tx. Default = whatever fits the 1232-byte budget.
Response
Transactions built
Shared envelope for every /utils/sol/* write endpoint. Optional
fields are omitted from the JSON when unset.
Serialized partially-signed transactions in submission order.
For batch endpoints (transfer, burn): packing metadata.
batches[i] describes transactions[i].
Set by /utils/sol/launch — the mint of the launched token.
Set by /utils/sol/launch and /utils/sol/fees/claim.
Set by /utils/sol/launch when the launch needs preparatory
transactions (today: creating an address lookup table for a
many-wallet bundle). Submit each stage, in order, as its own bundle
before transactions; a stage with waitForActivation: true
must also be given a slot to activate (~10 s for a new lookup table)
or the main bundle cannot resolve its addresses.
Set by /utils/sol/launch when a lookup table was created for the bundle — the address the stage transaction provisions.
Venue pool/curve address, returned by launches that derive one up front (bonk, bags). Absent on pumpfun, whose bonding curve is derivable from the mint alone.
Venue config account, when the venue keys its curve on one. Present on bags: the Meteora DBC PoolConfig the launch runs against. You need it to build any later swap of your own, it is not derivable from the mint — and on a provisioning response it is the feeShareConfigKey to pass on the follow-up call, together with the returned mint and metadataUri (the config belongs to that mint only — see feeShareConfigKey).
bags launches: where the config sends the token's trading fees — the fee_claimer frozen in the on-chain PoolConfig. Echoed for your records; you do not have to police it, since the server only lets you launch against the config provisioned for your own mint (see feeShareConfigKey).
bags provisioning responses: the reserved mint's metadata URI. Pass it back as token.metadataUri (with mintPubkey = the returned mint) on the follow-up launch call.
Set by /utils/sol/launch — true when the wallet count pushed the launch onto the multi-stage / lookup-table path.
Set by /utils/sol/fees/config for action=status reads.
Set when the request had simulate: true. One entry per built tx,
in the same order as transactions. Each entry is the RPC
simulateTransaction value object (logs / unitsConsumed / err).
