Aller au contenu
API développeur

Crée des activités depuis ton propre système

Un POST par type d'activité. Envoie ton contenu en JSON et récupère une activité dans ton compte Puzzel.org, avec une URL à donner aux joueurs ou à glisser dans une iframe.

URL de base
https://puzzel.org/api/public/v1
Auth
Clé + e-mail dans le corps
Points de terminaison
38 types d'activités
Quota
10 activités par jour

Ta première requête

Rien à installer. Envoie une requête POST avec ta clé API, ton adresse e-mail et ton contenu dans le corps JSON. La réponse contient la clé de l'activité et son URL de jeu.

POST crossword
curl -X POST https://puzzel.org/api/public/v1/crossword \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Crossword",
  "language": "fr",
  "items": [
    {
      "answer": "BANANA",
      "description": "A long yellow fruit",
      "type": "text"
    },
    {
      "answer": "CHERRY",
      "description": "A small red stone fruit",
      "type": "text"
    },
    {
      "answer": "MELON",
      "description": "Big, green outside, sweet inside",
      "type": "text"
    }
  ]
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/crossword/embed?p=-Nq8sample_activity_key",
  "message": "Crossword created successfully"
}

Chaque exemple de cette page est une requête complète et exécutable. Remplace la clé et le contenu par les tiens et ça fonctionne tel quel.

Authentification

Aucun en-tête d'authentification ni jeton Bearer n'est nécessaire. La clé API et l'adresse e-mail figurent dans le corps JSON de chaque requête. Elles doivent correspondre au même compte.

ChampTypeRôle
account_api_key
obligatoire
string
stringLa clé API de ton compte. Elle va dans le corps, pas dans un en-tête.
email
obligatoire
string
stringL'adresse avec laquelle ton compte Puzzel.org se connecte. La clé n'est valide qu'avec elle.

Ta clé se trouve dans la section compte de ton tableau de bord, derrière Afficher.

Se connecter

Les clés API sont délivrées au démarrage d'un abonnement : un compte gratuit n'en a donc pas encore.

Voir les formules

Traite la clé comme un mot de passe. Elle crée et écrase des activités dans ton compte : garde-la côté serveur, hors de portée de tout ce qu'un navigateur peut lire.

Le corps de la requête

Tous les points de terminaison utilisent les cinq mêmes champs communs. Les champs de contenu varient selon l'activité : généralement un tableau d'éléments, parfois une phrase ou une image. Le sudoku ne nécessite aucun contenu supplémentaire.

ChampTypeRôle
account_api_key
obligatoire
string
stringLa clé API de ton compte. Elle va dans le corps, pas dans un en-tête.
email
obligatoire
string
stringL'adresse avec laquelle ton compte Puzzel.org se connecte. La clé n'est valide qu'avec elle.
title
facultatif
string
stringLe nom de l'activité dans ton tableau de bord. Si tu ne renseignes pas ce champ, le point de terminaison utilise son titre par défaut.
language
facultatif
string
stringDétermine seulement la langue dans l'URL renvoyée — rien de ce que tu envoies n'est traduit. Les mots mêlés le lisent aussi pour passer leurs lettres de remplissage à l'arabe quand il vaut "ar".
Par défaut: "en"
activity_key
facultatif
string
stringOmets-le pour créer une nouvelle activité. Passe la clé d'une activité que tu possèdes déjà et c'est celle-ci qui est reconstruite.

settings est un objet d'options propres à chaque point de terminaison. Celles qu'un point de terminaison lit sont listées avec lui ci-dessous ; tout le reste y est ignoré.

Ce qui est renvoyé

Un appel réussi répond 200 avec la clé de la nouvelle activité et l'URL où elle se joue. Tout le reste répond avec success à false et une seule chaîne error.

Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/crossword/embed?p=-Nq8sample_activity_key",
  "message": "Crossword created successfully"
}
Échec
{
  "success": false,
  "error": "Invalid Email or API Key"
}

L'url renvoyée est la vue intégrée. Remplace embed par play pour l'ouvrir en pleine page, ou par build pour l'ouvrir dans l'éditeur — la clé après p= ne change pas.

Créer ou mettre à jour

Envoie activity_key pour mettre à jour une activité existante. Son contenu est remplacé, son nom et son horodatage de version sont actualisés. Sa clé reste identique : les liens et les intégrations déjà partagés continuent de fonctionner. Les résultats, le dossier de rangement et les paramètres que le point de terminaison ne réécrit pas sont conservés.

activity_key
{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "activity_key": "-Nq8sample_activity_key",
  "title": "Fruit crossword, week 2",
  "items": [
    {
      "answer": "BANANA",
      "description": "A long yellow fruit",
      "type": "text"
    },
    {
      "answer": "CHERRY",
      "description": "A small red stone fruit",
      "type": "text"
    },
    {
      "answer": "MELON",
      "description": "Big, green outside, sweet inside",
      "type": "text"
    }
  ]
}
  • title est appliqué à chaque mise à jour. Si tu ne le fournis pas, l'activité est renommée avec le titre par défaut du point de terminaison.
  • Les blocs de paramètres qu'un point de terminaison écrit lui-même sont réécrits de zéro : une mise à jour les ramène donc aux valeurs que tu envoies, ou à celles par défaut du point de terminaison.
  • Tu ne peux mettre à jour que les activités appartenant à ton propre compte. La clé de quelqu'un d'autre répond 403.
  • Une mise à jour coûte autant qu'une création : un appel sur le quota du jour.

Limite de débit

10
10 activités par compte et par jour

Chaque appel réussi compte, créations comme mises à jour. Dépasse la limite et la requête suivante répond 429 jusqu'à la remise à zéro du compteur.

Le compteur est remis à zéro une fois par jour par une tâche planifiée, et non sur une fenêtre glissante de 24 heures.

Erreurs

Les erreurs sont renvoyées en JSON avec les mêmes deux champs. Le champ error contient un message qui précise le champ ou la limite à l'origine du problème.

StatutSignification
400
Bad Request
Quelque chose dans le corps manque, est mal formé ou hors limites. Le message nomme le champ.
401
Unauthorized
L'e-mail est inconnu, ou la clé n'appartient pas à ce compte.
403
Forbidden
Le activity_key que tu as envoyé appartient à un autre compte.
429
Too Many Requests
Le quota du jour est épuisé. Il se réinitialise une fois par jour.
500
Server Error
Le générateur n'a pas pu construire de casse-tête avec ce que tu as envoyé — en général trop peu de mots, ou des mots impossibles à assembler.

Points de terminaison

Un chemin par type d'activité, tous en POST, tous sous la même URL de base. Chacun indique le contenu dont il a besoin, les paramètres qu'il lit et une requête que tu peux exécuter.

Mots et lettres

Mots croisés

Imbrique tes réponses dans une grille et numérote les définitions pour toi.

#
POST /api/public/v1/crossword 2 à 80 dans items
Contenu

Un tableau de mots. Chaque entrée associe la réponse à la définition qui la désigne.

Nom de repli : “Crossword API”

Bon à savoir
  • Les réponses de moins de deux caractères sont écartées avant la construction de la grille, et il faut qu'il en reste au moins deux.
  • Les réponses sont mises en majuscules et le générateur dispose de vingt tentatives pour les placer. S'il n'arrive à placer aucun mot, l'appel répond 500.
Paramètres lus
ChampTypeRôle
hidden_solution
facultatif dans settings
string
stringUn mot bonus facultatif. Ses lettres sont repérées dans des cases de la grille terminée, que les joueurs collectent une fois les mots croisés résolus : chacune de ses lettres doit donc apparaître dans les réponses.
Exemple de requête
POST crossword
curl -X POST https://puzzel.org/api/public/v1/crossword \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Crossword",
  "language": "fr",
  "items": [
    {
      "answer": "BANANA",
      "description": "A long yellow fruit",
      "type": "text"
    },
    {
      "answer": "CHERRY",
      "description": "A small red stone fruit",
      "type": "text"
    },
    {
      "answer": "MELON",
      "description": "Big, green outside, sweet inside",
      "type": "text"
    }
  ]
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/crossword/embed?p=-Nq8sample_activity_key",
  "message": "Crossword created successfully"
}

Mots mêlés

Cache tes mots dans une grille de lettres, dans les directions et la forme de ton choix.

#
POST /api/public/v1/wordseeker 2 à 40 dans items
Contenu

Un tableau de mots. Le texte de la définition devient la liste de mots à partir de laquelle les joueurs travaillent.

