Saltar al contenido
Estás probando el nuevo Puzzel.org Volver al sitio actual
API para desarrolladores

Crea actividades desde tu propio sistema

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
20 tipos de actividad
Cuota
10 actividades al día

Tu primera petición

Nada que instalar y ningún handshake: envía un cuerpo JSON con tu clave, tu email y tu contenido. La respuesta trae la clave de la nueva actividad y la URL en la que se juega.

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"
    }
  ]
}'
Éxito
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/crossword/embed?p=-Nq8sample_activity_key",
  "message": "Crossword created successfully"
}

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

No hay cabeceras ni bearer token. Las dos credenciales viajan en el cuerpo JSON de cada petición, y la clave solo se acepta para la cuenta a la que pertenece ese email.

CampoTipoQué hace
account_api_key
obligatorio
string
stringLa clave de API de tu cuenta. Va en el cuerpo, no en una cabecera.
email
obligatorio
string
stringLa 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.

Iniciar sesión

Las claves de API se entregan cuando empieza una suscripción, así que una cuenta gratis todavía no tiene una.

Ver los planes

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 aceptan los mismos cinco campos. Lo que cambia es el campo de contenido que va debajo: la mayoría aceptan un array de elementos, unos pocos una sola oración o una sola imagen, y el sudoku no acepta nada en absoluto.

CampoTipoQué hace
account_api_key
obligatorio
string
stringLa clave de API de tu cuenta. Va en el cuerpo, no en una cabecera.
email
obligatorio
string
stringLa 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
stringEl nombre que recibe la actividad en tu panel. Si lo omites, el endpoint usa su propio nombre por defecto.
language
opcional
string
stringSolo 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
stringOmí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.

Éxito
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/crossword/embed?p=-Nq8sample_activity_key",
  "message": "Crossword created successfully"
}
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 y la actividad correspondiente se reconstruye en su sitio: su contenido se sustituye, su nombre y su marca de versión se renuevan, y la clave sigue siendo la misma, así que los enlaces e inserciones que ya compartiste siguen funcionando. Los resultados, la carpeta en la que está y todos los ajustes que el endpoint no escribe por sí mismo se quedan como estaban.

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ó.

EstadoQué 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

Crucigrama

Entrelaza tus respuestas en una cuadrícula y numera las definiciones por ti.

#
POST /api/public/v1/crossword Al menos 2 en items
Contenido

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.
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"
    }
  ]
}'
Éxito
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/crossword/embed?p=-Nq8sample_activity_key",
  "message": "Crossword created successfully"
}

Sopa de letras

Esconde tus palabras en una cuadrícula de letras, en las direcciones y con la forma que elijas.

#
POST /api/public/v1/wordseeker Al menos 2 en items
Contenido

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
CampoTipoQué hace
hidden_solution
opcional en settings
string
stringLas 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
opcional en 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 de westeastnorthsouthnorthwestnortheastsouthwestsoutheast
Por defecto: ["east", "southeast", "south"]
template
opcional en settings
string
stringRecorta la cuadrícula con una forma en lugar de dejarla cuadrada.
Uno de squarecirclecrossdiamondpyramidsmileystarcross_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"
  }
}'
Éxito
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/wordseeker/embed?p=-Nq8sample_activity_key",
  "message": "Wordseeker created successfully"
}

Acróstico

Apila tus respuestas para que una columna forme una palabra oculta.

#
POST /api/public/v1/acrostic Al menos 1 en items
Contenido

Un array de palabras. Entre todas tienen que aportar cada letra de la palabra oculta.

Usa por defecto el nombre “Acrostic API”

Conviene saber
  • Si las respuestas no pueden aportar las letras que necesita la solución, la llamada responde 500 en lugar de guardar una cuadrícula a medio construir.
  • El generador reordena tus respuestas para que la columna funcione, así que el orden que envías no es el orden que ven los jugadores.
