Un POST por tipo de actividad. Envía tu contenido como JSON y recibe una actividad en tu cuenta de Puzzel.org y una URL que puedes dar a los jugadores o colocar en un iframe.
URL base
https://puzzel.org/api/public/v1
Autenticación
Clave + email en el cuerpo
Endpoints
38 tipos de actividad
Cuota
10 actividades al día
Tu primera petición
Envía una petición POST con tu clave de API, correo y contenido en el cuerpo JSON. No necesitas instalar nada ni establecer una conexión previa. La respuesta incluye la clave de la nueva actividad y la URL para jugar.
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": "es",
"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"
}
]
}'
Todos los ejemplos de esta página son peticiones completas y ejecutables. Sustituye la clave y el contenido por los tuyos y funcionan tal cual.
Autenticación
Envía la clave de API y el correo en el cuerpo JSON de cada petición. No necesitas cabeceras de autenticación ni un bearer token. La clave debe pertenecer a la cuenta con ese correo.
Campo
Tipo
Qué hace
account_api_key
obligatorio
string
string
La clave de API de tu cuenta. Va en el cuerpo, no en una cabecera.
email
obligatorio
string
string
La dirección con la que inicia sesión tu cuenta de Puzzel.org. La clave solo es válida junto con ella.
Tu clave está en la sección de cuenta de tu panel, detrás de Mostrar.
Trata la clave como una contraseña. Crea y sobrescribe actividades en tu cuenta, así que mantenla en el servidor y fuera de cualquier cosa que un navegador pueda leer.
El cuerpo de la petición
Todos los endpoints usan los mismos cinco campos básicos. El campo de contenido depende del tipo de actividad: normalmente es un array de elementos, aunque algunos reciben una oración o una imagen. Para sudoku no necesitas enviar contenido.
Campo
Tipo
Qué hace
account_api_key
obligatorio
string
string
La clave de API de tu cuenta. Va en el cuerpo, no en una cabecera.
email
obligatorio
string
string
La dirección con la que inicia sesión tu cuenta de Puzzel.org. La clave solo es válida junto con ella.
title
opcional
string
string
El nombre que recibe la actividad en tu panel. Si lo omites, el endpoint usa su propio nombre por defecto.
language
opcional
string
string
Solo determina el idioma de la URL que recibes; no traduce nada de lo que envías. La sopa de letras también lo lee para cambiar sus letras de relleno al árabe cuando es "ar".
Por defecto: "en"
activity_key
opcional
string
string
Omítelo para crear una actividad nueva. Pasa la clave de una que ya sea tuya y esa actividad se reconstruye en su lugar.
settings es un objeto con opciones por endpoint. Cuáles lee cada endpoint se indica junto a él más abajo; cualquier otra cosa que pongas ahí se ignora.
Qué recibes de vuelta
Una llamada correcta responde 200 con la clave de la nueva actividad y la URL en la que se juega. Cualquier otra cosa responde con success en false y una única cadena de error.
{
"success": false,
"error": "Invalid Email or API Key"
}
La url que recibes es la vista para insertar. Cambia embed por play para abrirla a pantalla completa, o por build para abrirla en el editor; la clave después de p= es la misma.
Crear frente a actualizar
Envía activity_key para reconstruir una actividad existente. Se sustituye el contenido y se actualizan el nombre y la marca de versión. La clave no cambia, así que los enlaces compartidos y las actividades insertadas siguen funcionando. Se conservan los resultados, la carpeta y los ajustes que el endpoint no modifica.
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 se aplica en cada actualización, incluido su valor por defecto: si lo omites, la actividad pasa a llamarse con el nombre por defecto de ese endpoint.
Los bloques de ajustes que un endpoint escribe por sí mismo se reescriben desde cero, así que una actualización también los restablece a los valores que envías, o a los valores por defecto del endpoint.
Solo puedes actualizar actividades que pertenezcan a tu propia cuenta. La clave de otra persona responde 403.
Una actualización cuesta lo mismo que una creación: una llamada de la cuota de hoy.
Límite de peticiones
10
10 actividades por cuenta y día
Cada llamada correcta cuenta, tanto creaciones como actualizaciones. Si te pasas, la siguiente petición responde 429 hasta que el contador se reinicia.
El contador se pone a cero una vez al día mediante una tarea programada, no en una ventana móvil de 24 horas.
Errores
Los errores llegan siempre como JSON con los mismos dos campos, nunca como una página HTML. La cadena error está escrita para que la lea una persona: indica el campo o el límite que falló.
Estado
Qué significa
400
Bad Request
Falta algo en el cuerpo, está mal formado o fuera de rango. El mensaje indica el campo.
401
Unauthorized
El email es desconocido, o la clave no pertenece a esa cuenta.
403
Forbidden
La activity_key que enviaste pertenece a otra cuenta.
429
Too Many Requests
La cuota de hoy está agotada. Se reinicia una vez al día.
500
Server Error
El generador no pudo construir un puzle con lo que enviaste; normalmente por muy pocas palabras, o por palabras que no encajan entre sí.
Endpoints
Una ruta por tipo de actividad, todas POST, todas bajo la misma URL base. Cada una indica el contenido que necesita, los ajustes que lee y una petición que puedes ejecutar.
Palabras y letras
A
S
A
M
R
O
S
A
R
Crucigrama
Entrelaza tus respuestas en una cuadrícula y numera las definiciones por ti.
Un array de palabras. Cada entrada combina la respuesta con la definición que la señala.
Usa por defecto el nombre “Crossword API”
Conviene saber
Las respuestas de menos de dos caracteres se descartan antes de construir la cuadrícula, y al menos dos tienen que sobrevivir a ese filtro.
Las respuestas se pasan a mayúsculas y el generador tiene veinte intentos para encajarlas. Si no consigue colocar ni una sola palabra, la llamada responde 500.
Ajustes que lee
Campo
Tipo
Qué hace
hidden_solution
opcionalen settings
string
string
Una palabra extra opcional. Sus letras se marcan en casillas de la cuadrícula terminada, para que los jugadores las recojan cuando el crucigrama esté resuelto, así que todas sus letras tienen que aparecer en las respuestas.
Petición de ejemplo
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": "es",
"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"
}
]
}'
Un array de palabras. El texto de la definición se convierte en la lista de palabras con la que trabajan los jugadores.
Usa por defecto el nombre “Wordseeker API”
Conviene saber
Las respuestas de menos de dos caracteres se descartan, y todas las respuestas se pasan a mayúsculas antes de entrar en la cuadrícula.
La cuadrícula se rellena con letras latinas salvo que language sea "ar", que cambia el relleno al árabe.
Ajustes que lee
Campo
Tipo
Qué hace
hidden_solution
opcionalen settings
string
string
Las letras sobrantes forman esta palabra. Establecerla también indica al generador que encaje primero la solución en lugar de meter tantas palabras como pueda.
directions
opcionalen settings
string[]
string[]
En qué direcciones puede ir una palabra. Si lo omites, las palabras solo van hacia el este, el sureste y el sur.
Uno dewesteastnorthsouthnorthwestnortheastsouthwestsoutheast
Por defecto: ["east", "southeast", "south"]
template
opcionalen settings
string
string
Recorta la cuadrícula con una forma en lugar de dejarla cuadrada.
Uno desquarecirclecrossdiamondpyramidsmileystarcross_plus
Petición de ejemplo
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": "es",
"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"
}
}'
POST/api/public/v1/word-scrambleDe 1 a 40 en items
Contenido
api_c_word_scramble
Usa por defecto el nombre “Word Scramble API”
Conviene saber
Las actividades creadas a través de la API siempre tienen activado el ajuste de orden aleatorio, así que el orden que envías no es el orden que reciben los jugadores.
Ajustes que lee
Campo
Tipo
Qué hace
hidden_solution
opcionalen settings
string
string
Una palabra extra opcional que los jugadores introducen cuando el resto está resuelto.
Petición de ejemplo
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": "es",
"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"
}
}'
Un array de palabras. Los jugadores tienen una ronda por palabra.
Usa por defecto el nombre “Wordle API”
Conviene saber
Por defecto, se comprueba que las palabras introducidas estén en el diccionario. Desactiva esta opción en el editor si usas nombres propios o palabras inventadas.
POST/api/public/v1/typing-practiceDe 1 a 50 en items
Contenido
api_c_typing_practice
Usa por defecto el nombre “Typing Practice API”
Petición de ejemplo
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": "es",
"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"
}
]
}'
Éxito
{
"success": true,
"id": "-Nq8sample_activity_key",
"url": "https://puzzel.org/en/typing-practice/embed?p=-Nq8sample_activity_key",
"message": "Typing Practice created successfully"
}
Un array de palabras. Cada entrada combina la respuesta con una definición lo bastante corta para caber en una casilla.
Usa por defecto el nombre “Arrowword API”
Ajustes que lee
Campo
Tipo
Qué hace
hidden_solution
opcionalen settings
string
string
Una palabra extra opcional. Sus letras se marcan en casillas de la cuadrícula terminada, así que todas sus letras tienen que aparecer en las respuestas.
Un array de palabras del tema. Junto con el spangram, sus letras tienen que llenar exactamente la cuadrícula.
Usa por defecto el nombre “Strands API”
Conviene saber
Las letras de todas las palabras y del spangram juntos tienen que sumar exactamente 30, 35, 36, 40, 42, 45, 48, 49, 50, 54, 56, 60, 63, 64, 70, 72 u 80. Cualquier otra cifra responde 400 e indica cuántas letras añadir o quitar.
Ajustes que lee
Campo
Tipo
Qué hace
theme
opcionalen settings
string
string
La adivinanza que se muestra sobre la cuadrícula. Si la omites, los jugadores ven el título.
spangram
opcionalen settings
string
string
La palabra o frase que nombra el tema y cruza la cuadrícula de un extremo a otro.
POST/api/public/v1/name-them-allDe 1 a 250 en items
Contenido
api_c_name_them_all
Usa por defecto el nombre “Name Them All API”
Conviene saber
Una entrada es un objeto con una answer y, opcionalmente, aliases (otras grafías que cuentan), una description (la pista) y un group. Al comprobar un nombre se ignoran las mayúsculas, los acentos y la puntuación.
Ajustes que lee
Campo
Tipo
Qué hace
list_match_mode
opcionalen settings
string
string
Si un nombre cuenta en cuanto se escribe, o solo al pulsar Intro.
Uno dewhile_typingon_enter
Por defecto: "while_typing"
list_slot_hint
opcionalen settings
string
string
Qué revela un hueco vacío: nada, la longitud del nombre, su primera letra o la pista que escribiste.
Uno denonelengthfirst_letterhint
Por defecto: "none"
list_arrange
opcionalen settings
string
string
Una columna por grupo, o una sola lista.
Uno degroupsone_list
Por defecto: "groups"
list_allow_give_up
opcionalen settings
boolean
boolean
Muestra un botón de rendirse que termina la ronda y revela lo que faltaba.
{
"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"
}
Un array de parejas. Cada pareja contiene las dos tarjetas que van juntas.
Usa por defecto el nombre “Memory Game API”
Conviene saber
Una tarjeta es un objeto con un type y un value. Usa "text" para palabras, o "image", "audio", "youtube" o "link" con una URL en value, y añade alt para una descripción.
POST/api/public/v1/matching-pairsDe 2 a 30 en items
Contenido
api_c_matching_pairs
Usa por defecto el nombre “Matching Game API”
Conviene saber
Una tarjeta es un objeto con un type y un value. Usa "text" para palabras, o "image", "audio", "youtube" o "link" con una URL en value, y añade alt para una descripción.
El endpoint guarda tantas tarjetas como envíes, así que envía exactamente dos por entrada: primero el anverso, luego el reverso.
Una tarjeta es un objeto con un type y un value. Usa "text" para palabras, o "image", "audio", "youtube" o "link" con una URL en value, y añade alt para una descripción.
POST/api/public/v1/categorizeAl menos 2 en items · como máximo 60 tarjetas en total
Contenido
Un array de categorías, cada una con un nombre y las tarjetas que le pertenecen.
Usa por defecto el nombre “Categorize Game API”
Conviene saber
Una categoría enviada sin nombre se guarda como “Untitled Category”, así que envía siempre uno.
Una tarjeta es un objeto con un type y un value. Usa "text" para palabras, o "image", "audio", "youtube" o "link" con una URL en value, y añade alt para una descripción.
POST/api/public/v1/reorderAl menos 1 en items · como máximo 60 tarjetas en total
Contenido
Un array de secuencias. Cada una contiene sus tarjetas en el orden correcto.
Usa por defecto el nombre “Reorder Game API”
Conviene saber
El orden que envías se guarda como el orden correcto: el número uno primero.
Una tarjeta es un objeto con un type y un value. Usa "text" para palabras, o "image", "audio", "youtube" o "link" con una URL en value, y añade alt para una descripción.
Un array de items de los que se sacan los cartones. Envía bastantes más de los que caben en un cartón, para que los cartones sean distintos.
Usa por defecto el nombre “Bingo API”
Conviene saber
Un item es un objeto con un value y, opcionalmente, un type ("text", "image" o "audio" con una URL en value), una description (la pista que lee el anfitrión en el modo de pistas) y alt.
Ajustes que lee
Campo
Tipo
Qué hace
mode
opcionalen settings
string
string
Qué llena las casillas: tus items, tus items cantados por su pista, o simples números (que no necesitan items).
Uno deitemscluesnumbers
Por defecto: "items"
rows
opcionalen settings
number
number
Filas de cada cartón, de 2 a 5.
Por defecto: 3
columns
opcionalen settings
number
number
Columnas de cada cartón, de 2 a 5.
Por defecto: 3
highest_number
opcionalen settings
number
number
En el modo de números, los cartones se llenan desde el 1 hasta este número, 100 como máximo. Es una función de pago: sin un plan se queda en 50.
Por defecto: 50
Petición de ejemplo
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": "es",
"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
}
}'
POST/api/public/v1/i-have-who-hasDe 3 a 40 en items
Contenido
api_c_i_have_who_has
Usa por defecto el nombre “I Have, Who Has API”
Conviene saber
Ninguna pregunta ni ninguna respuesta puede aparecer dos veces: un estudiante que tuviera la respuesta no sabría a qué pregunta corresponde.
Ajustes que lee
Campo
Tipo
Qué hace
chain_shape
opcionalen settings
string
string
Un círculo se cierra sobre sí mismo, así que cualquier tarjeta puede empezar; una línea se abre con una tarjeta de inicio y termina con una tarjeta de final.
{
"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"
}
Un array de llaves. Las llaves que forman parte del código indican su lugar en él.
Usa por defecto el nombre “Keypad API”
Conviene saber
Una llave es un objeto con un value y, opcionalmente, un type ("text", "image" o "audio" con una URL en value), alt y code_position: su lugar en el código, 1 para la primera. Una llave puede aparecer una sola vez en el código, y al menos una llave tiene que estar en él.
Ajustes que lee
Campo
Tipo
Qué hace
instructions
opcionalen settings
string
string
La pregunta o adivinanza a la que responde el código, que se muestra junto al teclado.
force_solution_in_correct_order
opcionalen settings
boolean
boolean
Las llaves hay que pulsarlas en orden. Si está desactivado, cualquier orden de las llaves correctas abre el candado.
Por defecto: false
randomize_order
opcionalen settings
boolean
boolean
Cada jugador recibe las llaves en una disposición distinta.
Un array de grupos. Cada uno tiene un nombre y exactamente cuatro cartas.
Usa por defecto el nombre “Quartets API”
Conviene saber
Una carta es un nombre, o un objeto con un name y una description (el dato que se muestra en ella). Ningún nombre de carta puede aparecer dos veces en el juego: los jugadores piden las cartas por su nombre.
Ajustes que lee
Campo
Tipo
Qué hace
type
opcionalen settings
string
string
Un juego sencillo, o un juego de aprendizaje en el que cada carta muestra un dato. Si lo omites, es learn cuando alguna carta tiene una description.
Uno denormallearn
Petición de ejemplo
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": "es",
"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"
}
}'
Éxito
{
"success": true,
"id": "-Nq8sample_activity_key",
"url": "https://puzzel.org/en/quartets/embed?p=-Nq8sample_activity_key",
"message": "Quartets game created successfully"
}
Un array de preguntas. Las preguntas de opción múltiple llevan sus respuestas; las abiertas llevan la respuesta que aceptas.
Usa por defecto el nombre “Quiz API”
Conviene saber
question_type es "multiple_choice", donde la opción correcta lleva isCorrect true; "true_false", lo mismo pero con exactamente dos opciones, primero verdadero y después falso; o "open_answer", que usa correct_answer en su lugar. Si se omite, se trata como opción múltiple.
El endpoint del quiz pasa settings directamente como bloques de ajustes de la actividad, así que no es un sitio para opciones sueltas: ajusta el quiz en el editor después.
Petición de ejemplo
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": "es",
"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."
}
]
}'
question_type es "multiple_choice", donde la opción correcta lleva isCorrect true; "true_false", lo mismo pero con exactamente dos opciones, primero verdadero y después falso; o "open_answer", que usa correct_answer en su lugar. Si se omite, se trata como opción múltiple.
Ajustes que lee
Campo
Tipo
Qué hace
number_of_tiles
opcionalen settings
number
number
Cuántas casillas tiene el tablero. Entre 10 y 75.
Por defecto: 30
game_mode
opcionalen settings
string
string
Si los jugadores compiten por llegar a la meta o recogen objetos por el camino.
Uno derace_to_finishcollect_items
Por defecto: "race_to_finish"
Petición de ejemplo
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": "es",
"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"
}
}'
Éxito
{
"success": true,
"id": "-Nq8sample_activity_key",
"url": "https://puzzel.org/en/board-game/embed?p=-Nq8sample_activity_key",
"message": "Board Game created successfully"
}
Un array de preguntas de opción múltiple o de verdadero o falso, exactamente con la forma que acepta el endpoint del quiz. Las preguntas abiertas se rechazan: una puerta necesita una respuesta escrita encima.
Usa por defecto el nombre “Maze API”
Ajustes que lee
Campo
Tipo
Qué hace
maze_width
opcionalen settings
string
string
Cómo se distribuyen las salas: en una columna, en un cuadrado o más anchas.
Uno denarrownormalwide
Por defecto: "normal"
maze_corridors
opcionalen settings
string
string
Cuánto laberinto hay entre dos preguntas.
Uno deshortnormallong
Por defecto: "normal"
maze_fog
opcionalen settings
string
string
Mostrar el laberinto entero, o solo lo que el jugador ha tenido al lado.
Uno deoffnear
Por defecto: "off"
maze_wrong_door_pause
opcionalen settings
string
string
Cuánto tiempo siguen cerradas las puertas después de elegir una equivocada.
Uno denoneshortlong
Por defecto: "short"
maze_walk_there
opcionalen settings
boolean
boolean
Ofrece un botón que lleva la ficha hasta la siguiente sala.
Por defecto: false
maze_seed
opcionalen settings
string
string
La semilla a partir de la que se genera el laberinto. La misma semilla y las mismas preguntas dan el mismo laberinto; si la omites, se genera uno nuevo.
Petición de ejemplo
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": "es",
"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"
}
}'
Un array de categorías, de izquierda a derecha. Cada una tiene un nombre y sus pistas, desde la fila de arriba hacia abajo.
Usa por defecto el nombre “Jeopardy API”
Conviene saber
Una pista es una pregunta tal como la acepta el endpoint del quiz, open_answer salvo que indique otra cosa, con correct_answer y, opcionalmente, aliases. También puede llevar value (su propio valor) y daily_double. null deja una casilla vacía.
Ajustes que lee
Campo
Tipo
Qué hace
jeopardy_buzzer_mode
opcionalen settings
string
string
Quién juega y cómo: el anfitrión lo dirige desde la consola, los jugadores pulsan el timbre desde el móvil, o cada jugador resuelve el tablero por su cuenta.
Uno dehostphonessolo
Por defecto: "host"
jeopardy_contestants
opcionalen settings
string
string
Si la consola habla de equipos o de jugadores.
Uno deteamsplayers
Por defecto: "teams"
jeopardy_value_step
opcionalen settings
number
number
Cuánto vale una fila: una pista vale este valor por su número de fila. De 50 a 500, de 50 en 50.
Por defecto: 100
jeopardy_answer_time
opcionalen settings
number
number
Segundos para responder una vez abierta una pista, hasta 300. 0 es sin reloj.
Por defecto: 20
jeopardy_wrong_answer_costs
opcionalen settings
boolean
boolean
Una respuesta incorrecta resta el valor de la pista de la puntuación.
Por defecto: false
jeopardy_reveal_on_timeout
opcionalen settings
boolean
boolean
El tablero muestra la respuesta cuando se acaba el tiempo.
Por defecto: false
jeopardy_require_question_form
opcionalen settings
boolean
boolean
Recuerda a los jugadores que respondan en forma de pregunta.
Por defecto: false
Petición de ejemplo
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": "es",
"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
}
}'
POST/api/public/v1/interactive-videoDe 1 a 50 en items
Contenido
api_c_interactive_video
Usa por defecto el nombre “Interactive Video API”
Conviene saber
Una ventana emergente es un objeto con time (segundos, o "1:23"), kind ("question" salvo que indique "note", "think" o "chapter") y description. Una pregunta es una pregunta tal como la acepta el endpoint del quiz, y puede llevar rewind_to: el punto desde el que se vuelve a reproducir tras una respuesta incorrecta.
Ajustes que lee
Campo
Tipo
Qué hace
video_url
obligatorioen settings
string
string
El vídeo: una página de YouTube, Vimeo o Bunny Stream, o un enlace directo a un archivo mp4, webm o mov.
video_duration
opcionalen settings
number
number
La duración del vídeo en segundos. Si se indica, se rechaza una ventana emergente que quede después del final.
Petición de ejemplo
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": "es",
"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
}
}'
Éxito
{
"success": true,
"id": "-Nq8sample_activity_key",
"url": "https://puzzel.org/en/interactive-video/embed?p=-Nq8sample_activity_key",
"message": "Interactive video created successfully"
}
Una oración, en el campo sentence. Este endpoint no acepta items.
Usa por defecto el nombre “Calculation Game API”
Conviene saber
Si las restricciones son demasiado estrictas para codificar la oración, la llamada responde 400 pidiéndote que las relajes en lugar de guardar un puzle parcial.
Ajustes que lee
Campo
Tipo
Qué hace
sentence
obligatorio
string
string
La oración que los jugadores descubren al resolver las operaciones.
difficulty_level
opcionalen settings
number
number
El resultado más alto que puede tener una operación.
Uno de20501001000
Por defecto: "100"
operators
opcionalen settings
string[]
string[]
Qué operaciones pueden aparecer. x es multiplicar, : es dividir.
Uno de+-x:
Por defecto: ["+", "-", "x", ":"]
max_operations
opcionalen settings
number
number
Cuántas operaciones puede encadenar un mismo cálculo.
Uno de123
Por defecto: 1
number_difficulty
opcionalen settings
number
number
Limita los números individuales dentro de una operación. Desde 5 hasta 1000.
No envíes items ni sentence: size y difficulty son toda la entrada.
El editor solo ofrece la dificultad para 2x3, 3x3 y 3x4. La API la aplica a todos los tamaños, incluidos 2x2 y 4x4.
Ajustes que lee
Campo
Tipo
Qué hace
size
opcionalen settings
string
string
El tamaño de un bloque, escrito como filas por columnas: 3x3 da la cuadrícula clásica de 9x9. El endpoint solo comprueba que se pueda leer como dos números, así que quédate con los tamaños que ofrece el editor.
Uno de2x22x33x33x44x4
Por defecto: "3x3"
difficulty_level
opcionalen settings
string
string
Cuántos números quedan en el tablero para empezar.
POST/api/public/v1/fill-in-the-gapDe 1 a 50 en items
Contenido
api_c_fill_in_the_gap
Usa por defecto el nombre “Fill in the gap API”
Conviene saber
Escribe la oración completa y pon asteriscos alrededor de cada palabra que quieras dejar fuera: "Water boils at *100* degrees." Varias palabras dentro de un mismo par forman un solo hueco. Una entrada también puede llevar una instrucción que se muestra encima de la oración.
Petición de ejemplo
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": "es",
"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."
}
]
}'
Éxito
{
"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"
}
Un array de oraciones. Cada palabra que hay que etiquetar se escribe como [word](label).
Usa por defecto el nombre “Sentence analysis API”
Conviene saber
Escribe una oración como "The [dog](noun) [barks](verb)." Las palabras sin etiqueta se muestran, pero no se preguntan. Las etiquetas noun, verb, adjective y subject se muestran a cada jugador en su propio idioma.
Ajustes que lee
Campo
Tipo
Qué hace
categories
opcionalen settings
string[]
string[]
Las etiquetas entre las que eligen los jugadores, por orden. Si lo omites, son las etiquetas usadas en las oraciones. Envíalo para añadir una etiqueta que ninguna palabra lleva, o para fijar el orden.
Petición de ejemplo
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": "es",
"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"
]
}
}'
POST/api/public/v1/logic-puzzleAl menos 3 en items
Contenido
api_c_logic_puzzle
Usa por defecto el nombre “Logic Puzzle API”
Conviene saber
Cada categoría necesita el mismo número de items, de 3 a 6, todos distintos. Una categoría puede marcarse como ordenada (precios, horas, edades) con una unidad opcional, lo que permite al generador escribir pistas sobre más, menos y cuánto.
Ajustes que lee
Campo
Tipo
Qué hace
story
opcionalen settings
string
string
La historia de fondo que se muestra encima de las pistas.
difficulty
opcionalen settings
string
string
Qué tipos de pistas puede usar el generador.
Uno deeasymediumhard
Por defecto: "easy"
hints
opcionalen settings
boolean
boolean
Ofrece un botón que muestra el siguiente paso.
Por defecto: true
auto_cross
opcionalen settings
boolean
boolean
Al marcar una coincidencia se tacha el resto de su fila y de su columna.
Por defecto: true
clue_mode
opcionalen settings
string
string
Quién escribe las pistas que ven los jugadores: generadas a partir de la tabla, tus propias oraciones en free_clues, o ninguna.
Uno degeneratedfreenone
Por defecto: "generated"
free_clues
opcionalen settings
string[]
string[]
Tus propias pistas, mostradas tal como las escribes, con clue_mode "free". Nada las comprueba.
Petición de ejemplo
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": "es",
"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"
}
}'
POST/api/public/v1/scavenger-huntDe 1 a 50 en items
Contenido
api_c_scavenger_hunt
Usa por defecto el nombre “Scavenger Hunt API”
Conviene saber
Un paso es un objeto con title, description, code y, opcionalmente, accepted_codes (otras grafías que cuentan), url y link_text. Un código se comprueba sin distinguir mayúsculas ni espacios. El mapa con chinchetas solo se puede añadir en el editor.
Petición de ejemplo
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": "es",
"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"
]
}
]
}'
POST/api/public/v1/spatial-reasoningDe 1 a 50 en items
Contenido
api_c_spatial_reasoning
Usa por defecto el nombre “Spatial Reasoning API”
Conviene saber
Los objetos y los destinos son square, triangle, circle, hexagon, pentagon, star, diamond o heart. Las relaciones son inside, outside, behind, in_front_of, right_of, left_of, above, below, same_color_as, different_color_from, larger_than y smaller_than. Una regla que nunca se puede cumplir responde 400.
Ajustes que lee
Campo
Tipo
Qué hace
clue_mode
opcionalen settings
string
string
Reglas mostradas como imágenes o como oraciones.
Uno devisualtext
Por defecto: "visual"
unique_object_picks
opcionalen settings
boolean
boolean
Cada forma solo se puede colocar una vez.
Por defecto: false
hide_color_picker
opcionalen settings
boolean
boolean
Los jugadores no pueden cambiar el color de las formas.
Un array de oraciones. Cada una enumera las palabras dibujadas como imágenes; todas las demás palabras se quedan con sus letras.
Usa por defecto el nombre “Rebus API”
Conviene saber
Una palabra se dibuja con partes que juntas la forman. Una parte tiene las letras que representa (text), un emoji, y shows: la palabra de lo que muestra la imagen ("broom" para una imagen que representa "room"). Puzzel calcula los cambios de letras. Una parte puede ser un símbolo en su lugar, como 4 para "for".
Ajustes que lee
Campo
Tipo
Qué hace
rebus_commas
opcionalen settings
boolean
boolean
Dibuja una primera o última letra suprimida como una coma junto a la imagen.
Una URL de imagen, en el campo image. Este endpoint no acepta items.
Usa por defecto el nombre “Jigsaw Game API”
Conviene saber
La API siempre crea un rompecabezas de 4 por 4. El número de piezas, las piezas irregulares y los bordes rectos son ajustes del editor: enviar rows o columns aquí no hace nada.
La URL se guarda tal como la enviaste y el archivo nunca se copia, así que tiene que seguir siendo accesible públicamente mientras se juegue la actividad.
Ajustes que lee
Campo
Tipo
Qué hace
image
obligatorio
string
string
URL absoluta de la imagen que se va a recortar. Se envía en el nivel superior, no dentro de settings.
Una URL de imagen, dentro de settings. Este endpoint no acepta items.
Usa por defecto el nombre “Sliding Puzzle API”
Conviene saber
A diferencia del rompecabezas, este endpoint lee su imagen de settings.image. Un campo image en el nivel superior se ignora y la llamada responde 400.
La URL se guarda tal como la enviaste y el archivo nunca se copia, así que tiene que seguir siendo accesible públicamente mientras se juegue la actividad.
Ajustes que lee
Campo
Tipo
Qué hace
image
obligatorioen settings
string
string
URL absoluta de la imagen que se va a desordenar. A diferencia del rompecabezas, esta va dentro de settings.