Nom de repli : “Wordseeker API”

Bon à savoir
  • Les réponses de moins de deux caractères sont écartées, et chaque réponse est mise en majuscules avant d'entrer dans la grille.
  • La grille est complétée avec des lettres latines, sauf si language vaut "ar", ce qui bascule le remplissage en arabe.
Paramètres lus
ChampTypeRôle
hidden_solution
facultatif dans settings
string
stringLes lettres restantes forment ce texte. Le définir indique aussi au générateur de placer la solution en premier plutôt que de caser un maximum de mots.
directions
facultatif dans settings
string[]
string[]Les sens dans lesquels un mot peut se lire. Omets-le et les mots vont uniquement vers l'est, le sud-est et le sud.
Au choix westeastnorthsouthnorthwestnortheastsouthwestsoutheast
Par défaut: ["east", "southeast", "south"]
template
facultatif dans settings
string
stringDécoupe la grille en une forme au lieu de la laisser carrée.
Au choix squarecirclecrossdiamondpyramidsmileystarcross_plus
Exemple de requête
POST wordseeker
curl -X POST https://puzzel.org/api/public/v1/wordseeker \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Wordseeker",
  "language": "fr",
  "items": [
    {
      "answer": "BANANA",
      "description": "A long yellow fruit",
      "type": "text"
    },
    {
      "answer": "CHERRY",
      "description": "A small red stone fruit",
      "type": "text"
    },
    {
      "answer": "MELON",
      "description": "Big, green outside, sweet inside",
      "type": "text"
    }
  ],
  "settings": {
    "hidden_solution": "FRUIT",
    "directions": [
      "east",
      "south",
      "southeast"
    ],
    "template": "square"
  }
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/wordseeker/embed?p=-Nq8sample_activity_key",
  "message": "Wordseeker created successfully"
}

Acrostiche

Empile tes réponses pour qu'une colonne forme un mot caché.

#
POST /api/public/v1/acrostic 1 à 40 dans items
Contenu

Un tableau de mots. À eux tous, ils doivent fournir chaque lettre du mot caché.

Nom de repli : “Acrostic API”

Bon à savoir
  • Si les réponses ne peuvent pas fournir les lettres dont la solution a besoin, l'appel répond 500 plutôt que d'enregistrer une grille à moitié construite.
  • Le générateur réordonne tes réponses pour que la colonne fonctionne : l'ordre que tu envoies n'est donc pas celui que voient les joueurs.
Paramètres lus
ChampTypeRôle
hidden_solution
obligatoire dans settings
string
stringLe mot que forme la colonne mise en évidence. Ce point de terminaison ne fonctionne pas sans lui.
Exemple de requête
POST acrostic
curl -X POST https://puzzel.org/api/public/v1/acrostic \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Acrostic",
  "language": "fr",
  "items": [
    {
      "answer": "PEACH",
      "description": "Fuzzy skin, sweet flesh",
      "type": "text"
    },
    {
      "answer": "BANANA",
      "description": "A long yellow fruit",
      "type": "text"
    },
    {
      "answer": "CHERRY",
      "description": "A small red stone fruit",
      "type": "text"
    },
    {
      "answer": "MELON",
      "description": "Big, green outside, sweet inside",
      "type": "text"
    }
  ],
  "settings": {
    "hidden_solution": "PLUM"
  }
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/acrostic/embed?p=-Nq8sample_activity_key",
  "message": "Acrostic created successfully"
}

Lettres mélangées

api_e_word_scramble

#
POST /api/public/v1/word-scramble 1 à 40 dans items
Contenu

api_c_word_scramble

Nom de repli : “Word Scramble API”

Bon à savoir
  • Les activités créées via l'API ont toujours le paramètre de mélange de l'ordre activé : l'ordre que tu envoies n'est donc pas celui que reçoivent les joueurs.
Paramètres lus
ChampTypeRôle
hidden_solution
facultatif dans settings
string
stringUn mot bonus facultatif que les joueurs saisissent une fois le reste résolu.
Exemple de requête
POST word-scramble
curl -X POST https://puzzel.org/api/public/v1/word-scramble \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Word Scramble",
  "language": "fr",
  "items": [
    {
      "answer": "BANANA",
      "description": "A long yellow fruit",
      "type": "text"
    },
    {
      "answer": "CHERRY",
      "description": "A small red stone fruit",
      "type": "text"
    },
    {
      "answer": "MELON",
      "description": "Big, green outside, sweet inside",
      "type": "text"
    }
  ],
  "settings": {
    "hidden_solution": "FRUIT"
  }
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/word-scramble/embed?p=-Nq8sample_activity_key",
  "message": "Word Scramble created successfully"
}

Pendu

Transforme tes mots ou expressions en manches où l'on devine lettre par lettre.

#
POST /api/public/v1/hangman 1 à 50 dans items
Contenu

Un tableau de mots ou d'expressions courtes. La définition est l'indice que voient les joueurs.

Nom de repli : “Hangman API”

Exemple de requête
POST hangman
curl -X POST https://puzzel.org/api/public/v1/hangman \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Hangman",
  "language": "fr",
  "items": [
    {
      "answer": "BANANA",
      "description": "A long yellow fruit",
      "type": "text"
    }
  ]
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/hangman/embed?p=-Nq8sample_activity_key",
  "message": "Hangman created successfully"
}

Wordle

Fait un jeu de mot à deviner de chaque mot que tu envoies.

#
POST /api/public/v1/wordle 1 à 50 dans items
Contenu

Un tableau de mots. Les joueurs ont une manche par mot.

Nom de repli : “Wordle API”

Bon à savoir
  • Créé avec le paramètre qui vérifie que les mots proposés existent vraiment. Désactive-le dans l'éditeur si tes mots sont des noms propres ou inventés.
Exemple de requête
POST wordle
curl -X POST https://puzzel.org/api/public/v1/wordle \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Wordle",
  "language": "fr",
  "items": [
    {
      "answer": "MELON",
      "description": "Sweet and green",
      "type": "text"
    },
    {
      "answer": "PEACH",
      "description": "Fuzzy and orange",
      "type": "text"
    }
  ]
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/wordle/embed?p=-Nq8sample_activity_key",
  "message": "Wordle created successfully"
}

Entraînement au clavier

api_e_typing_practice

#
POST /api/public/v1/typing-practice 1 à 50 dans items
Contenu

api_c_typing_practice

Nom de repli : “Typing Practice API”

Exemple de requête
POST typing-practice
curl -X POST https://puzzel.org/api/public/v1/typing-practice \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Typing Practice",
  "language": "fr",
  "items": [
    {
      "answer": "The quick brown fox jumps over the lazy dog",
      "description": "Every letter of the alphabet",
      "type": "text"
    },
    {
      "answer": "Pack my box with five dozen liquor jugs",
      "description": "Another pangram",
      "type": "text"
    }
  ]
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/typing-practice/embed?p=-Nq8sample_activity_key",
  "message": "Typing Practice created successfully"
}

Roue de la fortune

api_e_wheel_of_fortune

#
POST /api/public/v1/wheel-of-fortune 1 à 50 dans items
Contenu

api_c_wheel_of_fortune

Nom de repli : “Wheel of Fortune API”

Bon à savoir
  • Créé avec “afficher le résultat uniquement dans la roue” : le résultat se lit donc sur la roue au lieu d'être annoncé à côté.
Exemple de requête
POST wheel-of-fortune
curl -X POST https://puzzel.org/api/public/v1/wheel-of-fortune \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Wheel of Fortune",
  "language": "fr",
  "items": [
    {
      "answer": "Read a page aloud",
      "description": "Segment 1",
      "type": "text"
    },
    {
      "answer": "Name three fruits",
      "description": "Segment 2",
      "type": "text"
    },
    {
      "answer": "Spell it backwards",
      "description": "Segment 3",
      "type": "text"
    }
  ]
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/wheel-of-fortune/embed?p=-Nq8sample_activity_key",
  "message": "Wheel of Fortune created successfully"
}

Mots fléchés

Des mots fléchés : les définitions sont placées dans la grille, chacune avec une flèche vers sa réponse.

#
POST /api/public/v1/arrowword 2 à 80 dans items
Contenu

Un tableau de mots. Chaque entrée associe la réponse à une définition assez courte pour tenir dans une case.

Nom de repli : “Arrowword API”

