API

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

FieldMeaning
symbol, name, decimalsFrom 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.
sourcesol, global (USDC, whitelisted on pump.fun's Global), quoteControl (the admin-managed list), pumpCoin (another coin, only on answers about a specific coin).
kindA 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.
feeScheduleWhich pump.fun fee schedule the pair pays: market-cap tiers (SOL), stable tiers (USDC) or the flat exotic fees (everything else).
initialVirtualQuoteReservesWhat 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. amount with denominatedInQuote: "true" (alias denominatedInSol) means USDC, SPYx, …; every answer carries quote: { mint, symbol, decimals } and expected.quoteAmount. Quotes return quoteIn / quoteOut.
  • The wallet must hold the quote asset in its associated token account. A short balance is 409 no_quote_balance with needed, have and the account to fund; read balances with balances mint=<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 (creatorFeeBps at 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.