curl -s https://relay-production-f175.up.railway.app/v1/quotes \
-H 'content-type: application/json' -d '{
"chainId": 84532,
"sellToken": "0xe2387F04d3858e7Cb64Ef5Ed6617f9B2fcEEAfa2",
"buyToken": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
"sellAmount": "25000000000000",
"taker": "0xTaker",
"takerProof": { "issuedAt": 1757750400, "signature": "0x…" }
}'
{
"status": "quoted",
"quoteId": "5f1c…", "rfqId": "9a2e…",
"expiresAt": "2026-09-14T12:00:20.000Z",
"chainId": 84532,
"executor": "0x64DcA68A0186c6aa632088fBE90b630e0c9D6b32",
"permit2": "0x000000000022D473030F116dDEE9F6B43aC78BA3",
"sellToken": "0xe2387F04d3858e7Cb64Ef5Ed6617f9B2fcEEAfa2",
"buyToken": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
"sellAmount": "25000000000000",
"resolver": { "address": "0xResolver", "name": "Lagos desk" },
"received": "15508060000",
"fee": { "token": "0x036CbD53842c5426634e7929541eC2318f3dCF7e", "amount": "7754030", "bps": 5, "usd": 7.75 },
"gasFee": { "token": "0x036CbD53842c5426634e7929541eC2318f3dCF7e", "amount": "100000", "usd": 0.1 },
"takerPays": "25000000000000",
"proceeds": "15500205970",
"permit": { "token": "0xe2387F04d3858e7Cb64Ef5Ed6617f9B2fcEEAfa2", "amount": "25000000000000", "nonce": "…", "deadline": "1757750430" },
"auth": { "offersHash": "0x…", "recipient": "0xTaker", "feeToken": "0x036C…", "minOut": "15500205970", "maxGasFee": "100000" },
"offers": [ { "order": "0x…", "sig": "0x…" } ],
"typedData": { "domain": { "name": "Permit2", "chainId": 84532, "verifyingContract": "0x0000…8BA3" }, "types": { "…": [] }, "primaryType": "PermitWitnessTransferFrom", "message": { "…": "…" } },
"band": { "base": "0xe238…", "quote": "0x036C…", "mid": 1612.4, "low": 1598.1, "high": 1627.9, "rate": 1612.05, "deviationBps": -2, "outside": false, "sources": 5, "at": 1757750400123 },
"latencyMs": 812,
"alternatives": [ { "resolver": { "address": "0xOther", "name": "node-bravo" }, "received": "15490000000" } ],
"declines": [],
"rejected": []
}
{
"status": "no_quote",
"rfqId": "9a2e…",
"reason": "all_declined",
"eligible": 2,
"declines": [
{ "resolver": "0xResolver", "name": "Lagos desk", "reason": "ticket_cap" },
{ "resolver": "0xOther", "name": "node-bravo", "reason": "inventory_floor" }
],
"rejected": [],
"latencyMs": 1503
}
Swaps
Request a quote
Run an RFQ across every online resolver and get a firm quote with the terms to sign.
POST
/
v1
/
quotes
curl -s https://relay-production-f175.up.railway.app/v1/quotes \
-H 'content-type: application/json' -d '{
"chainId": 84532,
"sellToken": "0xe2387F04d3858e7Cb64Ef5Ed6617f9B2fcEEAfa2",
"buyToken": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
"sellAmount": "25000000000000",
"taker": "0xTaker",
"takerProof": { "issuedAt": 1757750400, "signature": "0x…" }
}'
{
"status": "quoted",
"quoteId": "5f1c…", "rfqId": "9a2e…",
"expiresAt": "2026-09-14T12:00:20.000Z",
"chainId": 84532,
"executor": "0x64DcA68A0186c6aa632088fBE90b630e0c9D6b32",
"permit2": "0x000000000022D473030F116dDEE9F6B43aC78BA3",
"sellToken": "0xe2387F04d3858e7Cb64Ef5Ed6617f9B2fcEEAfa2",
"buyToken": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
"sellAmount": "25000000000000",
"resolver": { "address": "0xResolver", "name": "Lagos desk" },
"received": "15508060000",
"fee": { "token": "0x036CbD53842c5426634e7929541eC2318f3dCF7e", "amount": "7754030", "bps": 5, "usd": 7.75 },
"gasFee": { "token": "0x036CbD53842c5426634e7929541eC2318f3dCF7e", "amount": "100000", "usd": 0.1 },
"takerPays": "25000000000000",
"proceeds": "15500205970",
"permit": { "token": "0xe2387F04d3858e7Cb64Ef5Ed6617f9B2fcEEAfa2", "amount": "25000000000000", "nonce": "…", "deadline": "1757750430" },
"auth": { "offersHash": "0x…", "recipient": "0xTaker", "feeToken": "0x036C…", "minOut": "15500205970", "maxGasFee": "100000" },
"offers": [ { "order": "0x…", "sig": "0x…" } ],
"typedData": { "domain": { "name": "Permit2", "chainId": 84532, "verifyingContract": "0x0000…8BA3" }, "types": { "…": [] }, "primaryType": "PermitWitnessTransferFrom", "message": { "…": "…" } },
"band": { "base": "0xe238…", "quote": "0x036C…", "mid": 1612.4, "low": 1598.1, "high": 1627.9, "rate": 1612.05, "deviationBps": -2, "outside": false, "sources": 5, "at": 1757750400123 },
"latencyMs": 812,
"alternatives": [ { "resolver": { "address": "0xOther", "name": "node-bravo" }, "received": "15490000000" } ],
"declines": [],
"rejected": []
}
{
"status": "no_quote",
"rfqId": "9a2e…",
"reason": "all_declined",
"eligible": 2,
"declines": [
{ "resolver": "0xResolver", "name": "Lagos desk", "reason": "ticket_cap" },
{ "resolver": "0xOther", "name": "node-bravo", "reason": "inventory_floor" }
],
"rejected": [],
"latencyMs": 1503
}
The relay broadcasts the request to every eligible node, collects offers for the RFQ window, validates and
ranks them, simulates the best, and returns it as a firm quote. A quote is open for 20 seconds.
number
The chain. Defaults to the primary EVM chain. Solana chains take the Solana shape.
address
required
The token the taker sells.
address
required
The token the taker buys.
string
required
Base units of
sellToken.address
required
The wallet that will sign.
address
Where proceeds go. Defaults to
taker. Must equal taker on Solana.object
address[]
Up to 10. Not with
preferredLiquidityWallets.Response when quoted
'quoted'
string
Use it to execute and to follow the lifecycle.
string
string
When the quote closes.
number
address
The contract the keeper calls.
address
address
address
string
object
{ address, name } of the winner.string
What the resolver pays out, before fees.
object
{ token, amount, bps, usd }: the protocol fee line.object
{ token, amount, usd }: what the taker repays the keeper.string
Sell token the taker spends, including the fee lines when they are charged in it.
string
Buy token the taker keeps, net of the fee lines when they are charged in it.
object
{ token, amount, nonce, deadline }: the Permit2 transfer the taker authorizes.object
{ offersHash, recipient, feeToken, minOut, maxGasFee }: the TakerAuth witness.object[]
The winning offer(s) as the executor receives them.
object
EIP-712 typed data for
eth_signTypedData_v4: Permit2’s PermitWitnessTransferFrom with the TakerAuth witness.object | null
{ base, quote, mid, low, high, rate, deviationBps, outside, sources, at }: the oracle band at quote time and where this price sits in it.number
object[]
{ resolver: { address, name }, received } for each other valid offer, best first.object[]
{ resolver, name, reason } per node that declined.object[]
{ resolver, name, reason } per offer that failed validation.Response when not quoted
'no_quote'
string
string
below_minimum, insufficient_balance, no_resolvers, steering_excluded_all, no_replies, all_declined, no_valid_offers or paused.number
Nodes the RFQ went to.
object[]
object[]
string
On
below_minimum.string
On
insufficient_balance: what the taker holds.string
On
insufficient_balance: the largest amount the taker can swap.number
Errors
400 invalid_request, wrong_chain, same_token, unsupported_token, zero_amount, invalid_steering;
401 taker proof refusals; 429 rate_limited, too_many_outstanding_rfqs. See Errors.
curl -s https://relay-production-f175.up.railway.app/v1/quotes \
-H 'content-type: application/json' -d '{
"chainId": 84532,
"sellToken": "0xe2387F04d3858e7Cb64Ef5Ed6617f9B2fcEEAfa2",
"buyToken": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
"sellAmount": "25000000000000",
"taker": "0xTaker",
"takerProof": { "issuedAt": 1757750400, "signature": "0x…" }
}'
{
"status": "quoted",
"quoteId": "5f1c…", "rfqId": "9a2e…",
"expiresAt": "2026-09-14T12:00:20.000Z",
"chainId": 84532,
"executor": "0x64DcA68A0186c6aa632088fBE90b630e0c9D6b32",
"permit2": "0x000000000022D473030F116dDEE9F6B43aC78BA3",
"sellToken": "0xe2387F04d3858e7Cb64Ef5Ed6617f9B2fcEEAfa2",
"buyToken": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
"sellAmount": "25000000000000",
"resolver": { "address": "0xResolver", "name": "Lagos desk" },
"received": "15508060000",
"fee": { "token": "0x036CbD53842c5426634e7929541eC2318f3dCF7e", "amount": "7754030", "bps": 5, "usd": 7.75 },
"gasFee": { "token": "0x036CbD53842c5426634e7929541eC2318f3dCF7e", "amount": "100000", "usd": 0.1 },
"takerPays": "25000000000000",
"proceeds": "15500205970",
"permit": { "token": "0xe2387F04d3858e7Cb64Ef5Ed6617f9B2fcEEAfa2", "amount": "25000000000000", "nonce": "…", "deadline": "1757750430" },
"auth": { "offersHash": "0x…", "recipient": "0xTaker", "feeToken": "0x036C…", "minOut": "15500205970", "maxGasFee": "100000" },
"offers": [ { "order": "0x…", "sig": "0x…" } ],
"typedData": { "domain": { "name": "Permit2", "chainId": 84532, "verifyingContract": "0x0000…8BA3" }, "types": { "…": [] }, "primaryType": "PermitWitnessTransferFrom", "message": { "…": "…" } },
"band": { "base": "0xe238…", "quote": "0x036C…", "mid": 1612.4, "low": 1598.1, "high": 1627.9, "rate": 1612.05, "deviationBps": -2, "outside": false, "sources": 5, "at": 1757750400123 },
"latencyMs": 812,
"alternatives": [ { "resolver": { "address": "0xOther", "name": "node-bravo" }, "received": "15490000000" } ],
"declines": [],
"rejected": []
}
{
"status": "no_quote",
"rfqId": "9a2e…",
"reason": "all_declined",
"eligible": 2,
"declines": [
{ "resolver": "0xResolver", "name": "Lagos desk", "reason": "ticket_cap" },
{ "resolver": "0xOther", "name": "node-bravo", "reason": "inventory_floor" }
],
"rejected": [],
"latencyMs": 1503
}

