{"openapi":"3.1.0","info":{"title":"Keno Simulator Public API","version":"1.0.0","description":"Free keno mathematics over HTTP. Exact odds from BigInt combinatorics, fair draws (crypto or seeded), full session simulation, and published paytable styles with computed RTP. No key, no auth. Please cache responses and keep usage reasonable.","contact":{"url":"https://kenosimulator.com/keno-api/"}},"servers":[{"url":"https://kenosimulator.com"}],"paths":{"/api/v1/odds":{"get":{"summary":"Exact probabilities for a pick count","parameters":[{"name":"spots","in":"query","required":false,"description":"How many numbers are picked, 1 to 20. Defaults to 10.","schema":{"type":"integer","minimum":1,"maximum":20}}],"responses":{"200":{"description":"Exact probability, one-in odds, cumulative at-least probability, and the exact hypergeometric way count (as a string) for every possible hit count."},"400":{"description":"Invalid spots value; the error body includes a hint."}}}},"/api/v1/draw":{"get":{"summary":"Fair keno draws, 20 unique numbers from 80","parameters":[{"name":"count","in":"query","required":false,"description":"Draws to return, 1 to 50. Defaults to 1.","schema":{"type":"integer","minimum":1,"maximum":50}},{"name":"seed","in":"query","required":false,"description":"Optional whole-number seed up to 2^32-1. Seeded responses are deterministic and cacheable; unseeded draws use crypto randomness.","schema":{"type":"integer","minimum":0,"maximum":4294967295}}],"responses":{"200":{"description":"Sorted 20-number draws."},"400":{"description":"Invalid parameter; the error body includes a hint."}}}},"/api/v1/simulate":{"get":{"summary":"Run a full keno session against a published paytable style","parameters":[{"name":"picks","in":"query","required":true,"description":"1 to 10 unique numbers from 1 to 80, comma separated.","schema":{"type":"string","example":"4,8,15,16,23,42"}},{"name":"draws","in":"query","required":false,"description":"Draws to simulate, 1 to 10000. Defaults to 1000.","schema":{"type":"integer","minimum":1,"maximum":10000}},{"name":"bet","in":"query","required":false,"description":"Units wagered per draw. Defaults to 1.","schema":{"type":"integer","minimum":1,"maximum":1000000}},{"name":"paytable","in":"query","required":false,"description":"Paytable style id. One of demo, royale, video, lottery, lounge. Defaults to demo.","schema":{"type":"string","enum":["demo","royale","video","lottery","lounge"]}},{"name":"seed","in":"query","required":false,"description":"Optional seed for exact reproducibility.","schema":{"type":"integer","minimum":0,"maximum":4294967295}}],"responses":{"200":{"description":"Session summary: total wagered, total returned, net, return percent, wins, losses, best hit count, full hit distribution, and the final draw."},"400":{"description":"Invalid parameter; the error body includes a hint."}}}},"/api/v1/paytables":{"get":{"summary":"Every published paytable style with computed RTP","responses":{"200":{"description":"All paytable styles (labeled by style, never attributed to a real casino or lottery) with full payout grids and exact expected return percentages per pick count."}}}}}}