Ajustes que lee
CampoTipoQué hace
hidden_solution
obligatorio en settings
string
stringLa palabra que forma la columna resaltada. Este endpoint no funciona sin ella.
Petición de ejemplo
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": "es",
  "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"
  }
}'
Éxito
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/acrostic/embed?p=-Nq8sample_activity_key",
  "message": "Acrostic created successfully"
}

Palabras revueltas

api_e_word_scramble

#
POST /api/public/v1/word-scramble Al menos 1 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
CampoTipoQué hace
hidden_solution
opcional en settings
string
stringUna 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"
  }
}'
Éxito
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/word-scramble/embed?p=-Nq8sample_activity_key",
  "message": "Word Scramble created successfully"
}

Ahorcado

Convierte tus palabras o frases en rondas de adivinar letras.

#
POST /api/public/v1/hangman Al menos 1 en items
Contenido

Un array de palabras o frases cortas. La definición es la pista que ven los jugadores.

Usa por defecto el nombre “Hangman API”

Petición de ejemplo
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": "es",
  "items": [
    {
      "answer": "BANANA",
      "description": "A long yellow fruit",
      "type": "text"
    }
  ]
}'
Éxito
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/hangman/embed?p=-Nq8sample_activity_key",
  "message": "Hangman created successfully"
}

Wordle

Crea un juego de adivinar la palabra con cada palabra que envías.

#
POST /api/public/v1/wordle Al menos 1 en items
Contenido

Un array de palabras. Los jugadores tienen una ronda por palabra.

Usa por defecto el nombre “Wordle API”

Conviene saber
  • Se crea con el ajuste de comprobar que los intentos son palabras reales activado. Desactívalo en el editor si tus palabras son nombres o inventadas.
Petición de ejemplo
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": "es",
  "items": [
    {
      "answer": "MELON",
      "description": "Sweet and green",
      "type": "text"
    },
    {
      "answer": "PEACH",
      "description": "Fuzzy and orange",
      "type": "text"
    }
  ]
}'
Éxito
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/wordle/embed?p=-Nq8sample_activity_key",
  "message": "Wordle created successfully"
}

Práctica de mecanografía

api_e_typing_practice

#
POST /api/public/v1/typing-practice Al menos 1 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"
}

Ruleta de la suerte

api_e_wheel_of_fortune

#
POST /api/public/v1/wheel-of-fortune Al menos 1 en items
Contenido

api_c_wheel_of_fortune

Usa por defecto el nombre “Wheel of Fortune API”

Conviene saber
  • Se crea con “mostrar el resultado solo en la ruleta”, así que el resultado se lee en la ruleta en lugar de anunciarse al lado.
Petición de ejemplo
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": "es",
  "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"
    }
  ]
}'
Éxito
{
  "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"
}
Tarjetas y parejas

Memory

Tarjetas boca abajo para darles la vuelta y emparejarlas.

#
POST /api/public/v1/memory Al menos 2 en items
Contenido

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.
Petición de ejemplo
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": "es",
  "items": [
    {
      "cards": [
        {
          "type": "text",
          "value": "Apple"
        },
        {
          "type": "text",
          "value": "A red fruit"
        }
      ]
    },
    {
      "cards": [
        {
          "type": "text",
          "value": "Banana"
        },
        {
          "type": "text",
          "value": "A yellow fruit"
        }
      ]
    }
  ]
}'
Éxito
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/memory/embed?p=-Nq8sample_activity_key",
  "message": "Memory game created successfully"
}

Juego de parejas

api_e_matching_pairs

#
POST /api/public/v1/matching-pairs Al menos 2 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.
Petición de ejemplo
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": "es",
  "items": [
    {
      "cards": [
        {
          "type": "text",
          "value": "Apple"
        },
        {
          "type": "text",
          "value": "A red fruit"
        }
      ]
    },
    {
      "cards": [
        {
          "type": "text",
          "value": "Banana"
        },
        {
          "type": "text",
          "value": "A yellow fruit"
        }
      ]
    }
  ]
}'
Éxito
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/matching-pairs/embed?p=-Nq8sample_activity_key",
  "message": "Matching pairs game created successfully"
}

