Swaps, memecoins, perps, prediction markets and RWAs. Six sectors, six chains and fifteen venues behind one contract. Every action comes back as steps[] your wallet signs. We build, you sign, and the API never touches funds.
curl https://ultra-api.deserialize.xyz/v1/swaps/quote \ -H "content-type: application/json" \ -d '{ "chain": "solana", "inputToken": "So1111…111112", "outputToken": "EPjFW…TDt1v", "amountIn": "1000000000" }'
// 200: meta-aggregated, best of every provider on the chain { "best": { "provider": "jupiter", "output": { "amount": "76427536" } }, "all": [ … ], "failed": [] }
We query every aggregator on the chain at once and return the best route, with all the alternatives so you can compare.
Bonding-curve buys and sells through the same steps[] contract as everything else. Once a token graduates it routes through the swap engine on its own.
Markets, funding, orderbooks and positions. Build orders with TP/SL legs, and manage collateral and leverage.
Live odds and volumes. The full order flow comes back as ordered steps: allowances, credential derivation, then the signed CLOB order.
Tokenized treasuries, credit, commodities and equities with issuer NAV and live yield. Access rules are explicit, so permissioned assets tell you they are permissioned.
Collections, listings and holdings, with buy and list actions resolved to signable transactions.
Every action endpoint returns an ordered array of things to sign. The API builds; your wallet signs and sends. It never sees a key.
Everything works with no signup, no key and no card.
Higher throughput and a direct line to the team.
For enterprise, email sales@deserialize.xyz. We send an invoice, and your API key is issued once it is paid.
Install the SDK, build an action, hand the steps to your signer. No key, no waitlist.
npm i @deserialize/ultra-agg-sdk
import {
UltraAggClient, executeSteps,
} from '@deserialize/ultra-agg-sdk'
const ultra = new UltraAggClient()
const action = await ultra.swapBuild({
chain: 'base',
inputToken: WETH,
outputToken: USDC,
amountIn: '1000000000000000000',
taker: wallet.address,
})
// each step is signed by YOUR wallet
await executeSteps(action, wallet)