{"openapi":"3.0.3","info":{"title":"BetTip Draws API","version":"1.0.0","description":"Free JSON and CSV feed of UK49s (5799 draws since 2018-09-01), Gosloto and South African National Lottery results. No key. Attribution: BetTip, https://bettip.co.za/","contact":{"name":"BetTip","url":"https://bettip.co.za/api/"},"license":{"name":"CC BY 4.0 (data), MIT (code)"}},"servers":[{"url":"https://bettip.co.za/api/v1"}],"paths":{"/gosloto/next.json":{"get":{"summary":"Next scheduled draw per game, with estimates and unavailable times labelled","parameters":[{"name":"game","in":"query","required":false,"schema":{"type":"string"},"description":"Optional game slug within this family"}],"responses":{"200":{"description":"Computed timetable, not confirmation of result publication","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FamilyNext"}}}},"404":{"description":"Unknown game"}}}},"/lotto/next.json":{"get":{"summary":"Next scheduled draw per game, with estimates and unavailable times labelled","parameters":[{"name":"game","in":"query","required":false,"schema":{"type":"string"},"description":"Optional game slug within this family"}],"responses":{"200":{"description":"Computed timetable, not confirmation of result publication","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FamilyNext"}}}},"404":{"description":"Unknown game"}}}},"/world/next.json":{"get":{"summary":"Next scheduled draw per game, with estimates and unavailable times labelled","parameters":[{"name":"game","in":"query","required":false,"schema":{"type":"string"},"description":"Optional game slug within this family"}],"responses":{"200":{"description":"Computed timetable, not confirmation of result publication","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FamilyNext"}}}},"404":{"description":"Unknown game"}}}},"/uk49s/latest.json":{"get":{"summary":"Latest UK49s result per draw and the last eight overall","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"api":{"type":"string"},"version":{"type":"string"},"docs":{"type":"string"},"attribution":{"type":"string"},"licence":{"type":"string"},"builtAt":{"type":"string","format":"date-time"},"resource":{"type":"string","example":"uk49s/latest"},"data":{"$ref":"#/components/schemas/Uk49sLatest"}}}}}}}}},"/uk49s/next.json":{"get":{"summary":"The next UK49s draw, computed live","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Next"}}}}}}},"/uk49s/schedule.json":{"get":{"summary":"Draw times and the summer/winter rule","responses":{"200":{"description":"OK"}}}},"/uk49s/draws.json":{"get":{"summary":"Every UK49s draw, oldest first","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"api":{"type":"string"},"version":{"type":"string"},"docs":{"type":"string"},"attribution":{"type":"string"},"licence":{"type":"string"},"builtAt":{"type":"string","format":"date-time"},"resource":{"type":"string","example":"uk49s/draws"},"data":{"$ref":"#/components/schemas/Uk49sDraws"}}}}}}}}},"/uk49s/draws.csv":{"get":{"summary":"Every UK49s draw as CSV","responses":{"200":{"description":"OK","content":{"text/csv":{}}}}}},"/uk49s/{year}.json":{"get":{"summary":"One year of UK49s draws","parameters":[{"name":"year","in":"path","required":true,"schema":{"type":"string","example":"2026"}}],"responses":{"200":{"description":"OK"},"404":{"description":"No such year"}}}},"/uk49s/draws/{date}.json":{"get":{"summary":"Both UK49s draws on one date","parameters":[{"name":"date","in":"path","required":true,"schema":{"type":"string","format":"date","example":"2026-09-06"}}],"responses":{"200":{"description":"OK"},"404":{"description":"No draws on that date"}}}},"/gosloto/latest.json":{"get":{"summary":"Latest Gosloto result per format","responses":{"200":{"description":"OK"}}}},"/gosloto/draws.json":{"get":{"summary":"Every Gosloto draw on record","responses":{"200":{"description":"OK"}}}},"/gosloto/draws.csv":{"get":{"summary":"Gosloto draws as CSV","responses":{"200":{"description":"OK","content":{"text/csv":{}}}}}},"/lotto/latest.json":{"get":{"summary":"Latest SA National Lottery result per game","responses":{"200":{"description":"OK"}}}},"/lotto/draws.json":{"get":{"summary":"Every SA National Lottery draw on record","responses":{"200":{"description":"OK"}}}},"/lotto/draws.csv":{"get":{"summary":"SA National Lottery draws as CSV","responses":{"200":{"description":"OK","content":{"text/csv":{}}}}}},"/lotto/payouts.json":{"get":{"summary":"Prize divisions per game and draw","responses":{"200":{"description":"OK"}}}},"/world/latest.json":{"get":{"summary":"Latest result per international game","responses":{"200":{"description":"OK"}}}},"/world/draws.json":{"get":{"summary":"International draws on record","responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"ScheduleGame":{"type":"object","properties":{"game":{"type":"string"},"name":{"type":"string"},"scheduleStatus":{"type":"string","enum":["site","observed","official","official-approximate","pending"]},"estimated":{"type":"boolean"},"note":{"type":"string"},"source":{"type":"string","nullable":true},"checkedAt":{"type":"string","nullable":true},"next":{"type":"object","nullable":true,"properties":{"atUtc":{"type":"string","format":"date-time"},"dateSast":{"type":"string","format":"date"},"atSast":{"type":"string"},"secondsToGo":{"type":"integer","minimum":1}}}}},"FamilyNext":{"type":"object","properties":{"computedAt":{"type":"string","format":"date-time"},"data":{"type":"object","properties":{"byGame":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/ScheduleGame"}},"next":{"type":"object","nullable":true,"allOf":[{"$ref":"#/components/schemas/ScheduleGame"}]}}}}},"Uk49sDraw":{"type":"object","properties":{"date":{"type":"string","format":"date"},"draw":{"type":"string","enum":["brunchtime","lunchtime","drivetime","teatime"]},"numbers":{"type":"array","items":{"type":"integer","minimum":1,"maximum":49},"minItems":6,"maxItems":6},"booster":{"type":"integer","nullable":true},"official":{"type":"boolean"}}},"Uk49sDraws":{"type":"array","items":{"$ref":"#/components/schemas/Uk49sDraw"}},"Uk49sLatest":{"type":"object","properties":{"byDraw":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/Uk49sDraw"}},"recent":{"$ref":"#/components/schemas/Uk49sDraws"}}},"Next":{"type":"object","properties":{"computedAt":{"type":"string","format":"date-time"},"data":{"type":"object","properties":{"draw":{"type":"string"},"label":{"type":"string"},"atUtc":{"type":"string","format":"date-time"},"atSast":{"type":"string","example":"18:49"},"secondsToGo":{"type":"integer"},"today":{"type":"array","items":{"type":"object"}}}}}}}}}