/solana. Your partner key works here with the same rate limit it has
on Robinhood Chain (counted separately). Quotes are priced by running every pool’s real program on current account state, and
that state is kept current by a real-time account stream of every routed pool, so a quote reflects the pools as they are now.
Transactions go through two Route programs on Solana mainnet. Both can be upgraded only by Route’s treasury multisig.
The Route fee on Solana is 0.
Quote
string
required
Input mint (base58). Use the wrapped SOL mint
So11111111111111111111111111111111111111112 for SOL.string
required
Output mint (base58). Must differ from
input.integer
required
Exact input amount in raw units (1 SOL =
1000000000).string
Comma-separated venue names or program ids the quote must not use.
Response
Other fields (
plans_estimated, plans_simulated, search_us, sims, sim_us) are diagnostics and may change.
A trade whose price would be more than 10% below the pair’s rate at a small size is refused (422) rather than quoted at a
price no one should accept.
Live quote streams (stream=) are available on Robinhood Chain only; on Solana, poll /solana/quote.
Build a swap
/build returns the quote and an unsigned transaction for user. Before returning it, Route runs the whole transaction
(route-exec and every venue program) on current state. A transaction that fails that run is never returned. The run gives the
wallet the input amount, so it does not check the wallet’s balance. The user signs and sends the transaction.
string
required
Input mint.
string
required
Output mint.
integer
required
Exact input in raw units.
string
required
The wallet that signs, pays and receives.
integer
Default
50. min_out is the quote less this.integer
Priority fee in micro-lamports per compute unit. Default
10000.boolean
Allow routes split across paths. Default
false.boolean
See Gasless swaps.
If the user’s output token account does not exist, the transaction creates it. SOL output arrives as native SOL: the wallet’s
wSOL account is closed at the end, so any wSOL already in it is unwrapped too and arrives with the output.
Gasless swaps
Withgasless=true, Route’s relayer is the transaction’s fee payer and pays for new token accounts. The user repays the relayer
in the input token inside the same transaction, before the swap. The user needs no SOL.
GET /solana/build?...&gasless=true. The response has agaslessobject:relayer,fee_in(the repayment, in raw units of the input token),fee_lamports(what it covers) andamount_routed(amountlessfee_in).- The user signs
tx. The relayer’s signature slot stays empty. POST /solana/gasless/submitwith{"tx": "<base64 signed transaction>"}. Route checks that it is the exact transaction it built in the last 90 seconds and that the user signed it, then signs as fee payer and sends it. The response hassignature.GET /solana/gasless/status?sig=<signature>returns the chain’s status of the transaction.
GET /solana/gasless/info returns the relayer address and these limits.
Standing orders
A standing order is a policy account in route-delegate, owned by the user. The user’s tokens stay in the wallet: the user makes the policy’s authority a delegate for the order’s total, and Route’s keeper fills the order when it is due. The program enforces the order on chain on every fill: the input and output tokens, the slice and the total, the price floor (the least output per slice), the interval, the expiry, the cap on the keeper’s fee, and that the output goes to the user. The keeper cannot move funds in any other way.GET /solana/orders/preparereturns the create transaction for the owner to sign and send:
string
required
The wallet. Output always goes back to it.
string
required
Input mint.
string
required
Output mint.
integer
required
The order’s total input.
string
required
limit, stop, dca or twap.integer
Input per fill. Default: all of
amount at once.integer
Seconds between fills. Required for
dca and twap.integer
The least output for one slice (raw units). Required for
limit and stop. For dca and twap the default is 10% below the current price.integer
Seconds until the order expires. Default 30 days.
boolean
The relayer pays to create the order. The owner signs, then sends it with
POST /solana/gasless/submit.policy (the order’s address), tx, min_out_per_slice, max_fee (the most the keeper may take per fill, in
the input token), approve (the delegation the transaction sets: the total of all the owner’s live orders on that token) and
payer. For SOL input, the transaction wraps the SOL into the wallet’s wSOL account.
-
After the transaction lands, register the order with the keeper:
POST /solana/orderswith{"policy": "<policy>"}. Stop orders also pass"triggerOut": <output for one slice at which to sell>. -
GET /solana/orders?owner=<wallet>lists the owner’s orders (owneris required). Each hasorderandpolicy_state(the policy as it is on chain).orderholdsstatus(active,doneorrevoking),last_error, andfills, where each fill has itssignature,amount_in,feeandsimulated_out.
max_fee. The keeper simulates
every fill before sending it, so a fill that would fail or miss the floor is not sent.
Cancel
GET /solana/orders/revoke?policy=<policy> returns a transaction for the owner to sign. It revokes and closes the policy (the
rent goes back to whoever paid it), and sets the token delegation to what the owner’s other live orders still need, or removes it.
Agent trades
An agent policy lets another key, such as an AI agent or a bot, trade from the owner’s wallet within limits the owner signs: the tokens, the most per trade and in total, the price floor (10% below the current price by default), the interval and the expiry. Output always goes to the owner. The agent cannot send funds anywhere else.GET /solana/orders/prepare?...&kind=agent&agent=<agent public key>, with the same parameters as above (slice= the most per trade). The owner signs and sends the transaction. Do not register agent policies withPOST /solana/orders.- For each trade:
GET /solana/delegate/trade?policy=<policy>&input=<mint>&output=<mint>&amount=<raw>(optionalminOut). The response hastx,quote_out,simulated_outandfee(the keeper’s fee, in the input token). - The agent signs
txand sends it withPOST /solana/gasless/submit. Route’s keeper pays the network fee.
/solana/orders/revoke, as for orders.
Errors
Errors are JSON{"error": "..."} with these statuses:
/build, /orders/* and /delegate/trade use these statuses too: 400 for bad or missing parameters (including a gasless trade too
small for its fee, a limit or stop order without minOut, or GET /orders without owner), 404 for an unknown policy, and
422 when the transaction cannot be built (no route, or the pre-send run failed).
Venues
Quotes route through the open venues on Solana (Raydium, Orca Whirlpool, Meteora, PancakeSwap, Pump.fun, Manifest, SolFi, GoonFi and many more, including stake-pool routes for liquid staking tokens). Some private market makers only accept calls from routers they have approved; Route does not route through them until they approve the Route program, so every quote is one Route can execute.GET /solana/health returns ok, ready, the current slot and chain_clock_lag_s (seconds behind wall time).