Paramètres lus
ChampTypeRôle
hidden_solution
facultatif dans settings
string
stringUn mot bonus facultatif. Ses lettres sont repérées dans des cases de la grille terminée : chacune de ses lettres doit donc apparaître dans les réponses.
Exemple de requête
POST arrowword
curl -X POST https://puzzel.org/api/public/v1/arrowword \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Arrowword",
  "language": "fr",
  "items": [
    {
      "answer": "Stockholm",
      "description": "Capital of Sweden",
      "type": "text"
    },
    {
      "answer": "Oslo",
      "description": "Capital of Norway",
      "type": "text"
    },
    {
      "answer": "Helsinki",
      "description": "Capital of Finland",
      "type": "text"
    }
  ],
  "settings": {
    "hidden_solution": "North"
  }
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/arrowword/embed?p=-Nq8sample_activity_key",
  "message": "Arrowword created successfully"
}

Strands

Une grille où chaque lettre appartient à un mot du thème, avec un mot qui nomme le thème et traverse la grille d'un bord à l'autre.

#
POST /api/public/v1/strands 2 à 24 dans items
Contenu

Un tableau de mots du thème. Avec le spangram, leurs lettres doivent remplir exactement une grille.

Nom de repli : “Strands API”

Bon à savoir
  • Les lettres de tous les mots et du spangram réunis doivent faire exactement 30, 35, 36, 40, 42, 45, 48, 49, 50, 54, 56, 60, 63, 64, 70, 72 ou 80. Tout autre total répond 400 et indique combien de lettres ajouter ou retirer.
Paramètres lus
ChampTypeRôle
theme
facultatif dans settings
string
stringL'énigme affichée au-dessus de la grille. Si tu l'omets, les joueurs voient le titre.
spangram
facultatif dans settings
string
stringLe mot ou l'expression qui nomme le thème et traverse la grille d'un bord à l'autre.
Exemple de requête
POST strands
curl -X POST https://puzzel.org/api/public/v1/strands \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Strands",
  "language": "fr",
  "items": [
    {
      "answer": "whisk",
      "type": "text"
    },
    {
      "answer": "ladle",
      "type": "text"
    },
    {
      "answer": "spatula",
      "type": "text"
    },
    {
      "answer": "grater",
      "type": "text"
    },
    {
      "answer": "peeler",
      "type": "text"
    },
    {
      "answer": "skillet",
      "type": "text"
    }
  ],
  "settings": {
    "theme": "What the cook reaches for",
    "spangram": "Kitchen tools"
  }
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/strands/embed?p=-Nq8sample_activity_key",
  "message": "Strands created successfully"
}

Rappel de liste

api_e_name_them_all

#
POST /api/public/v1/name-them-all 1 à 250 dans items
Contenu

api_c_name_them_all

Nom de repli : “Name Them All API”

Bon à savoir
  • Une entrée est un objet avec answer, et facultativement aliases (d'autres graphies qui comptent), description (l'indice) et group. Les majuscules, les accents et la ponctuation sont ignorés quand un nom est vérifié.
Paramètres lus
ChampTypeRôle
list_match_mode
facultatif dans settings
string
stringSi un nom compte dès qu'il est saisi, ou seulement avec Entrée.
Au choix while_typingon_enter
Par défaut: "while_typing"
list_slot_hint
facultatif dans settings
string
stringCe que révèle un emplacement vide : rien, la longueur du nom, sa première lettre, ou l'indice que tu as écrit.
Au choix nonelengthfirst_letterhint
Par défaut: "none"
list_arrange
facultatif dans settings
string
stringUne colonne par groupe, ou une seule liste.
Au choix groupsone_list
Par défaut: "groups"
list_allow_give_up
facultatif dans settings
boolean
booleanAffiche un bouton d'abandon qui met fin à la partie et révèle ce qui a été manqué.
Par défaut: false
Exemple de requête
POST name-them-all
curl -X POST https://puzzel.org/api/public/v1/name-them-all \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Name Them All",
  "language": "fr",
  "items": [
    {
      "answer": "United Kingdom",
      "aliases": [
        "UK",
        "Great Britain",
        "Britain"
      ],
      "group": "Islands"
    },
    {
      "answer": "Ireland",
      "aliases": [
        "Éire"
      ],
      "group": "Islands"
    },
    {
      "answer": "Côte d'Azur's neighbour Monaco",
      "aliases": [
        "Monaco"
      ],
      "description": "The smallest one",
      "group": "Mainland"
    }
  ],
  "settings": {
    "list_slot_hint": "first_letter",
    "list_match_mode": "on_enter",
    "list_allow_give_up": true
  }
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/name-them-all/embed?p=-Nq8sample_activity_key",
  "message": "Name them all list created successfully"
}
Cartes et paires

Memory

Des cartes face cachée à retourner pour former des paires.

#
POST /api/public/v1/memory 2 à 30 dans items
Contenu

Un tableau de paires. Chaque paire contient les deux cartes qui vont ensemble.

Nom de repli : “Memory Game API”

Bon à savoir
  • Une carte est un objet avec un champ type et un champ value. Utilise "text" pour des mots, ou "image", "audio", "youtube" ou "link" avec une URL dans value, et ajoute alt pour une description.
Exemple de requête
POST memory
curl -X POST https://puzzel.org/api/public/v1/memory \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Memory Game",
  "language": "fr",
  "items": [
    {
      "cards": [
        {
          "type": "text",
          "value": "Apple"
        },
        {
          "type": "text",
          "value": "A red fruit"
        }
      ]
    },
    {
      "cards": [
        {
          "type": "text",
          "value": "Banana"
        },
        {
          "type": "text",
          "value": "A yellow fruit"
        }
      ]
    }
  ]
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/memory/embed?p=-Nq8sample_activity_key",
  "message": "Memory game created successfully"
}

Jeu d'association

api_e_matching_pairs

#
POST /api/public/v1/matching-pairs 2 à 30 dans items
Contenu

api_c_matching_pairs

Nom de repli : “Matching Game API”

Bon à savoir
  • Une carte est un objet avec un champ type et un champ value. Utilise "text" pour des mots, ou "image", "audio", "youtube" ou "link" avec une URL dans value, et ajoute alt pour une description.
Exemple de requête
POST matching-pairs
curl -X POST https://puzzel.org/api/public/v1/matching-pairs \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Matching Game",
  "language": "fr",
  "items": [
    {
      "cards": [
        {
          "type": "text",
          "value": "Apple"
        },
        {
          "type": "text",
          "value": "A red fruit"
        }
      ]
    },
    {
      "cards": [
        {
          "type": "text",
          "value": "Banana"
        },
        {
          "type": "text",
          "value": "A yellow fruit"
        }
      ]
    }
  ]
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/matching-pairs/embed?p=-Nq8sample_activity_key",
  "message": "Matching pairs game created successfully"
}

Cartes de révision

api_e_flash_cards

#
POST /api/public/v1/flash-cards 1 à 150 dans items
Contenu

api_c_flash_cards

Nom de repli : “Flash Cards API”

Bon à savoir
  • Le point de terminaison enregistre autant de cartes que tu en envoies : envoie-en donc exactement deux par entrée — le recto, puis le verso.
  • Une carte est un objet avec un champ type et un champ value. Utilise "text" pour des mots, ou "image", "audio", "youtube" ou "link" avec une URL dans value, et ajoute alt pour une description.
Exemple de requête
POST flash-cards
curl -X POST https://puzzel.org/api/public/v1/flash-cards \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Flash Cards",
  "language": "fr",
  "items": [
    {
      "cards": [
        {
          "type": "text",
          "value": "Apple"
        },
        {
          "type": "text",
          "value": "A red fruit"
        }
      ]
    },
    {
      "cards": [
        {
          "type": "text",
          "value": "Banana"
        },
        {
          "type": "text",
          "value": "A yellow fruit"
        }
      ]
    }
  ]
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/flash-cards/embed?p=-Nq8sample_activity_key",
  "message": "Flash Cards created successfully"
}

Tri par catégories

Des cartes à trier dans la catégorie à laquelle elles appartiennent.

#
POST /api/public/v1/categorize Au moins 2 dans items · Au plus 60 cartes au total
Contenu

Un tableau de catégories, chacune avec un nom et les cartes qui lui appartiennent.

Nom de repli : “Categorize Game API”

Bon à savoir
  • Une catégorie envoyée sans nom est enregistrée sous “Untitled Category” : envoie-en donc toujours un.
  • Une carte est un objet avec un champ type et un champ value. Utilise "text" pour des mots, ou "image", "audio", "youtube" ou "link" avec une URL dans value, et ajoute alt pour une description.
