Skip to content

Plans

Get a firm price for one asset

POST /api/quote races the live venues for one asset in USDG and returns the winning executable quote, plus the intent to sign.

POST /api/quote quotes every live venue (LI.FI, Uniswap V4 and KyberSwap) in parallel for buying or selling one asset in USDG, returns the biggest fill, and includes the typed data the taker signs plus the settlement calls to submit.

POST /api/quote · requires a Privy bearer token. Base URL, rate limits, and error shapes: conventions.

Buy means USDG to the asset token; sell means the asset token to USDG. Quotes are short-lived — fetch one right before you settle, because the typed data in toSign carries its own deadline.

JSON body.

Name Type Required Description
mode "price" | "quote" yes "price" for an indicative amount only; "quote" for a firm quote with the signable Permit2 intent and settlement call.
side "buy" | "sell" yes "buy" sells USDG for the asset; "sell" sells the asset for USDG.
symbol string, 1–12 chars yes The asset ticker, e.g. AAPL. Unknown tickers return 400.
sellAmount string (decimal digits) yes Raw base units of the sell token. On a buy that is USDG (6 decimals), so $25 is "25000000". On a sell it is the 18-decimal asset token.
taker string (address) yes The smart account that will sign and settle.

For mode: "quote" with liquidity available:

Field Type Description
liquidityAvailable boolean true when a firm quote was found. false returns an object with only this field.
buyAmount string Raw base units received (18-decimal asset token on a buy, 6-decimal USDG on a sell).
minBuyAmount string Minimum received after slippage (default 100 bps).
needsAllowance boolean true if the taker must approve the sell token to Permit2 before settling.
permit2 string The Permit2 spender, 0x000000000022D473030F116dDEE9F6B43aC78BA3.
sellToken string The sell token address the quote is priced against.
sellAmount string Echo of the raw sell amount.
toSign object The Permit2 PermitWitnessTransferFrom EIP-712 typed data. Pass it straight to signTypedData.
tx object The settlement call, { to, data, value, signatureOffset }. Splice the taker’s signature into data at signatureOffset, then submit.

mode: "price" responds with { liquidityAvailable, buyAmount } only.

Buy $25 of AAPL:

Terminal window
curl -X POST https://monvera.best/api/quote \
-H "Authorization: Bearer $MONVERA_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"mode": "quote",
"side": "buy",
"symbol": "AAPL",
"sellAmount": "25000000",
"taker": "0x4D2b1c3A5e6F7089aB0cD1e2F3a4B5c6D7e8F901"
}'
{
"liquidityAvailable": true,
"buyAmount": "97640000000000000",
"minBuyAmount": "96663600000000000",
"needsAllowance": false,
"permit2": "0x000000000022D473030F116dDEE9F6B43aC78BA3",
"sellToken": "0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168",
"sellAmount": "25000000",
"toSign": {
"domain": { "name": "Permit2", "chainId": 4663, "verifyingContract": "0x000000000022D473030F116dDEE9F6B43aC78BA3" },
"types": { "PermitWitnessTransferFrom": [] },
"message": { "deadline": "1751990400" }
},
"tx": {
"to": "0x117cc2133c37B721F49dE2A7a74833232B3B4C0C",
"data": "0x...",
"value": "0",
"signatureOffset": 456
}
}

buyAmount is the AAPL token amount (18 decimals); sellToken is USDG.

Status Body When
400 {"error":"Invalid request body."} Schema validation failed: missing field, bad mode/side, non-numeric sellAmount, malformed taker.
400 {"error":"Unknown symbol: XYZ"} The symbol is not in the catalog. Valid tickers: GET /api/market.

{"liquidityAvailable": false} is a 200, not an error: the asset is known but has no firm executable quote right now. Treat it as “cannot trade this leg at the moment” and sign nothing.

© 2026 Aibora · Documentation interface. Original Monvera materials retain their upstream attribution andMIT license.