/utils/sol/* endpoints live on the History API (https://api.raze.bot)
alongside /api/sol/* reads. They cover the non-swap workflows previously hosted
on the legacy public.raze.sh service (and briefly on router.raze.bot): token
launches, fee management, SOL/SPL transfers, distribution, and consolidation.
Swap / quote / buy / sell / instructions remain on https://router.raze.bot.
All endpoints require an API key (same scheme as other History routes —
X-API-Key, Authorization: Bearer sk_..., or ?apiKey=sk_...).
Endpoints
Transfer
Batch SOL + SPL + Token-2022 transfers. One request → as few txs as fit.
Burn
Batch burn SPL or Token-2022 tokens across many wallets and mints.
Distribute
One→many SOL distribute.
Consolidate
Many→one SOL sweep, percentage-based.
Launch
Token launch (pumpfun / bonk / meteora_dbc / meteora_cpamm).
Fees: Claim
Claim pump.fun creator fees or Meteora partner/creator fees.
Fees: Config
Manage pump.fun creator-fee sharing config.
Batch semantics
transfer and burn are the two endpoints that accept a true batch (items[]).
The server groups items by their signer (sender for transfer, wallet for burn)
and bin-packs each group into as few versioned transactions as the 1232-byte
wire limit allows. Items that share a signer share a tx; items with different
signers go to different txs.
The response includes a batches[] array describing the packing — batches[i]
describes transactions[i], telling you which input item indices ended up in
that tx and how many non-fee instructions it contains. That lets you do
partial-retry logic when one tx in a batch lands and another doesn’t.
Common request flags
Common response envelope
Token program autodetection
Anywhere atokenAddress (mint) appears, the server batch-fetches the mint
account in one getMultipleAccounts call and detects whether the mint is owned
by the SPL Token program or Token-2022. The right program ID is used for
ATA derivation and transfer_checked / burn_checked instruction building.
Callers don’t pass a tokenProgram flag.
Token-2022 mints with the transfer-fee extension are not yet supported and
will fail on-chain. Open an issue if you hit one and we’ll add
transfer_checked_with_fee.
Migration from public.raze.sh / router.raze.bot
The legacy
GET /api/metadata/*, GET /api/image/*, and POST /api/upload
endpoints have no public replacement — read Metaplex / Token-2022 metadata via
Solana RPC, serve images through a CDN, and pin to IPFS via Pinata directly.
The new endpoints require an API key (the legacy service was open). Default
output encoding is base64 (legacy was base58); pass encoding: "base58"
for byte-for-byte compatibility.