API de génération de Sudoku

Un point d'accès JSON gratuit qui renvoie un Sudoku à la demande. Sans inscription, sans clé, 60 requêtes par heure et par IP.

Démarrage rapide

Une requête GET. La réponse contient le puzzle et sa solution sous forme de chaînes de 81 caractères, plus la graine utilisée.

curl 'https://api.sudokumountain.com/v1/generate?mode=classic&difficulty=easy'

Points d'accès

GET /v1/generate
Générer un puzzle.
GET /v1/health
Vérification de disponibilité.

Paramètres

mode
Requis. En v1, uniquement `classic`.
difficulty
Requis. easy, medium, hard, expert, master ou extreme.
seed
Optionnel. Entier non négatif jusqu'à 4 294 967 295.

Réponse

Le puzzle et la solution sont des chaînes de 81 caractères, lues de gauche à droite et de haut en bas. Chaque caractère est un chiffre 1–9 ; dans le puzzle, '0' marque une case vide.

{
  "puzzle":     "530070000600195000098000060800060003400803001700020006060000280000419005000080079",
  "solution":   "534678912672195348198342567859761423426853791713924856961537284287419635345286179",
  "mode":       "classic",
  "difficulty": "easy",
  "seed":       1734567890
}
puzzle
Chaîne de 81 caractères. '0' = case vide.
solution
Chaîne de 81 caractères. La solution unique.
mode
Reflète le mode de la requête.
difficulty
Reflète la difficulté de la requête.
seed
La graine utilisée.

JavaScript

const res = await fetch(
  'https://api.sudokumountain.com/v1/generate?mode=classic&difficulty=medium',
);
const puzzle = await res.json();
console.log(puzzle.puzzle);    // 81-char string, '0' = empty
console.log(puzzle.solution); // 81-char string, all 1–9

Python

import urllib.request, json

url = "https://api.sudokumountain.com/v1/generate?mode=classic&difficulty=hard"
with urllib.request.urlopen(url) as r:
    puzzle = json.load(r)

print(puzzle["puzzle"])    # 81-char string, '0' = empty
print(puzzle["solution"]) # 81-char string, all 1–9

curl — health

curl 'https://api.sudokumountain.com/v1/health'

Limites de requête

60 requêtes par heure et par IP. Chaque réponse inclut X-RateLimit-Limit, X-RateLimit-Remaining et X-RateLimit-Reset.

Erreurs

Les erreurs renvoient application/json avec un code `error` et un `message` lisible.

400
invalid-mode, invalid-difficulty ou invalid-seed. Le message décrit le problème.
429
rate-limit-exceeded. Réessayer après le délai en Retry-After.
500
generation-failed. Rare. Réessayer avec une graine différente.
503
rate-limit-unavailable. Le compteur est hors ligne.

Versionnage

v1 est stable. Les changements cassants seront publiés sous v2, v1 reste indéfiniment.

Utilisation

Gratuit pour tout usage. Mention bienvenue mais non requise.

À voir aussi