Exemple de requête
POST categorize
curl -X POST https://puzzel.org/api/public/v1/categorize \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Categorize Game",
  "language": "fr",
  "items": [
    {
      "name": "Red fruits",
      "cards": [
        {
          "type": "text",
          "value": "Strawberry"
        },
        {
          "type": "text",
          "value": "Cherry"
        }
      ]
    },
    {
      "name": "Yellow fruits",
      "cards": [
        {
          "type": "text",
          "value": "Banana"
        },
        {
          "type": "text",
          "value": "Lemon"
        }
      ]
    }
  ]
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/categorize/embed?p=-Nq8sample_activity_key",
  "message": "Categorize game created successfully"
}

Remise en ordre

Une séquence que les joueurs doivent remettre dans l'ordre.

#
POST /api/public/v1/reorder Au moins 1 dans items · Au plus 60 cartes au total
Contenu

Un tableau de séquences. Chacune contient ses cartes dans le bon ordre.

Nom de repli : “Reorder Game API”

Bon à savoir
  • L'ordre que tu envoies est enregistré comme l'ordre correct — le numéro un en premier.
  • Une carte est un objet avec un champ type et un champ value. Utilise "text" pour des mots, ou "image", "audio", "youtube" ou "link" avec une URL dans value, et ajoute alt pour une description.
Exemple de requête
POST reorder
curl -X POST https://puzzel.org/api/public/v1/reorder \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Reorder Game",
  "language": "fr",
  "items": [
    {
      "name": "From seed to fruit",
      "cards": [
        {
          "type": "text",
          "value": "Plant the seed"
        },
        {
          "type": "text",
          "value": "Water it"
        },
        {
          "type": "text",
          "value": "Watch it grow"
        },
        {
          "type": "text",
          "value": "Pick the fruit"
        }
      ]
    }
  ]
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/reorder/embed?p=-Nq8sample_activity_key",
  "message": "Reorder game created successfully"
}

Bingo

Un bingo de classe que l'animateur annonce en direct : chaque joueur reçoit une carte tirée de tes items.

#
POST /api/public/v1/bingo Ne prend pas d'items
Contenu

Un tableau d'items dans lesquels les cartes sont tirées. Envoie nettement plus d'items qu'une carte n'a de cases, pour que les cartes soient différentes.

Nom de repli : “Bingo API”

Bon à savoir
  • Un item est un objet avec value, et facultativement type ("text", "image" ou "audio" avec une URL dans value), description (l'indice que l'animateur lit à voix haute en mode "clues") et alt.
Paramètres lus
ChampTypeRôle
mode
facultatif dans settings
string
stringCe qui remplit les cases : tes items, tes items annoncés par leur indice, ou de simples nombres (qui n'ont besoin d'aucun item).
Au choix itemscluesnumbers
Par défaut: "items"
rows
facultatif dans settings
number
numberLignes sur chaque carte, de 2 à 5.
Par défaut: 3
columns
facultatif dans settings
number
numberColonnes sur chaque carte, de 2 à 5.
Par défaut: 3
highest_number
facultatif dans settings
number
numberEn mode "numbers", les cartes sont remplies de 1 jusqu'à ce nombre, 100 au maximum. Réservé aux formules payantes : sans formule, il reste à 50.
Par défaut: 50
Exemple de requête
POST bingo
curl -X POST https://puzzel.org/api/public/v1/bingo \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Bingo",
  "language": "fr",
  "items": [
    {
      "type": "text",
      "value": "Paris",
      "description": "The capital of France"
    },
    {
      "type": "text",
      "value": "Berlin",
      "description": "The capital of Germany"
    },
    {
      "type": "text",
      "value": "Madrid",
      "description": "The capital of Spain"
    }
  ],
  "settings": {
    "mode": "clues",
    "rows": 3,
    "columns": 4,
    "highest_number": 75
  }
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/bingo/embed?p=-Nq8sample_activity_key",
  "message": "Bingo created successfully"
}

J'ai, qui a

api_e_i_have_who_has

#
POST /api/public/v1/i-have-who-has 3 à 40 dans items
Contenu

api_c_i_have_who_has

Nom de repli : “I Have, Who Has API”

Bon à savoir
  • Aucune question ni aucune réponse ne doit apparaître deux fois : un élève qui détient la réponse ne saurait pas à quelle question elle appartient.
Paramètres lus
ChampTypeRôle
chain_shape
facultatif dans settings
string
stringUne boucle se referme sur elle-même, donc n'importe quelle carte peut commencer ; une ligne s'ouvre sur une carte Départ et se termine sur une carte Fin.
Au choix loopline
Par défaut: "loop"
Exemple de requête
POST i-have-who-has
curl -X POST https://puzzel.org/api/public/v1/i-have-who-has \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "I Have, Who Has",
  "language": "fr",
  "items": [
    {
      "cards": [
        {
          "type": "text",
          "value": "3 × 4"
        },
        {
          "type": "text",
          "value": "12"
        }
      ]
    },
    {
      "cards": [
        {
          "type": "text",
          "value": "6 × 7"
        },
        {
          "type": "text",
          "value": "42"
        }
      ]
    },
    {
      "cards": [
        {
          "type": "text",
          "value": "9 × 9"
        },
        {
          "type": "text",
          "value": "81"
        }
      ]
    }
  ],
  "settings": {
    "chain_shape": "line"
  }
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/i-have-who-has/embed?p=-Nq8sample_activity_key",
  "message": "I have, who has created successfully"
}

Cadenas à code

Un cadenas à code : une grille de cartes dont certaines forment ensemble le code.

#
POST /api/public/v1/keypad 1 à 30 dans items
Contenu

Un tableau de cartes. Celles qui font partie du code portent leur place dans ce code.

Nom de repli : “Keypad API”

Bon à savoir
  • Une carte est un objet avec value, et facultativement type ("text", "image" ou "audio" avec une URL dans value), alt, et code_position : sa place dans le code, 1 en premier. Une carte ne peut figurer qu'une fois dans le code, et au moins une carte doit y figurer.
Paramètres lus
ChampTypeRôle
instructions
facultatif dans settings
string
stringLa question ou l'énigme à laquelle répond le code, affichée avec les cartes.
force_solution_in_correct_order
facultatif dans settings
boolean
booleanLes cartes doivent être pressées dans l'ordre. Désactivé, n'importe quel ordre des bonnes cartes ouvre le cadenas.
Par défaut: false
randomize_order
facultatif dans settings
boolean
booleanChaque joueur reçoit les cartes dans une disposition mélangée.
Par défaut: true
Exemple de requête
POST keypad
curl -X POST https://puzzel.org/api/public/v1/keypad \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Keypad",
  "language": "fr",
  "items": [
    {
      "type": "text",
      "value": "4"
    },
    {
      "type": "text",
      "value": "7",
      "code_position": 2
    },
    {
      "type": "text",
      "value": "9"
    },
    {
      "type": "text",
      "value": "2",
      "code_position": 1
    }
  ],
  "settings": {
    "instructions": "Press the prime numbers, smallest first.",
    "force_solution_in_correct_order": true,
    "randomize_order": false
  }
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/keypad/embed?p=-Nq8sample_activity_key",
  "message": "Keypad created successfully"
}

Jeu des familles

Le jeu de cartes : les joueurs se demandent des cartes pour collecter des familles de quatre.

#
POST /api/public/v1/quartets 2 à 16 dans items
Contenu

Un tableau de familles. Chacune a un nom et exactement quatre cartes.

Nom de repli : “Quartets API”

Bon à savoir
  • Une carte est un nom, ou un objet avec name et description (le fait affiché dessus). Aucun nom de carte ne peut apparaître deux fois dans le jeu : les joueurs demandent les cartes par leur nom.
Paramètres lus
ChampTypeRôle
type
facultatif dans settings
string
stringUn jeu simple, ou un jeu d'apprentissage où chaque carte montre un fait. Si tu l'omets, c'est learn dès qu'une carte a une description.
Au choix normallearn
Exemple de requête
POST quartets
curl -X POST https://puzzel.org/api/public/v1/quartets \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Quartets",
  "language": "fr",
  "items": [
    {
      "name": "Birds",
      "cards": [
        {
          "name": "Owl",
          "description": "Hunts at night and turns its head three quarters of the way round."
        },
        {
          "name": "Robin",
          "description": "Sings through the winter."
        },
        {
          "name": "Woodpecker",
          "description": "Drums on trees up to twenty times a second."
        },
        {
          "name": "Jay",
          "description": "Buries thousands of acorns each autumn."
        }
      ]
    },
    {
      "name": "Mammals",
      "cards": [
        {
          "name": "Hedgehog",
          "description": "Carries about five thousand spines."
        },
        {
          "name": "Fox",
          "description": "Hears a mouse under the snow."
        },
        {
          "name": "Badger",
          "description": "Lives in a sett with its clan."
        },
        {
          "name": "Otter",
          "description": "Sleeps holding hands so it does not drift off."
        }
      ]
    }
  ],
  "settings": {
    "type": "learn"
  }
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/quartets/embed?p=-Nq8sample_activity_key",
  "message": "Quartets game created successfully"
}
Questions et réponses

