{"openapi":"3.1.0","info":{"title":"Sudoku API","version":"1.0.0","description":"Generate, solve and validate Sudoku puzzles through a fast, fully-local API. Create fresh puzzles at four difficulty levels (easy, medium, hard, expert), each guaranteed to have exactly one solution, returned as both an 81-character string and a 9x9 grid alongside the full solution. Solve any valid puzzle with a backtracking engine that also reports whether the solution is unique, and validate a grid to detect rule conflicts and completeness. Inputs accept an 81-character string (0 or . for blanks) or a 9x9 array, by GET or JSON POST. Pure server-side compute with no third-party upstream, so responses are instant and the service is always available. Ideal for puzzle apps and games, newspapers and printables, tutors and training-data generation.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/sudoku-api","description":"oanor gateway"}],"tags":[{"name":"Sudoku"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/generate":{"get":{"operationId":"get_v1_generate","tags":["Sudoku"],"summary":"Generate a puzzle","description":"","parameters":[{"name":"difficulty","in":"query","required":false,"description":"easy | medium | hard | expert","schema":{"type":"string"},"example":"medium"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"clues":34,"puzzle":"007000500000700800652800039069050200320070400400069305190000600073040000046080057","solution":"837692514914735862652814739769453281325178496481269375198527643573946128246381957","difficulty":"medium","puzzle_grid":[[0,0,7,0,0,0,5,0,0],[0,0,0,7,0,0,8,0,0],[6,5,2,8,0,0,0,3,9],[0,6,9,0,5,0,2,0,0],[3,2,0,0,7,0,4,0,0],[4,0,0,0,6,9,3,0,5],[1,9,0,0,0,0,6,0,0],[0,7,3,0,4,0,0,0,0],[0,4,6,0,8,0,0,5,7]],"solution_grid":[[8,3,7,6,9,2,5,1,4],[9,1,4,7,3,5,8,6,2],[6,5,2,8,1,4,7,3,9],[7,6,9,4,5,3,2,8,1],[3,2,5,1,7,8,4,9,6],[4,8,1,2,6,9,3,7,5],[1,9,8,5,2,7,6,4,3],[5,7,3,9,4,6,1,2,8],[2,4,6,3,8,1,9,5,7]]},"meta":{"timestamp":"2026-05-30T18:17:11.713Z","request_id":"7dd41c57-4e88-4598-a95e-56d9cbc75ae4"},"status":"ok","message":"OK","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/solve":{"get":{"operationId":"get_v1_solve","tags":["Sudoku"],"summary":"Solve a puzzle","description":"","parameters":[{"name":"grid","in":"query","required":true,"description":"81-char string (0/. for blanks) or 9x9 array","schema":{"type":"string"},"example":"530070000600195000098000060800060003400803001700020006060000280000419005000080079"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"solved":true,"unique":true,"solution":"534678912672195348198342567859761423426853791713924856961537284287419635345286179","given_clues":30,"solution_grid":[[5,3,4,6,7,8,9,1,2],[6,7,2,1,9,5,3,4,8],[1,9,8,3,4,2,5,6,7],[8,5,9,7,6,1,4,2,3],[4,2,6,8,5,3,7,9,1],[7,1,3,9,2,4,8,5,6],[9,6,1,5,3,7,2,8,4],[2,8,7,4,1,9,6,3,5],[3,4,5,2,8,6,1,7,9]]},"meta":{"timestamp":"2026-05-30T18:17:11.795Z","request_id":"34f0d438-8bcd-464f-923f-dfc60590a2bc"},"status":"ok","message":"OK","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/validate":{"get":{"operationId":"get_v1_validate","tags":["Sudoku"],"summary":"Validate a grid","description":"","parameters":[{"name":"grid","in":"query","required":true,"description":"81-char string or 9x9 array","schema":{"type":"string"},"example":"530070000600195000098000060800060003400803001700020006060000280000419005000080079"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"valid":true,"complete":false,"conflicts":[],"empty_cells":51,"filled_cells":30},"meta":{"timestamp":"2026-05-30T18:17:11.874Z","request_id":"28528651-bac7-4c9f-a3e0-d34000258b58"},"status":"ok","message":"OK","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":200,"rps_limit":2,"hard_limit":true},{"slug":"basic","name":"Basic","price_cents_month":200,"monthly_call_quota":10000,"rps_limit":5,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":800,"monthly_call_quota":75000,"rps_limit":15,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":2400,"monthly_call_quota":400000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/sudoku-api"}