Custom pairs
Custom pairs: launch a coin priced in a stock, USDC or another coin — and what trading one changes.
A pump.fun coin is priced and traded in a quote asset. SOL is the default; a coin can instead be paired with USDC, an xStocks tokenized stock (SPYx, NVDAx, TSLAx…), WBTC, PUMP, other listed assets, or any other pump.fun coin. The pair is chosen at creation (quoteMint on Create a token) and never changes; after graduation the coin's PumpSwap pool is priced in the same asset.
GEThttps://api.trenchy.tools/api/sol/pairs
The list is read from chain (SOL, the Global whitelist, the QuoteControl list) and cached 10 minutes. Pump coins are not enumerated: pass a coin's mint as quoteMint and we resolve it (422 quote_not_eligible when the chain refuses it).
cURL
curl "https://api.trenchy.tools/api/sol/pairs?api-key=YOUR_API_KEY"
Response
{
"pairs": [
{ "mint": "So11111111111111111111111111111111111111112", "symbol": "SOL", "name": "Solana", "decimals": 9, "tokenProgram": "Tokenkeg…", "source": "sol", "kind": "sol", "initialVirtualQuoteReserves": "30000000000", "feeSchedule": "tiers" },
{ "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", "symbol": "USDC", "name": "USD Coin", "decimals": 6, "tokenProgram": "Tokenkeg…", "source": "global", "kind": "stable", "initialVirtualQuoteReserves": "…", "feeSchedule": "stable" },
{ "mint": "XsDoVfqeBukxuZHWhdvWHBhgEHjGNst4MLodqsJHzoB", "symbol": "SPYx", "name": "SP500 xStock", "decimals": 8, "tokenProgram": "TokenzQd…", "source": "quoteControl", "kind": "stock", "initialVirtualQuoteReserves": "…", "feeSchedule": "exotic" }
],
"checkedAt": 1761177600000
}
Fields
| Field | Meaning |
|---|---|
symbol, name, decimals | From the mint's Token-2022 metadata or its Metaplex metadata. Amounts you send are in whole units of the asset (10 = 10 USDC); decimals tells you how it is stored on chain. |
source | sol, global (USDC, whitelisted on pump.fun's Global), quoteControl (the admin-managed list), pumpCoin (another coin, only on answers about a specific coin). |
kind | A hint for grouping a UI: sol, stable, stock (xStocks: symbol ends in x), crypto, pump. Heuristic, by symbol — an unknown asset is crypto, never stock. |
feeSchedule | Which pump.fun fee schedule the pair pays: market-cap tiers (SOL), stable tiers (USDC) or the flat exotic fees (everything else). |
initialVirtualQuoteReserves | What a new curve quoted in this asset starts from (raw units): the pair's starting price. |
What changes when a coin is not priced in SOL
- Amounts are in the quote asset.
amountwithdenominatedInQuote: "true"(aliasdenominatedInSol) means USDC, SPYx, …; every answer carriesquote: { mint, symbol, decimals }andexpected.quoteAmount. Quotes returnquoteIn/quoteOut. - The wallet must hold the quote asset in its associated token account. A short balance is
409 no_quote_balancewithneeded,haveand theaccountto fund; read balances with balancesmint=<quote mint>. Keep SOL too: network fees and our fee are SOL. - Our fee stays SOL: the same basis points of the trade's value, converted at a cached market price, never under a small floor.
- Creator fee is configurable on custom pairs (
creatorFeeBpsat creation, fixed afterwards); SOL and USDC coins pay pump.fun's schedule. Creator fees accrue in the quote asset. - Mayhem mode is not available on custom pairs (SOL and USDC only). A coin priced in another pump coin has a
depth(1 for a coin quoted in a SOL coin, …); the chain caps it. - Transactions are heavier: a Token-2022 quote takes ~300k compute units per trade and ~500k for a create with a dev buy; we set the budget. Many-buyer bundles fit fewer wallets per transaction.
Launching:
POST /api/sol/trade-local with action: "create", quoteMint: "USDC" (or a symbol / mint from this list) and amount in that asset. Buying: nothing new in the request — pass the mint, the API reads the pair from the coin's curve.