Quiz

Des questions à choix multiple et des questions ouvertes, notées au fil du jeu.

#
POST /api/public/v1/quiz 1 à 100 dans items
Contenu

Un tableau de questions. Les questions à choix multiple portent leurs réponses ; les questions ouvertes portent la réponse que tu acceptes.

Nom de repli : “Quiz API”

Bon à savoir
  • question_type vaut "multiple_choice", où la bonne option porte isCorrect true ; "true_false", pareil avec exactement deux options, true en premier et false en second ; ou "open_answer", qui utilise correct_answer à la place. Si tu l'omets, la question est traitée comme un choix multiple.
  • Le point de terminaison quiz transmet settings tel quel sous forme de blocs de paramètres d'activité : ce n'est donc pas l'endroit pour des options en vrac — ajuste le quiz dans l'éditeur ensuite.
Exemple de requête
POST quiz
curl -X POST https://puzzel.org/api/public/v1/quiz \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Quiz",
  "language": "fr",
  "items": [
    {
      "question_type": "multiple_choice",
      "description": "Which fruit is yellow?",
      "answers": [
        {
          "type": "text",
          "description": "Banana",
          "isCorrect": true
        },
        {
          "type": "text",
          "description": "Cherry",
          "isCorrect": false
        }
      ]
    },
    {
      "question_type": "open_answer",
      "description": "What colour is a lemon?",
      "correct_answer": "Yellow",
      "explanation": "Lemons ripen from green to yellow."
    }
  ]
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/quiz/embed?p=-Nq8sample_activity_key",
  "message": "Quiz created successfully"
}

Jeu de plateau

api_e_board_game

#
POST /api/public/v1/board-game 1 à 100 dans items
Contenu

api_c_board_game

Nom de repli : “Board Game API”

Bon à savoir
  • question_type vaut "multiple_choice", où la bonne option porte isCorrect true ; "true_false", pareil avec exactement deux options, true en premier et false en second ; ou "open_answer", qui utilise correct_answer à la place. Si tu l'omets, la question est traitée comme un choix multiple.
Paramètres lus
ChampTypeRôle
number_of_tiles
facultatif dans settings
number
numberLe nombre de cases du plateau. Entre 10 et 75.
Par défaut: 30
game_mode
facultatif dans settings
string
stringSi les joueurs foncent vers l'arrivée ou collectent des objets en chemin.
Au choix race_to_finishcollect_items
Par défaut: "race_to_finish"
Exemple de requête
POST board-game
curl -X POST https://puzzel.org/api/public/v1/board-game \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Board Game",
  "language": "fr",
  "items": [
    {
      "question_type": "multiple_choice",
      "description": "Which fruit is yellow?",
      "answers": [
        {
          "type": "text",
          "description": "Banana",
          "isCorrect": true
        },
        {
          "type": "text",
          "description": "Cherry",
          "isCorrect": false
        }
      ]
    },
    {
      "question_type": "open_answer",
      "description": "What colour is a lemon?",
      "correct_answer": "Yellow",
      "explanation": "Lemons ripen from green to yellow."
    }
  ],
  "settings": {
    "number_of_tiles": 30,
    "game_mode": "race_to_finish"
  }
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/board-game/embed?p=-Nq8sample_activity_key",
  "message": "Board Game created successfully"
}

Labyrinthe

Un labyrinthe à parcourir : chaque question est une salle, et ses réponses sont les portes.

#
POST /api/public/v1/maze Au moins 1 dans items
Contenu

Un tableau de questions à choix multiple ou vrai/faux, exactement la forme que prend le point de terminaison quiz. Les questions ouvertes sont refusées : une porte a besoin d'une réponse écrite dessus.

Nom de repli : “Maze API”

Paramètres lus
ChampTypeRôle
maze_width
facultatif dans settings
string
stringLa disposition des salles : une colonne, un carré, ou plus large.
Au choix narrownormalwide
Par défaut: "normal"
maze_corridors
facultatif dans settings
string
stringLa quantité de labyrinthe entre deux questions.
Au choix shortnormallong
Par défaut: "normal"
maze_fog
facultatif dans settings
string
stringAfficher tout le labyrinthe, ou seulement ce que le joueur a longé.
Au choix offnear
Par défaut: "off"
maze_wrong_door_pause
facultatif dans settings
string
stringCombien de temps les portes restent fermées après une mauvaise porte.
Au choix noneshortlong
Par défaut: "short"
maze_walk_there
facultatif dans settings
boolean
booleanPropose un bouton qui fait marcher le pion jusqu'à la salle suivante.
Par défaut: false
maze_seed
facultatif dans settings
string
stringLa graine à partir de laquelle le labyrinthe est généré. La même graine et les mêmes questions donnent le même labyrinthe ; si tu l'omets, un nouveau est tiré au sort.
Exemple de requête
POST maze
curl -X POST https://puzzel.org/api/public/v1/maze \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Maze",
  "language": "fr",
  "items": [
    {
      "question_type": "multiple_choice",
      "description": "What is it called when water vapour turns back into liquid droplets?",
      "answers": [
        {
          "type": "text",
          "description": "Evaporation",
          "isCorrect": false
        },
        {
          "type": "text",
          "description": "Condensation",
          "isCorrect": true
        },
        {
          "type": "text",
          "description": "Transpiration",
          "isCorrect": false
        }
      ],
      "explanation": "Cooling vapour condenses into the droplets that make clouds."
    },
    {
      "question_type": "true_false",
      "description": "Most of the water on Earth is fresh water.",
      "answers": [
        {
          "type": "text",
          "description": "True",
          "isCorrect": false
        },
        {
          "type": "text",
          "description": "False",
          "isCorrect": true
        }
      ]
    }
  ],
  "settings": {
    "maze_width": "wide",
    "maze_corridors": "short",
    "maze_seed": "water123",
    "maze_fog": "near"
  }
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/maze/embed?p=-Nq8sample_activity_key",
  "message": "Maze created successfully"
}

Jeopardy

Un plateau de jeu télévisé : les catégories en haut, et dessous des définitions qui valent d'autant plus de points qu'elles sont placées bas.

#
POST /api/public/v1/jeopardy Au moins 2 dans items
Contenu

Un tableau de catégories, de gauche à droite. Chacune a un nom et ses définitions, de la ligne du haut vers le bas.

Nom de repli : “Jeopardy API”

Bon à savoir
  • Une définition est une question telle que le point de terminaison quiz la prend, open_answer sauf indication contraire, avec correct_answer et facultativement aliases. Elle peut aussi porter value (sa propre valeur) et daily_double. null laisse une case vide.