Tarjetas de estudio

api_e_flash_cards

#
POST /api/public/v1/flash-cards Al menos 1 en items
Contenido

api_c_flash_cards

Usa por defecto el nombre “Flash Cards API”

Conviene saber
  • 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.
Petición de ejemplo
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": "es",
  "items": [
    {
      "cards": [
        {
          "type": "text",
          "value": "Apple"
        },
        {
          "type": "text",
          "value": "A red fruit"
        }
      ]
    },
    {
      "cards": [
        {
          "type": "text",
          "value": "Banana"
        },
        {
          "type": "text",
          "value": "A yellow fruit"
        }
      ]
    }
  ]
}'
Éxito
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/flash-cards/embed?p=-Nq8sample_activity_key",
  "message": "Flash Cards created successfully"
}

Clasificación

Tarjetas para clasificar en la categoría a la que pertenecen.

#
POST /api/public/v1/categorize Al menos 2 en items
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.
Petición de ejemplo
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": "es",
  "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"
        }
      ]
    }
  ]
}'
Éxito
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/categorize/embed?p=-Nq8sample_activity_key",
  "message": "Categorize game created successfully"
}

Secuencia

Una secuencia que los jugadores tienen que volver a ordenar.

#
POST /api/public/v1/reorder Al menos 1 en items
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.
Petición de ejemplo
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": "es",
  "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"
        }
      ]
    }
  ]
}'
Éxito
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/reorder/embed?p=-Nq8sample_activity_key",
  "message": "Reorder game created successfully"
}
Preguntas y respuestas

Quiz

Preguntas de opción múltiple y abiertas, puntuadas sobre la marcha.

#
POST /api/public/v1/quiz Al menos 1 en items
Contenido

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 en true, 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."
    }
  ]
}'
Éxito
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/quiz/embed?p=-Nq8sample_activity_key",
  "message": "Quiz created successfully"
}

Juego de mesa

api_e_board_game

#
POST /api/public/v1/board-game Al menos 1 en items
Contenido

api_c_board_game

Usa por defecto el nombre “Board Game API”

Conviene saber
  • question_type es "multiple_choice", donde la opción correcta lleva isCorrect en true, o "open_answer", que usa correct_answer en su lugar. Si se omite, se trata como opción múltiple.
Ajustes que lee
CampoTipoQué hace
number_of_tiles
opcional en settings
number
numberCuántas casillas tiene el tablero. Entre 10 y 75.
Por defecto: 30
game_mode
opcional en settings
string
stringSi los jugadores compiten por llegar a la meta o recogen objetos por el camino.
Uno de race_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"
}
Oraciones y números

Criptograma

Convierte una oración en un código que descifrar, carácter a carácter.

#
POST /api/public/v1/cryptogram No acepta items
Contenido

Una oración, en el campo sentence. Este endpoint no acepta items.

Usa por defecto el nombre “Cryptogram API”

Conviene saber
  • Cualquier cosa que envíes en items se ignora: el puzle se construye solo a partir de la oración.
Ajustes que lee
CampoTipoQué hace
sentence
obligatorio
string
stringLa oración que se va a cifrar. Los jugadores la descifran carácter a carácter.
helpers
opcional en settings
string
stringQué caracteres se dan gratis como punto de partida: ninguno, los más comunes, las vocales o los que indiques tú.
Uno de nonemost_commonvowelscustom
Por defecto: "none"
character_list
opcional en settings
string
stringEl alfabeto con el que se construye el cifrado. Si se deja vacío, el cifrado elige el suyo.
extra_letters
opcional en settings
string
stringLos caracteres que se dan cuando helpers es "custom". Se ignora en los demás modos de ayuda.
hide_unused_characters
opcional en settings
boolean
booleanDeja fuera de la clave los caracteres que la oración nunca usa.
Por defecto: false
Petición de ejemplo
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": "es",
  "sentence": "An apple a day keeps the doctor away",
  "settings": {
    "helpers": "vowels",
    "hide_unused_characters": false
  }
}'
Éxito
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/cryptogram/embed?p=-Nq8sample_activity_key",
  "message": "Cryptogram created successfully"
}

