Plexa /v1/quote — executable swap quote: the realizable fill price at your trade size, not
Plexa /v1/quote — executable swap quote: the realizable fill price at your trade size, not a mid/spot price feed. Returns price impact (bps), worst-case slippage, depth and the per-leg route across Base/Polygon/Arbitrum liquidity, from canonical on-chain quoters. Call it before a swap to see what the fill actually costs. Informational data, not financial advice.
20000 (raw units)
price
49
calls / 30d
3
unique payers
2026-09-17
updated
Provider
api.getplexa.com · discovered, not yet claimed by its owner
Payment (x402 accepts[])
[
{
"scheme": "exact",
"network": "eip155:8453",
"payTo": "0xd993eAfBA87cFfa2ca2CFF5A56EF89034575A7ef",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "20000",
"maxTimeoutSeconds": 300
},
{
"scheme": "exact",
"network": "eip155:137",
"payTo": "0xd993eAfBA87cFfa2ca2CFF5A56EF89034575A7ef",
"asset": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"amount": "20000",
"maxTimeoutSeconds": 300
},
{
"scheme": "exact",
"network": "eip155:42161",
"payTo": "0xd993eAfBA87cFfa2ca2CFF5A56EF89034575A7ef",
"asset": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
"amount": "20000",
"maxTimeoutSeconds": 300
},
{
"scheme": "exact",
"network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
"payTo": "D6FqEyoFvkgGy4PpJjckHc3xRXhzL6mWQ25gz4rkVLor",
"asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"amount": "20000",
"maxTimeoutSeconds": 300
}
]Output schema
{
"bazaar": {
"info": {
"input": {
"body": {
"chain": "base",
"sizeUSD": "5000",
"tokenIn": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"tokenOut": "0x4200000000000000000000000000000000000006"
},
"bodyType": "json",
"method": "POST",
"type": "http"
},
"output": {
"example": {
"confidence": "high",
"depthAtSize": 2.6386839328112384,
"executablePrice": 0.0005277367865622476,
"priceImpactBps": 0,
"route": {
"dex": "univ3",
"legs": [
{
"dex": "univ3",
"feePips": 500,
"pool": "0xd0b53D9277642d899DF5C87A3966A349A798F224",
"venue": "uniswap-v3"
}
]
},
"ts": 1786022127490,
"validUntil": 1786022130490,
"worstCaseSlippageBps": 0
},
"type": "json"
}
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"additionalProperties": false,
"anyOf": [
{
"required": [
"sizeIn"
]
},
{
"required": [
"sizeUSD"
]
}
],
"examples": [
{
"chain": "base",
"sizeUSD": "5000",
"tokenIn": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"tokenOut": "0x4200000000000000000000000000000000000006"
}
],
"properties": {
"chain": {
"description": "Optional, default \"base\". One of: base | polygon | matic | arbitrum | arbitrum-one | arb | eip155:8453 | eip155:137 | eip155:42161 — case-sensitive (see `enum`). This is the chain the QUOTE is computed on; the networks you may PAY on (including Solana) are a separate list in `accepts[]`.",
"enum": [
"base",
"polygon",
"matic",
"arbitrum",
"arbitrum-one",
"arb",
"eip155:8453",
"eip155:137",
"eip155:42161"
],
"type": "string"
},
"sizeIn": {
"description": "Trade size as a human amount of tokenIn, e.g. \"1.5\" for 1.5 WETH. A STRING, not a number. At least one of sizeIn / sizeUSD is required; if BOTH are sent, sizeUSD wins and sizeIn is ignored.",
"maxLength": 78,
"pattern": "^(?:0\\.\\d*[1-9]\\d*|[1-9]\\d*(?:\\.\\d+)?)$",
"type": "string"
},
"sizeUSD": {
"description": "Trade size as a USD notional, e.g. \"5000\". A STRING, not a number; positive, no thousands separator (\"5,000\" is rejected) and no exponent (\"5e3\" is rejected) — see `pattern`. At least one of sizeIn / sizeUSD is required; if BOTH are sent, sizeUSD wins.",
"maxLength": 78,
"pattern": "^(?:0\\.\\d*[1-9]\\d*|[1-9]\\d*(?:\\.\\d+)?)$",
"type": "string"
},
"tokenIn": {
"description": "ERC-20 being SOLD. 0x + 40 hex (see `pattern`) — a symbol like \"USDC\" is rejected with 400.",
"pattern": "^0x[0-9a-fA-F]{40}$",
"type": "string"
},
"tokenOut": {
"description": "ERC-20 being BOUGHT. 0x + 40 hex (see `pattern`) — a symbol like \"WETH\" is rejected with 400.",
"pattern": "^0x[0-9a-fA-F]{40}$",
"type": "string"
}
},
"required": [
"tokenIn",
"tokenOut"
],
"type": "object"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
},
"method": {
"enum": [
"POST"
],
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"properties": {
"confidence": {
"description": "Engine confidence: high | medium | low",
"type": "string"
},
"depthAtSize": {
"description": "Realizable output at the requested size, in human units of tokenOut (NOT USD)",
"type": "number"
},
"executablePrice": {
"description": "REALIZABLE fill price for the full requested size — the price the swap actually executes at after price impact, NOT a mid/spot price feed. This is Plexa's core difference from a price oracle. Units: tokenOut PER tokenIn (for USDC→WETH it is WETH per 1 USDC, a small number — not the reciprocal).",
"type": "number"
},
"priceImpactBps": {
"description": "Price impact at this size, in basis points. Null when no defensible mid exists (P16) — impact is derived from the mid.",
"type": [
"number",
"null"
]
},
"route": {
"description": "Per-leg execution route (dex / pool / fee tier)",
"type": "object"
},
"worstCaseSlippageBps": {
"description": "Worst-case slippage, in basis points. Null when no defensible mid exists (P16).",
"type": [
"number",
"null"
]
}
},
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}
},
"builder-code": {
"info": {
"a": "bc_g9x4yzn7"
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"a": {
"description": "App builder code",
"pattern": "^[a-z0-9_]{1,32}$",
"type": "string"
},
"s": {
"description": "Service builder codes",
"items": {
"pattern": "^[a-z0-9_]{1,32}$",
"type": "string"
},
"type": "array"
},
"w": {
"description": "Wallet builder code",
"pattern": "^[a-z0-9_]{1,32}$",
"type": "string"
}
},
"type": "object"
}
}
}Use it
curl
curl "https://api.getplexa.com/v1/quote" # -> 402 Payment Required, accepts[] lists how to pay # retry with a PAYMENT-SIGNATURE (or PAYMENT header) once paid
JavaScript
const res = await fetch("https://api.getplexa.com/v1/quote");
if (res.status === 402) {
const { accepts } = await res.json();
// pay one of accepts[] via an x402 client, then retry with the payment header
}Python
import httpx
res = httpx.get("https://api.getplexa.com/v1/quote")
if res.status_code == 402:
accepts = res.json()["accepts"]
# pay one of accepts[] via an x402 client, then retry with the payment headerMachine-readable
Everything on this page is also available as clean JSON at /resources/6296.json, and this resource appears in /discovery/resources and /discovery/search.