Read the table with your own code.
Everything on this page is open: no key, no sign-up, from any site or script. It only answers questions. Nothing here can place a bet or move money.
This is the free table: its rounds are played with test money on Solana’s devnet. The real table answers the same questions at roulana.com.
Past rounds
The newest rounds first, fifty a page. limit asks for 1 to 100; before gives the rounds below a round’s number, so pass the answer’s next to get the page after. next is null on the last page.
curl "https://test.roulana.com/api/rounds?limit=1"{
"rounds": [
{"round":9620,"number":31,"color":"black","at":1791169322593,"proof":"7jP57wRrJbYu4gCXGSSoRxA44D6PV39Shzp7nsNfpKf9"}
],
"next": 9620
}round- The round’s number at this table. They count up by one.
number- The winning number, 0 to 36.
color- red, black or green.
at- When the round opened, in milliseconds since 1970 (UTC).
proof- The round’s own account on Solana, when there was money on the round. With it anyone can check the round. null for a round nobody bet on.
One round
Ask for a round by its number. The answer adds verify, the link that checks the round on Solana in one click.
curl https://test.roulana.com/api/rounds/9620{
"round": 9620,
"number": 31,
"color": "black",
"at": 1791169322593,
"proof": "7jP57wRrJbYu4gCXGSSoRxA44D6PV39Shzp7nsNfpKf9",
"verify": "https://test.roulana.com/verify?round=7jP57wRrJbYu4gCXGSSoRxA44D6PV39Shzp7nsNfpKf9"
}The live line
Connect once and the table tells you each result as it happens, so nothing has to ask in a loop. It is a plain event stream (Server-Sent Events): every browser and every language reads it.
const table = new EventSource("https://test.roulana.com/api/live");
table.addEventListener("result", (e) => {
const r = JSON.parse(e.data);
console.log(r.round, r.number, r.color);
});curl -N https://test.roulana.com/api/livenow- Sent once as the line opens: the round that is running, its phase, and when the phase ends.
phase- Each time the table moves on: betting, closing (no more bets), spinning, result, and idle while the table waits for the next round. endsAt is the moment the phase ends, in milliseconds since 1970 (UTC), or null.
result- The winning number, the moment the ball rests: round, number, color, proof and the link that checks it.
If the line drops, connect again and read /api/rounds for anything you missed.
The table, the bank and the coin
/api/history- The rounds with money on them, newest first: each player’s bets and what they were paid. Add ?wallet=<address> for one wallet with its totals; before and limit (1 to 50) page through.
/api/stats- The table now (the round, its phase, who is there), the last twelve results, today’s totals and the biggest wins of the week.
/api/bank- The bank, read from Solana: its size, the value of a share, the limit a round may win, the fee paid so far and its history.
/api/coin- The $ROULANA coin: its address and live numbers. null until the coin is out.
/api/buyback- The buyback’s public record: what was bought, burned and sent to prizes. null until the first buy.
/api/prizes- The prizes’ public record: each day’s winners and the Hall of Fame. null until the first day.
Check a round yourself
Every round with money on it is drawn and paid on Solana, so its proof is all you need: check it in one click, run verify-round.py on your own computer (it talks only to Solana), or follow the formula by hand. The program’s source is on GitHub.
The rules of the feed
- Five questions a second from one address, twenty at once, and three live lines. Past that the answer is 429 with a Retry-After header: wait and ask again.
- These answers keep their shape. New fields may be added; the ones described here do not change or disappear.
- A round appears once it is dealt, never before the ball rests.
- This feed is for reading. Bets are placed at the table, from your own wallet.