Get a fresh sudoku puzzle each day with varying difficulty levels, optimized image format, and solution.
GET https://sudoku.freeapi.me/
{
"date": "2025-04-25",
"puzzle_url": "https://sudoku-qr.pluginapi.xyz/image/m9w1poxc3v8z0jt2.png",
"difficulty": "Medium",
"generation_timestamp": 1745540448,
"e_ink_optimized": true,
"solution_url": "https://sudoku-qr.pluginapi.xyz/image/m9w1pn9rtonh27w0.png"
}
https://sudoku.freeapi.me/
All API requests should be made to this endpoint. HTTPS is required for all API calls.
The Sudoku of the Day API accepts GET requests only.
This API does not accept any query parameters. A simple GET request to the base URL will return the current Sudoku of the Day.
# Get the Sudoku of the Day curl https://sudoku.freeapi.me/
// Get the Sudoku of the Day fetch('https://sudoku.freeapi.me/') .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error('Error:', error));
import requests # Get the Sudoku of the Day response = requests.get('https://sudoku.freeapi.me/') data = response.json() print(data)
// Get the Sudoku of the Day $response = file_get_contents('https://sudoku.freeapi.me/'); $data = json_decode($response, true); print_r($data);
The API returns a JSON object containing the Sudoku puzzle of the Day and related details.
{ "date": "2025-04-25", // string | The date (YYYY-MM-DD) for this puzzle "puzzle_url": "https://sudoku-qr...", // string | URL to the puzzle image "difficulty": "Medium", // string | Difficulty level of the puzzle "generation_timestamp": 1745540448, // number | Unix timestamp when created "e_ink_optimized": true, // boolean | Whether optimized for e-ink displays "solution_url": "https://sudoku-qr..." // string | URL to the solution image }
The API may return the following error responses: