Developers · Public API

The model, as JSON.

The pages on this site draw from five read-only endpoints. They are free, need no key and send CORS headers. Responses are cached at the edge for a few seconds; every one carries stale: true when the chain could not be read and the last good answer is served instead.

GET/api/fills?limit=40&symbol=TSLAedge cache 2 s

The newest confirmed Swap events in the 128 stock-token pools, newest first. limit 1 to 100. symbol filters to one stock token (from the newest 100). Each fill: block, log index, transaction, pool, side from the taker's view (buy when the pool paid out stock), stock and quote amounts, fill price and USD notional, sender and recipient, timestamp, confirmations and a Blockscout proof link.


          
GET/api/houredge cache 30 s

The last hour of fills, added up: volume in USD, buy volume, fills, distinct transactions and recipients, and the same per stock token. The window is measured in blocks from the chain's own pace over the last 100,000 blocks, and its first and last block timestamps are returned so you can check it.


          
GET/api/worldedge cache 10 s

Every stock token with its pools: mid price in USD from slot0, depth from both real balances, whether the pool is live (both sides at least $200 and liquidity active at the price), and the token's consensus: the depth-weighted mid of its live pools, with the spread between them in basis points.


          
GET/api/probeedge cache 20 s

Three fixed route probes, priced on QuoterV2 across every candidate venue (direct pools and two-hop routes through the WETH/USDG 0.01% pool): output, gas estimate, cost against the consensus mid, and how far each venue was from the best.


          
GET/api/healthedge cache 3 s

Chain id reported by the node and whether it is 4663, the head block, its timestamp and base fee, and the round trip to the node.


          
POST/api/rpcno cache

A read-only JSON-RPC proxy to Robinhood Chain for browsers (the public node sends no CORS headers). At most 5 calls per batch. Every write method is refused: wallets broadcast their own transactions.

Contracts

Thorios has no contract of its own. These are the Robinhood Chain contracts it reads and routes through.

Examples

The last five fills, from a shell

curl -s 'https://th90.si/api/fills?limit=5' | jq '.fills[] | {symbol, side, notionalUsd, proof}'

Consensus prices in the browser

const { stocks } = await fetch('https://th90.si/api/world').then((r) => r.json());
for (const s of stocks) console.log(s.symbol, s.priceUsd, s.livePools + '/' + s.pools.length, 'pools');

Read fills yourself, straight from the chain

// eth_getLogs over the pools in /api/world, Swap topic
const SWAP = '0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67';
// amount0 and amount1 are int256 from the pool's side: negative means the pool paid it out.