Paramètres lus
ChampTypeRôle
jeopardy_buzzer_mode
facultatif dans settings
string
stringQui joue comment : l'animateur pilote depuis la console, les joueurs buzzent depuis leur téléphone, ou chaque joueur fait le plateau seul.
Au choix hostphonessolo
Par défaut: "host"
jeopardy_contestants
facultatif dans settings
string
stringSi la console parle d'équipes ou de joueurs.
Au choix teamsplayers
Par défaut: "teams"
jeopardy_value_step
facultatif dans settings
number
numberCe que vaut une ligne : une définition vaut ce montant multiplié par son numéro de ligne. De 50 à 500, par pas de 50.
Par défaut: 100
jeopardy_answer_time
facultatif dans settings
number
numberSecondes pour répondre une fois la définition ouverte, 300 au maximum. 0 signifie pas de minuteur.
Par défaut: 20
jeopardy_wrong_answer_costs
facultatif dans settings
boolean
booleanUne mauvaise réponse retire la valeur de la définition du score.
Par défaut: false
jeopardy_reveal_on_timeout
facultatif dans settings
boolean
booleanLe plateau affiche lui-même la réponse quand le temps est écoulé.
Par défaut: false
jeopardy_require_question_form
facultatif dans settings
boolean
booleanRappelle aux joueurs de répondre sous forme de question.
Par défaut: false
Exemple de requête
POST jeopardy
curl -X POST https://puzzel.org/api/public/v1/jeopardy \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Jeopardy",
  "language": "fr",
  "items": [
    {
      "name": "Planets",
      "questions": [
        {
          "question_type": "open_answer",
          "description": "The planet closest to the Sun.",
          "correct_answer": "Mercury"
        },
        {
          "question_type": "open_answer",
          "description": "It is known as the red planet.",
          "correct_answer": "Mars",
          "explanation": "Iron oxide in its soil gives it the colour."
        },
        {
          "question_type": "multiple_choice",
          "description": "This planet has the most confirmed moons.",
          "answers": [
            {
              "description": "Jupiter",
              "isCorrect": false
            },
            {
              "description": "Saturn",
              "isCorrect": true
            },
            {
              "description": "Neptune",
              "isCorrect": false
            }
          ],
          "daily_double": true
        }
      ]
    },
    {
      "name": "Moons",
      "questions": [
        {
          "question_type": "open_answer",
          "description": "The only world besides Earth that people have walked on.",
          "correct_answer": "The Moon",
          "aliases": [
            "Luna"
          ]
        },
        null,
        {
          "question_type": "name_them_all",
          "description": "Name the four Galilean satellites.",
          "answers": [
            {
              "description": "Io"
            },
            {
              "description": "Europa"
            },
            {
              "description": "Ganymede",
              "aliases": [
                "Ganymedes"
              ]
            },
            {
              "description": "Callisto"
            }
          ],
          "required_count": 3,
          "value": 500
        }
      ]
    }
  ],
  "settings": {
    "jeopardy_buzzer_mode": "solo",
    "jeopardy_value_step": 200,
    "jeopardy_wrong_answer_costs": true
  }
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/jeopardy/embed?p=-Nq8sample_activity_key",
  "message": "Jeopardy board created successfully"
}

Vidéo interactive

api_e_interactive_video

#
POST /api/public/v1/interactive-video 1 à 50 dans items
Contenu

api_c_interactive_video

Nom de repli : “Interactive Video API”

Bon à savoir
  • Un moment est un objet avec time (en secondes, ou "1:23"), kind ("question" sauf s'il vaut "note", "think" ou "chapter") et description. Une question est une question telle que le point de terminaison quiz la prend, et peut porter rewind_to : l'endroit d'où la lecture reprend après une mauvaise réponse.
Paramètres lus
ChampTypeRôle
video_url
obligatoire dans settings
string
stringLa vidéo : une page YouTube, Vimeo ou Bunny Stream, ou un lien direct vers un fichier mp4, webm ou mov.
video_duration
facultatif dans settings
number
numberLa durée de la vidéo en secondes. Si elle est indiquée, un moment placé après la fin est refusé.
Exemple de requête
POST interactive-video
curl -X POST https://puzzel.org/api/public/v1/interactive-video \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Interactive Video",
  "language": "fr",
  "items": [
    {
      "time": 5,
      "kind": "chapter",
      "description": "Evaporation"
    },
    {
      "time": 42.5,
      "kind": "question",
      "question_type": "multiple_choice",
      "description": "What turns liquid water into vapour?",
      "answers": [
        {
          "type": "text",
          "description": "Heat from the sun",
          "isCorrect": true
        },
        {
          "type": "text",
          "description": "Wind from the north",
          "isCorrect": false
        },
        {
          "type": "text",
          "description": "Salt in the sea",
          "isCorrect": false
        }
      ],
      "explanation": "The sun warms the surface and the water evaporates.",
      "rewind_to": 20
    }
  ],
  "settings": {
    "video_url": "https://www.youtube.com/watch?v=al-do-HGuIk",
    "video_duration": 180,
    "video_allow_skipping": true
  }
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/interactive-video/embed?p=-Nq8sample_activity_key",
  "message": "Interactive video created successfully"
}
Phrases et nombres

Cryptogramme

Transforme une phrase en un code à casser, un caractère à la fois.

#
POST /api/public/v1/cryptogram Ne prend pas d'items
Contenu

Une phrase, dans le champ sentence. Ce point de terminaison ne prend pas d'items.

Nom de repli : “Cryptogram API”

Bon à savoir
  • Tout ce que tu envoies dans items est ignoré — le casse-tête est construit à partir de la seule phrase.
Paramètres lus
ChampTypeRôle
sentence
obligatoire
string
stringLa phrase à chiffrer. Les joueurs la décodent caractère par caractère.
helpers
facultatif dans settings
string
stringLes caractères offerts d'emblée pour donner un point d'entrée : aucun, les plus fréquents, les voyelles, ou ceux que tu listes toi-même.
Au choix nonemost_commonvowelscustom
Par défaut: "none"
character_list
facultatif dans settings
string
stringL'alphabet à partir duquel le chiffre est construit. Laissé vide, le chiffrement choisit le sien.
extra_letters
facultatif dans settings
string
stringLes caractères offerts quand helpers vaut "custom". Ignoré pour les autres modes d'aide.
hide_unused_characters
facultatif dans settings
boolean
booleanLaisse hors de la clé les caractères que la phrase n'utilise jamais.
Par défaut: false
Exemple de requête
POST cryptogram
curl -X POST https://puzzel.org/api/public/v1/cryptogram \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Cryptogram",
  "language": "fr",
  "sentence": "An apple a day keeps the doctor away",
  "settings": {
    "helpers": "vowels",
    "hide_unused_characters": false
  }
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/cryptogram/embed?p=-Nq8sample_activity_key",
  "message": "Cryptogram created successfully"
}

Exercice de calcul

Cache une phrase derrière des calculs — résous le calcul, révèle la lettre.

#
POST /api/public/v1/calculation Ne prend pas d'items
Contenu

Une phrase, dans le champ sentence. Ce point de terminaison ne prend pas d'items.

Nom de repli : “Calculation Game API”

Bon à savoir
  • Si les contraintes sont trop strictes pour encoder la phrase, l'appel répond 400 en te demandant de les assouplir plutôt que d'enregistrer un casse-tête partiel.
Paramètres lus
ChampTypeRôle
sentence
obligatoire
string
stringLa phrase que les joueurs découvrent en résolvant les calculs.
difficulty_level
facultatif dans settings
number
numberLe résultat le plus élevé qu'un calcul peut avoir.
Au choix 20501001000
Par défaut: "100"
operators
facultatif dans settings
string[]
string[]Les opérations autorisées. x correspond à la multiplication, : à la division.
Au choix +-x:
Par défaut: ["+", "-", "x", ":"]
max_operations
facultatif dans settings
number
numberLe nombre d'opérations qu'un même calcul peut enchaîner.
Au choix 123
Par défaut: 1
number_difficulty
facultatif dans settings
number
numberPlafonne les nombres à l'intérieur d'un calcul. De 5 à 1000, au choix.
Par défaut: 100
Exemple de requête
POST calculation
curl -X POST https://puzzel.org/api/public/v1/calculation \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Calculation Game",
  "language": "fr",
  "sentence": "Fruit salad for everyone",
  "settings": {
    "difficulty_level": "100",
    "operators": [
      "+",
      "-",
      "x",
      ":"
    ],
    "max_operations": 1,
    "number_difficulty": 100
  }
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/calculation/embed?p=-Nq8sample_activity_key",
  "message": "Calculation game created successfully"
}

Sudoku

Génère une grille résolue, puis en retire des chiffres.

#
POST /api/public/v1/sudoku Ne prend pas d'items
Contenu

Rien. Tout le casse-tête découle de ses deux paramètres.

Nom de repli : “Sudoku API”

Bon à savoir
  • N'envoie ni items ni sentence — la taille et la difficulté sont toute l'entrée.
  • L'éditeur ne propose la difficulté que pour 2x3, 3x3 et 3x4. L'API l'applique à toutes les tailles, 2x2 et 4x4 compris.
Paramètres lus
ChampTypeRôle
size
facultatif dans settings
string
stringLa taille d'un bloc, écrite en lignes par colonnes — 3x3 donne la grille classique 9x9. Le point de terminaison vérifie seulement que ça se lit comme deux nombres : reste donc sur les tailles proposées par l'éditeur.
Au choix 2x22x33x33x44x4
Par défaut: "3x3"
difficulty_level
facultatif dans settings
string
stringLe nombre de chiffres laissés sur la grille au départ.
Au choix easynormalhard
Par défaut: "normal"
Exemple de requête
POST sudoku
curl -X POST https://puzzel.org/api/public/v1/sudoku \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Sudoku",
  "language": "fr",
  "settings": {
    "size": "3x3",
    "difficulty_level": "normal"
  }
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/sudoku/embed?p=-Nq8sample_activity_key",
  "message": "Sudoku created successfully"
}