Ejercicio de cálculo

Esconde una oración detrás de operaciones: resuelve la operación y revela la letra.

#
POST /api/public/v1/calculation No acepta items
Contenido

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
CampoTipoQué hace
sentence
obligatorio
string
stringLa oración que los jugadores descubren al resolver las operaciones.
difficulty_level
opcional en settings
number
numberEl resultado más alto que puede tener una operación.
Uno de 20501001000
Por defecto: "100"
operators
opcional en settings
string[]
string[]Qué operaciones pueden aparecer. x es multiplicar, : es dividir.
Uno de +-x:
Por defecto: ["+", "-", "x", ":"]
max_operations
opcional en settings
number
numberCuántas operaciones puede encadenar un mismo cálculo.
Uno de 123
Por defecto: 1
number_difficulty
opcional en settings
number
numberLimita los números individuales dentro de una operación. Desde 5 hasta 1000.
Por defecto: 100
Petición de ejemplo
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": "es",
  "sentence": "Fruit salad for everyone",
  "settings": {
    "difficulty_level": "100",
    "operators": [
      "+",
      "-",
      "x",
      ":"
    ],
    "max_operations": 1,
    "number_difficulty": 100
  }
}'
Éxito
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/calculation/embed?p=-Nq8sample_activity_key",
  "message": "Calculation game created successfully"
}

Sudoku

Genera una cuadrícula resuelta y luego quita números.

#
POST /api/public/v1/sudoku No acepta items
Contenido

Nada. Todo el puzle sale de sus dos ajustes.

Usa por defecto el nombre “Sudoku API”

Conviene saber
  • 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
CampoTipoQué hace
size
opcional en settings
string
stringEl 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 de 2x22x33x33x44x4
Por defecto: "3x3"
difficulty_level
opcional en settings
string
stringCuántos números quedan en el tablero para empezar.
Uno de easynormalhard
Por defecto: "normal"
Petición de ejemplo
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": "es",
  "settings": {
    "size": "3x3",
    "difficulty_level": "normal"
  }
}'
Éxito
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/sudoku/embed?p=-Nq8sample_activity_key",
  "message": "Sudoku created successfully"
}
Imágenes

Rompecabezas

Corta una imagen en piezas para volver a montarla arrastrándolas.

#
POST /api/public/v1/jigsaw No acepta items
Contenido

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
CampoTipoQué hace
image
obligatorio
string
stringURL absoluta de la imagen que se va a recortar. Se envía en el nivel superior, no dentro de settings.
Petición de ejemplo
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": "es",
  "image": "https://example.com/orchard.jpg"
}'
Éxito
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/jigsaw/embed?p=-Nq8sample_activity_key",
  "message": "Jigsaw game created successfully"
}

Puzle deslizante

Desordena una imagen en fichas que se deslizan hasta su sitio.

#
POST /api/public/v1/slidingpuzzle No acepta items
Contenido

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
CampoTipoQué hace
image
obligatorio en settings
string
stringURL absoluta de la imagen que se va a desordenar. A diferencia del rompecabezas, esta va dentro de settings.
Petición de ejemplo
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": "es",
  "settings": {
    "image": "https://example.com/orchard.jpg"
  }
}'
Éxito
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/slidingpuzzle/embed?p=-Nq8sample_activity_key",
  "message": "Sliding puzzle created successfully"
}

¿Algo no funciona como debería?

Envía la petición que probaste y el error que recibiste y tendrás una respuesta de verdad, de la persona que escribió el endpoint.

Escribir a soporte