PaydayAPI
API reference · Launch on Solana

Create a launch

POSThttps://payday.direct/api/v1/launches

Builds the launch transactions for the wallet to sign. Nothing is on chain yet. Needs a key made with launching switched on. See the guide.

Needs an API key in Authorization: Bearer or X-API-Key. Authentication

Body

mode"account" | "cash_payback"default "account"
account: fees to fees_to. cash_payback: fees to the coin's holders by time held (GET /payback for the rules); any pairing pump.fun offers.
walletstringrequired
Solana address that signs and pays for the launch
namestringrequired
The coin's name
symbolstringrequired
ticker, case kept
descriptionstring
imagestringrequired
PNG, JPEG, GIF or WebP as base64 or a data URL
bannerstring
optional, same formats
dev_buy_solnumberrequired
SOL the wallet spends on the first buy
fees_tostring
X handle that gets the fees; or a $cashtag, venmo:username, or zelle:<email or US phone> (a Zelle destination is permanent and never shown in public)
hold_in_vaultboolean
X handles only: hold the fees for the account to claim instead of paying them through Peer
quote_mintstring
optional: pair with a stock or another asset pump.fun supports instead of SOL
reward_basketobject[]
cash_payback only, where baskets are open: 1 to 15 assets from GET /rewards/assets, no repeats. Plain mints for an even split, or { mint, weight_bps } for every asset with weights adding up to 10000, each at least 100. The split stays the same; basket_type says what the holders' part does with the basket. Dividends follow the Cash Payback round clock and are shared by the hold ladder. Locked at launch. Only on a SOL pair (leave out quote_mint). Each asset is checked first (a transfer fee of at most 5%, no transfer hook, not frozen, a swap route from the pairing); a refused basket answers 400 with error.rejected, one reason per asset. An asset with its own transfer fee keeps it: holders get what is sent minus that fee, shown as transfer_fee_bps. Leave it out and holders are paid in the pairing.
basketobject
cash_payback only, where baskets are open; the newer form of reward_basket and basket_type (send one form, not both). Locked at launch. The site launcher runs the same validator. Refusals answer 400 with a stable error.code: basket_size, basket_weights, basket_type, basket_asset_not_allowed (error.mint and error.rejected, one reason per asset), basket_payback_not_allowed (error.mint).
basket.type"payout" | "fund"default "payout"
payout: the whole holders' part buys the legs by weight and all of it is sent every round. fund: the legs are bought and kept; holders are paid only value above cost.
basket.legsobject[]required
basket.paybackstring | null
fund only, optional: one asset from the full list (GET /rewards/assets?for=payout). pair_pct of the holders' part (GET /payback baskets.payback.pair_pct, saved on the coin at launch) buys it and is paid every round; the rest buys the fund. Refused on a payout basket.
basket_type"payout" | "fund"default "payout"
with reward_basket, locked at launch. payout: the whole holders' part buys the basket by weight and all of it is sent each dividend; nothing is held. fund: the whole holders' part buys the basket and the coin keeps it (never sold); holders are paid only each asset's value above what it cost, so if the assets do not rise the fund pays nothing. A fund basket takes only stocks, pre-stocks, the majors (SOL, WBTC, ETH, HYPE, XMR) and the big memes (PUMP, Fartcoin, Bonk, $WIF, TRUMP, PENGU); no USDC.
pay_with_solbooleandefault true
with quote_mint: the wallet pays in SOL and a swap transaction is added
linksobject
Where to see the coin
links.xstring
links.telegramstring
links.websitestring

Responses

201Transactions to sign
400Error
401Missing or invalid key
403Error
429Over the limit. Retry-After says when to try again.

Response fields

idstring
The id
status"awaiting_signature" | "submitting" | "launched" | "expired"
curve on the bonding curve, graduated once it moved to the pump.fun AMM
mintstring
The coin's address: a Solana mint, or an EVM token address in lower case
walletstring
signaturestring | null
fees_toobject | null
fees_to.rail"xmoney" | "cashapp" | "venmo" | "zelle"
How the account is paid
fees_to.handlestring | null
The X handle
transactionsobject[]
create only: sign each with the wallet, in this order
transactions[].namestring
The coin's name
transactions[].transactionstring
base64 versioned transaction
fee_splitobject | null
fee_split.status"locked" | "pending"
curve on the bonding curve, graduated once it moved to the pump.fun AMM
fee_split.nextstring
sign_within_secondsinteger
expires_in_secondsinteger
dev_buy_tokensnumber | null
linksobject | null
Where to see the coin