Phrase à reconstituer

api_e_fallen_phrase

#
POST /api/public/v1/fallen-phrase Ne prend pas d'items
Contenu

api_c_fallen_phrase

Nom de repli : “Fallen Phrase API”

Paramètres lus
ChampTypeRôle
sentence
obligatoire
string
stringLa phrase à cacher : une citation, un proverbe, une phrase clé. 120 lettres et chiffres au maximum.
columns
facultatif dans settings
number
numberLa largeur de la grille, de 8 à 18. Plus elle est étroite, plus chaque colonne empile de lettres, et plus c'est difficile.
Par défaut: 14
helpers
facultatif dans settings
string
stringLes lettres qui restent dans la grille pour donner un point d'entrée : aucune, les plus fréquentes, les voyelles, ou celles que tu listes toi-même.
Au choix nonemost_commonvowelscustom
Par défaut: "none"
extra_letters
facultatif dans settings
string
stringLes lettres offertes quand helpers vaut "custom".
Exemple de requête
POST fallen-phrase
curl -X POST https://puzzel.org/api/public/v1/fallen-phrase \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Fallen Phrase",
  "language": "fr",
  "sentence": "Don't count your chickens before they hatch.",
  "settings": {
    "columns": 12,
    "helpers": "custom",
    "extra_letters": "ky"
  }
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/fallen-phrase/embed?p=-Nq8sample_activity_key",
  "message": "Fallen phrase created successfully"
}

Tables de multiplication

api_e_times_tables

#
POST /api/public/v1/times-tables Ne prend pas d'items
Contenu

api_c_times_tables

Nom de repli : “Times Tables API”

Paramètres lus
ChampTypeRôle
tables
facultatif dans settings
number[]
number[]Les tables à travailler. Si tu l'omets, c'est de 1 à 10 ; un 11 ou un 12 donne une grille de 12 sur 12.
Au choix 123456789101112
order
facultatif dans settings
string
stringSi les lignes et les colonnes suivent l'ordre ou sont mélangées.
Au choix ascendingshuffled
Par défaut: "ascending"
picture
facultatif dans settings
string
stringL'image que colorient les bonnes réponses.
Au choix sailboatheartrockettreecatfishflowerhouse
Par défaut: "sailboat"
players_choose_tables
facultatif dans settings
boolean
booleanPermet à chaque joueur de choisir quelles tables travailler.
Par défaut: false
fill_same_sums
facultatif dans settings
boolean
booleanUne bonne réponse remplit toutes les cases qui contiennent le même calcul.
Par défaut: true
Exemple de requête
POST times-tables
curl -X POST https://puzzel.org/api/public/v1/times-tables \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Times Tables",
  "language": "fr",
  "settings": {
    "tables": [
      7,
      3,
      4
    ],
    "order": "shuffled",
    "seed": "k3x9q2ab",
    "picture": "rocket",
    "players_choose_tables": true,
    "fill_same_sums": false
  }
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/times-tables/embed?p=-Nq8sample_activity_key",
  "message": "Times tables created successfully"
}

Texte à trous

api_e_fill_in_the_gap

#
POST /api/public/v1/fill-in-the-gap 1 à 50 dans items
Contenu

api_c_fill_in_the_gap

Nom de repli : “Fill in the gap API”

Bon à savoir
  • Écris la phrase complète et entoure d'astérisques chaque mot à retirer : "Water boils at *100* degrees." Plusieurs mots dans une même paire forment un seul trou. Une entrée peut aussi porter une consigne affichée au-dessus de la phrase.
Exemple de requête
POST fill-in-the-gap
curl -X POST https://puzzel.org/api/public/v1/fill-in-the-gap \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Fill in the gap",
  "language": "fr",
  "items": [
    {
      "sentence": "The capital of France is *Paris*, and the river that runs through it is the *Seine*."
    },
    {
      "sentence": "*Amsterdam* is the capital of the Netherlands, but the government sits in *The Hague*.",
      "instruction": "Two cities, one of them two words."
    },
    {
      "sentence": "The *Danube* flows through Vienna, Bratislava, *Budapest* and Belgrade."
    }
  ]
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/fill-in-the-gap/embed?p=-Nq8sample_activity_key",
  "message": "Fill in the gap created successfully"
}

Analyse de phrase

Des phrases dont les joueurs étiquettent les mots : natures des mots, fonctions dans la phrase, ou étiquettes de ton choix.

#
POST /api/public/v1/deconstruct 1 à 50 dans items
Contenu

Un tableau de phrases. Chaque mot à étiqueter s'écrit [word](label).

Nom de repli : “Sentence analysis API”

Bon à savoir
  • Écris une phrase ainsi : "The [dog](noun) [barks](verb)." Les mots sans balise sont affichés mais ne sont pas demandés. Les étiquettes noun, verb, adjective et subject sont montrées à chaque joueur dans sa propre langue.
Paramètres lus
ChampTypeRôle
categories
facultatif dans settings
string[]
string[]Les étiquettes entre lesquelles les joueurs choisissent, dans l'ordre. Si tu l'omets, ce sont les étiquettes utilisées dans les phrases. Envoie-le pour ajouter une étiquette qu'aucun mot ne porte, ou pour fixer l'ordre.
Exemple de requête
POST deconstruct
curl -X POST https://puzzel.org/api/public/v1/deconstruct \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Sentence analysis",
  "language": "fr",
  "items": [
    {
      "sentence": "The [old](adjective) [farmer](noun) [feeds](verb) the [hungry](adjective) [chickens](noun) [early](adverb).",
      "instruction": "Label the nouns, verbs, adjectives and adverbs."
    },
    {
      "sentence": "A [brown](adjective) [horse](noun) [jumped](verb) [quickly](adverb) over the [fence](noun)."
    },
    {
      "sentence": "[Two small lambs](subject) [sleep](verb) in the [barn](noun), and the [dog](noun) [watches](verb) [quietly](adverb)."
    }
  ],
  "settings": {
    "categories": [
      "noun",
      "verb",
      "adjective",
      "adverb",
      {
        "name": "subject",
        "color": "#224466"
      },
      "preposition"
    ]
  }
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/deconstruct/embed?p=-Nq8sample_activity_key",
  "message": "Sentence analysis created successfully"
}

Logigramme

api_e_logic_puzzle

#
POST /api/public/v1/logic-puzzle Au moins 3 dans items
Contenu

api_c_logic_puzzle

Nom de repli : “Logic Puzzle API”

Bon à savoir
  • Chaque catégorie doit avoir le même nombre d'items, de 3 à 6, tous différents. Une catégorie peut être marquée ordered (prix, heures, âges) avec une unit facultative, ce qui permet au générateur d'écrire des indices sur plus, moins et combien.
Paramètres lus
ChampTypeRôle
story
facultatif dans settings
string
stringL'histoire de départ affichée au-dessus des indices.
difficulty
facultatif dans settings
string
stringLes types d'indices que le générateur peut utiliser.
Au choix easymediumhard
Par défaut: "easy"
hints
facultatif dans settings
boolean
booleanPropose un bouton qui montre l'étape suivante.
Par défaut: true
auto_cross
facultatif dans settings
boolean
booleanMarquer une association barre le reste de sa ligne et de sa colonne.
Par défaut: true
clue_mode
facultatif dans settings
string
stringQui écrit les indices que voient les joueurs : générés à partir du tableau, tes propres phrases dans free_clues, ou aucun.
Au choix generatedfreenone
Par défaut: "generated"
free_clues
facultatif dans settings
string[]
string[]Tes propres phrases d'indices, affichées telles qu'écrites, avec clue_mode "free". Rien ne les vérifie.
Exemple de requête
POST logic-puzzle
curl -X POST https://puzzel.org/api/public/v1/logic-puzzle \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Logic Puzzle",
  "language": "fr",
  "items": [
    {
      "name": "Baker",
      "items": [
        "Amira",
        "Jonas",
        "Priya",
        "Tobias"
      ]
    },
    {
      "name": "Cake",
      "items": [
        "Lemon drizzle",
        "Carrot cake",
        "Brownies",
        "Apple pie"
      ]
    },
    {
      "name": "Price",
      "items": [
        "$2",
        "$4",
        "$6",
        "$8"
      ],
      "ordered": true,
      "unit": "dollars"
    }
  ],
  "settings": {
    "story": "Four friends each baked one thing for the school bake sale and each set a different price. Who baked what, and what did it cost?",
    "difficulty": "medium"
  }
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/logic-puzzle/embed?p=-Nq8sample_activity_key",
  "message": "Logic puzzle created successfully"
}

