Truefill, Execution-price oracle
The price you can actually execute, at your size.
Drag the trade size and watch bid and ask move from $1K to $10M. Every number on this page is live, computed from the exact state of every indexed pool at the latest block, with the route behind it.
- Ladder from $1K to $10M
- Route proof per price
- Exact pool state, no curve fitting
- 14 days of per-minute history
Execution ladder
Live markets
Mid of the executable bid and ask for a $1K trade, in USDC, with the $1K spread and the size each side absorbs within 2% of spot. The wrapped native token leads, then the majors and other markets executable on both sides, stablecoins last. Pick one to drive the ladder, chart and depth below.
Connecting to the live tip…
WETH executable price
Bid and ask for a $1K trade, per published minute.
Depth at 1% and 2%
How large a trade stays within the band, per side.
What Truefill gives you
Priced at the size you trade
Ask for $10K or $10M, buy or sell. You get the amount the production router delivers across the indexed pools at the latest block, and the impact against spot.
Every number is checkable
Each answer carries its block number, block hash and route: the pools, the split between them, and the amount and fee on every leg.
A whole book on one block
Up to 100 quotes in one call, all computed on the same block, so a review of many tokens and sizes is internally consistent. Larger batches run asynchronously.
Your quote token, priced too
Prices are in the chain's quote token, USDC on Base and Sonic. Ask for USDC itself and you get its executable rate into USDT at your size, never an assumed 1.
Backtest with real trading costs
Swap-cost history gives what a trade of your size would have cost, per hour, day or week, against the mid at the same block, split into pool fees and price impact. Pairs are priced on their best route, never above their two legs through the stable.
See execution get worse
Token health compares each token's spot-to-executable gap with its own 24-hour baseline and flags it when it widens past a set multiple.
Our outages are not on your bill
When a call fails on our side (no price engine ready, a compute error, a deadline missed at compute) its request and quotes are refunded to the key and the organization.
How it works
- 01
Exact pool state
Every indexed pool is rebuilt from its on-chain events and checked against the chain with exact equality. No fitted curves, no sampling.
- 02
Routed at your size
The production router finds the best split across pools and hops for the exact amount, on one consistent block.
- 03
Answered with proof
You get the amount out, the price, the impact and the route, with integer amounts as decimal strings so nothing is rounded on the way.
Call it from code
The exact amount out for any pair and amount at the latest block, the price, the impact against spot and the route proof.
GET /api/v1/ext/oracle/quote · 51 CU
Send your key in x-api-key and a compute budget in x-compute-budget-ms (1 to 5000 ms; the example uses 2000).
Example values are illustrative. Token addresses are real Base contracts; amounts are raw integer units as decimal strings.
curl -s "https://llens.abanchev.com/api/v1/ext/oracle/quote?chainId=8453&tokenIn=0x4200000000000000000000000000000000000006&tokenOut=0x833589fcd6edb6e08f4c7c32d4f71b54bda02913&amountIn=10000000000000000000" \
-H "x-api-key: $LL_API_KEY" \
-H "x-compute-budget-ms: 2000"{
"chainId": "8453",
"sequence": "1843207",
"blockNumber": "52914031",
"blockHash": "0x7c1e5f0b9a2d43e8c6f1a0b7d9e2c4f6a8b0d1e3f5a7c9b2d4e6f8a0c2e4b6d8",
"stateDigest": "4b9e0c7f2a1d3e5b8c6a9f0d2e4b7c1a3f5e8d0b2c4a6e9f1d3b5c7a0e2f4d6b",
"blockTimestamp": "1792419821",
"stateAgeMs": 412,
"tokenIn": "0x4200000000000000000000000000000000000006",
"tokenOut": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"amountIn": "10000000000000000000",
"amountOut": "26161734512",
"price": "2616.1734512",
"impactPercent": "0.0857978781",
"spotSource": "canonical-stable-100usd-routing",
"instantaneous": true,
"route": [
{
"tokenIn": "0x4200000000000000000000000000000000000006",
"tokenOut": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"amountIn": "10000000000000000000",
"amountOut": "26161734512",
"feeToken": "0x4200000000000000000000000000000000000006",
"feeAmount": "4600000000000000",
"legs": [
{
"pool": "0xd0b53d9277642d899df5c87a3966a349a798f224",
"deploymentId": 41,
"dex": "Uniswap v3",
"tokenIn": "0x4200000000000000000000000000000000000006",
"tokenOut": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"amountIn": "6000000000000000000",
"amountOut": "15697201234",
"feeToken": "0x4200000000000000000000000000000000000006",
"feeAmount": "3000000000000000",
"shareNumerator": "3",
"shareDenominator": "5"
},
{
"pool": "0xb2cc224c1c9fee385f8ad6a55b4d94e92359dc59",
"deploymentId": 57,
"dex": "Aerodrome Slipstream",
"tokenIn": "0x4200000000000000000000000000000000000006",
"tokenOut": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"amountIn": "4000000000000000000",
"amountOut": "10464533278",
"feeToken": "0x4200000000000000000000000000000000000006",
"feeAmount": "1600000000000000",
"shareNumerator": "2",
"shareDenominator": "5"
}
]
}
]
}Endpoints
Every call returns JSON with the block it was computed on.
- GET/ext/oracle/quoteQuote a trade · 51 CU
- GET/ext/oracle/pricePrice at a USD size · 51 CU
- GET/ext/oracle/depthDepth and ladder · 51 CU
- POST/ext/oracle/batchBatch on one block · 50 CU + 1 CU per item
- POST/ext/oracle/healthToken health · 50 CU + 1 CU per token × size
- GET/ext/oracle/historyMinute history · 50 CU
- POST/ext/oracle/swap-costsSwap-cost history · 50 CU + 1 CU per item × size × side × bucket
- GET/ext/oracle/swap-costs-taskSwap-cost task result · 0 CU
- GET/ext/oracle/referenceReference price · 51 CU
- GET/ext/oracle/assetsAsset inventory · 50 CU
- GET/ext/oracle/batch-resultAsync batch result · 50 CU
- GET/public/oracle/overviewFree: market overview · free, 1 request/s per IP
Plans
- Public
- Builder
- Pro
- Enterprise
The overview, depth ladder and history are free without a key. Keys add every endpoint below.
Pricing on request.
Good to know
- Prices are instantaneous: each reflects pool state at one block.
- Not manipulation-resistant yet. Do not use these values as the only trigger for on-chain liquidations.
- Live on Base and Sonic.
- History covers the last 14 days.
- Swap-cost history samples one block per hour (the first at or after the hour) for anything without stored minutes: 1 sample in an hourly bucket, 24 in a day, 168 in a week. Each row reports its own sample count; with one sample, p50 and p90 equal it.
Other Liquidity Lens products
- Liquidity LensPoolscope, Pool earnings and flow analyticsKnow what every pool of your pair earned, hour by hour, and who traded through it.
- Liquidity LensHeadroom, LP opportunity discoveryFind the pairs where new liquidity would earn more in fees than it gives up to arbitrage.
- Liquidity LensRangefinder, LP range and capital backtestsTest a range or a capital size against the swaps that actually hit the pool, before you deploy.
- Liquidity LensTripwire, Execution and flow alertsHear about a widening execution gap or a shift in a pool's flow, without polling.