Chasse au trésor

api_e_scavenger_hunt

#
POST /api/public/v1/scavenger-hunt 1 à 50 dans items
Contenu

api_c_scavenger_hunt

Nom de repli : “Scavenger Hunt API”

Bon à savoir
  • Une étape est un objet avec title, description, code et facultativement accepted_codes (d'autres graphies qui comptent), url et link_text. Un code est vérifié sans tenir compte des majuscules ni des espaces. La carte avec ses épingles ne peut être ajoutée que dans l'éditeur.
Exemple de requête
POST scavenger-hunt
curl -X POST https://puzzel.org/api/public/v1/scavenger-hunt \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Scavenger Hunt",
  "language": "fr",
  "items": [
    {
      "title": "Start at the front desk",
      "description": "Which year is carved above the entrance?",
      "code": "1897",
      "accepted_codes": [
        "eighteen ninety-seven"
      ]
    },
    {
      "title": "The quiet corner",
      "description": "Find the atlas shelf. What colour is the biggest atlas?",
      "code": "crimson",
      "accepted_codes": [
        "dark red"
      ]
    }
  ]
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/scavenger-hunt/embed?p=-Nq8sample_activity_key",
  "message": "Scavenger hunt created successfully"
}

Raisonnement spatial

api_e_spatial_reasoning

#
POST /api/public/v1/spatial-reasoning 1 à 50 dans items
Contenu

api_c_spatial_reasoning

Nom de repli : “Spatial Reasoning API”

Bon à savoir
  • Les objets et les cibles sont square, triangle, circle, hexagon, pentagon, star, diamond ou heart. Les relations sont inside, outside, behind, in_front_of, right_of, left_of, above, below, same_color_as, different_color_from, larger_than et smaller_than. Une règle qui ne peut jamais être respectée répond 400.
Paramètres lus
ChampTypeRôle
clue_mode
facultatif dans settings
string
stringRègles montrées en images ou en phrases.
Au choix visualtext
Par défaut: "visual"
unique_object_picks
facultatif dans settings
boolean
booleanChaque forme ne peut être placée qu'une fois.
Par défaut: false
hide_color_picker
facultatif dans settings
boolean
booleanLes joueurs ne peuvent pas recolorier les formes.
Par défaut: false
Exemple de requête
POST spatial-reasoning
curl -X POST https://puzzel.org/api/public/v1/spatial-reasoning \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Spatial Reasoning",
  "language": "fr",
  "items": [
    {
      "rules": [
        {
          "object": "square",
          "relation": "inside",
          "target": "circle"
        }
      ]
    },
    {
      "rules": [
        {
          "object": "triangle",
          "relation": "above",
          "target": "square"
        },
        {
          "object": "star",
          "relation": "left_of",
          "target": "triangle"
        }
      ]
    }
  ],
  "settings": {
    "clue_mode": "text",
    "unique_object_picks": true,
    "hide_color_picker": false
  }
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/spatial-reasoning/embed?p=-Nq8sample_activity_key",
  "message": "Spatial reasoning activity created successfully"
}

Rébus

Des phrases écrites en images : les joueurs lisent les images et les changements de lettres pour retrouver les mots.

#
POST /api/public/v1/rebus 1 à 30 dans items
Contenu

Un tableau de phrases. Chacune liste les mots dessinés en images ; tous les autres mots restent en lettres.

Nom de repli : “Rebus API”

Bon à savoir
  • Un mot est dessiné à partir de parties qui, ensemble, l'épellent. Une partie a les lettres qu'elle représente (text), un emoji, et shows : le mot pour ce que montre l'image ("broom" pour une image qui représente "room"). Puzzel calcule les changements de lettres. Une partie peut aussi être un symbole, comme 4 pour "for".
Paramètres lus
ChampTypeRôle
rebus_commas
facultatif dans settings
boolean
booleanDessine une première ou une dernière lettre supprimée sous forme de virgule à côté de l'image.
Par défaut: false
Exemple de requête
POST rebus
curl -X POST https://puzzel.org/api/public/v1/rebus \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Rebus",
  "language": "fr",
  "items": [
    {
      "sentence": "I sweep the room before the sunflower wilts.",
      "words": [
        {
          "word": "I",
          "parts": [
            {
              "text": "I",
              "kind": "sound",
              "emoji": "👁️"
            }
          ]
        },
        {
          "word": "room",
          "parts": [
            {
              "text": "room",
              "kind": "picture",
              "shows": "broom",
              "emoji": "🧹"
            }
          ]
        },
        {
          "word": "before",
          "parts": [
            {
              "text": "be",
              "kind": "picture",
              "shows": "bee",
              "emoji": "🐝"
            },
            {
              "text": "for",
              "kind": "sound",
              "glyph": "4"
            },
            {
              "text": "e",
              "kind": "letters"
            }
          ]
        },
        {
          "word": "the",
          "position": 6,
          "parts": [
            {
              "text": "the",
              "kind": "picture",
              "shows": "tree",
              "emoji": "🌳"
            }
          ]
        },
        {
          "word": "sunflower",
          "parts": [
            {
              "text": "sun",
              "kind": "picture",
              "shows": "sun",
              "emoji": "☀️"
            },
            {
              "text": "flower",
              "kind": "picture",
              "shows": "flower",
              "emoji": "🌸"
            }
          ]
        }
      ]
    }
  ],
  "settings": {
    "rebus_commas": true
  }
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/rebus/embed?p=-Nq8sample_activity_key",
  "message": "Rebus created successfully"
}
Images

Puzzle

Découpe une image en pièces à rassembler par glisser-déposer.

#
POST /api/public/v1/jigsaw Ne prend pas d'items
Contenu

Une URL d'image, dans le champ image. Ce point de terminaison ne prend pas d'items.

Nom de repli : “Jigsaw Game API”

Bon à savoir
  • L'API crée toujours un puzzle de 4 sur 4. Le nombre de pièces, les pièces irrégulières et les bords droits sont des paramètres de l'éditeur — envoyer rows ou columns ici ne fait rien.
  • L'URL est enregistrée telle que tu l'as envoyée et le fichier n'est jamais copié : elle doit donc rester accessible publiquement aussi longtemps que l'activité est jouée.
Paramètres lus
ChampTypeRôle
image
obligatoire
string
stringURL absolue de l'image à découper. Envoyée au premier niveau, pas dans settings.
Exemple de requête
POST jigsaw
curl -X POST https://puzzel.org/api/public/v1/jigsaw \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Jigsaw Game",
  "language": "fr",
  "image": "https://example.com/orchard.jpg"
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/jigsaw/embed?p=-Nq8sample_activity_key",
  "message": "Jigsaw game created successfully"
}

Taquin

Mélange une image en tuiles qui glissent jusqu'à leur place.

#
POST /api/public/v1/slidingpuzzle Ne prend pas d'items
Contenu

Une URL d'image, dans settings. Ce point de terminaison ne prend pas d'items.

Nom de repli : “Sliding Puzzle API”

Bon à savoir
  • Contrairement au puzzle, ce point de terminaison lit son image dans settings.image. Un champ image au premier niveau est ignoré et l'appel répond 400.
  • L'URL est enregistrée telle que tu l'as envoyée et le fichier n'est jamais copié : elle doit donc rester accessible publiquement aussi longtemps que l'activité est jouée.
Paramètres lus
ChampTypeRôle
image
obligatoire dans settings
string
stringURL absolue de l'image à mélanger. Contrairement à celle du puzzle, celle-ci se place dans settings.
Exemple de requête
POST slidingpuzzle
curl -X POST https://puzzel.org/api/public/v1/slidingpuzzle \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Sliding Puzzle",
  "language": "fr",
  "settings": {
    "image": "https://example.com/orchard.jpg"
  }
}'
Succès
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/slidingpuzzle/embed?p=-Nq8sample_activity_key",
  "message": "Sliding puzzle created successfully"
}

Quelque chose ne se comporte pas comme prévu ?

Envoie ta requête et le message d'erreur reçu. La personne qui a développé le point de terminaison te répondra directement.

Écrire au support