Naar de inhoud
Developer API

Maak activiteiten vanuit je eigen systeem

Eén POST per activiteitstype. Stuur je inhoud als JSON en je krijgt een activiteit in je Puzzel.org-account terug, plus een URL die je aan spelers kunt geven of in een iframe kunt zetten.

Base URL
https://puzzel.org/api/public/v1
Auth
Sleutel + e-mailadres in de body
Endpoints
38 activiteitstypen
Quotum
10 activiteiten per dag

Je eerste request

Stuur een POST-request met je API-sleutel, e-mailadres en inhoud als JSON. Je hoeft niets te installeren of vooraf verbinding te maken. De response bevat de sleutel van de nieuwe activiteit en de URL om deze te spelen.

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

Elk voorbeeld op deze pagina is een compleet, uitvoerbaar request. Vul je eigen sleutel en inhoud in en het werkt meteen.

Authenticatie

Je stuurt de API-sleutel en het e-mailadres mee in de JSON-body van elk request. Authenticatieheaders of een bearer token zijn niet nodig. De sleutel moet horen bij het account met dat e-mailadres.

VeldTypeWat het doet
account_api_key
verplicht
string
stringDe API-sleutel van je account. Die gaat in de body, niet in een header.
email
verplicht
string
stringHet e-mailadres waarmee je Puzzel.org-account inlogt. De sleutel is alleen geldig in combinatie hiermee.

Je sleutel staat in het accountgedeelte van je dashboard, achter Tonen.

Inloggen

API-sleutels worden uitgegeven zodra een abonnement ingaat, dus een gratis account heeft er nog geen.

Bekijk de abonnementen

Behandel de sleutel als een wachtwoord. Hij maakt en overschrijft activiteiten in je account, dus houd hem server-side en buiten alles wat een browser kan lezen.

De request-body

Elk endpoint gebruikt dezelfde vijf basisvelden. Het veld voor de inhoud verschilt per activiteitstype: meestal stuur je een array met items, soms één zin of afbeelding. Voor sudoku hoef je geen inhoud mee te sturen.

VeldTypeWat het doet
account_api_key
verplicht
string
stringDe API-sleutel van je account. Die gaat in de body, niet in een header.
email
verplicht
string
stringHet e-mailadres waarmee je Puzzel.org-account inlogt. De sleutel is alleen geldig in combinatie hiermee.
title
optioneel
string
stringDe naam die de activiteit in je dashboard krijgt. Laat je hem weg, dan gebruikt het endpoint zijn eigen standaardnaam.
language
optioneel
string
stringBepaalt de taalcode in de URL van de response; je inhoud wordt niet vertaald. Bij een woordzoeker bepaalt deze waarde ook de vulletters: bij "ar" worden Arabische letters gebruikt.
Standaard: "en"
activity_key
optioneel
string
stringLaat je dit weg, dan wordt er een nieuwe activiteit gemaakt. Stuur je de key van een activiteit die je al bezit, dan wordt die in plaats daarvan opnieuw opgebouwd.

settings is een object met opties per endpoint. Welke een endpoint leest staat er hieronder bij vermeld; al het andere dat je erin zet wordt genegeerd.

Wat je terugkrijgt

Een geslaagde aanroep geeft statuscode 200 terug, samen met de sleutel van de nieuwe activiteit en de URL om deze te spelen. Bij een fout bevat de response success: false en een foutmelding als string.

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

De url die je terugkrijgt is de insluitweergave. Vervang embed door play om hem paginavullend te openen, of door build om hem in de editor te openen — de key achter p= blijft hetzelfde.

Aanmaken versus bijwerken

Stuur activity_key mee om een bestaande activiteit opnieuw op te bouwen. De inhoud wordt vervangen en de naam en het versiestempel worden bijgewerkt. De sleutel blijft gelijk, dus gedeelde links en ingesloten activiteiten blijven werken. Resultaten, de map en instellingen die het endpoint niet aanpast, blijven behouden.

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 wordt bij elke update toegepast, ook de standaardwaarde — laat je hem weg, dan wordt de activiteit hernoemd naar de standaardnaam van dat endpoint.
  • Instellingenblokken die het endpoint aanpast, worden volledig opnieuw opgebouwd. Ze krijgen de waarden uit je request of, als je die weglaat, de standaardwaarden van het endpoint.
  • Je kunt alleen activiteiten bijwerken die je eigen account bezit. De key van iemand anders antwoordt met 403.
  • Een update kost hetzelfde als een aanmaak: één aanroep van het quotum van vandaag.

Rate limit

10
10 activiteiten per account per dag

Elke geslaagde aanroep telt mee, aanmaken en bijwerken allebei. Ga je eroverheen, dan antwoordt het volgende request met 429 tot de teller is gewist.

De teller wordt één keer per dag gewist door een geplande taak, niet op basis van een voortschrijdend venster van 24 uur.

Fouten

Een foutresponse is altijd JSON met dezelfde twee velden. Het veld error bevat een leesbare melding die aangeeft welk veld of welke limiet het probleem veroorzaakt.

StatusWat het betekent
400
Bad Request
Er ontbreekt iets in de body, of het is verkeerd gevormd of buiten bereik. De melding noemt het veld.
401
Unauthorized
Het e-mailadres is onbekend, of de sleutel hoort niet bij dat account.
403
Forbidden
De activity_key die je stuurde hoort bij een ander account.
429
Too Many Requests
Het quotum van vandaag is op. Het wordt één keer per dag gewist.
500
Server Error
De generator kon geen puzzel maken van wat je stuurde — meestal te weinig woorden, of woorden die niet in elkaar passen.

Endpoints

Eén pad per activiteitstype, allemaal POST, allemaal onder dezelfde base URL. Bij elk staat welke inhoud het nodig heeft, welke instellingen het leest en een request dat je kunt uitvoeren.

Woorden & letters

Kruiswoordpuzzel

Vlecht je antwoorden in elkaar tot een raster en nummert de omschrijvingen voor je.

#
POST /api/public/v1/crossword 2 tot 80 in items
Inhoud

Een array van woorden. Elk item koppelt het antwoord aan de omschrijving die ernaar verwijst.

Valt terug op de naam “Crossword API”

Goed om te weten
  • Antwoorden korter dan twee tekens worden weggelaten voordat het raster wordt gebouwd, en er moeten er minstens twee overblijven.
  • Antwoorden worden in hoofdletters gezet en de generator krijgt twintig pogingen om ze te plaatsen. Lukt het niet om ook maar één woord te plaatsen, dan antwoordt de aanroep met 500.
Instellingen die het leest
VeldTypeWat het doet
hidden_solution
optioneel in settings
string
stringEen optioneel bonuswoord. De letters ervan worden gemarkeerd in vakjes van het voltooide raster, zodat spelers ze kunnen verzamelen als de kruiswoordpuzzel is opgelost. Elke letter ervan moet dus in de antwoorden voorkomen.
Voorbeeldrequest
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": "nl",
  "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"
    }
  ]
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/crossword/embed?p=-Nq8sample_activity_key",
  "message": "Crossword created successfully"
}

Woordzoeker

Verstopt je woorden in een letterraster, in de richtingen en de vorm die jij kiest.

#
POST /api/public/v1/wordseeker 2 tot 40 in items
Inhoud

Een array van woorden. De omschrijvingstekst wordt de woordenlijst waar spelers mee werken.

Valt terug op de naam “Wordseeker API”

Goed om te weten
  • Antwoorden korter dan twee tekens worden weggelaten, en elk antwoord wordt in hoofdletters gezet voordat het het raster ingaat.
  • Het raster wordt opgevuld met Latijnse letters, tenzij language "ar" is — dan worden de vulletters Arabisch.
Instellingen die het leest
VeldTypeWat het doet
hidden_solution
optioneel in settings
string
stringDe overgebleven letters vormen dit woord. Als je een verborgen oplossing opgeeft, geeft de generator die voorrang bij het indelen van het raster.
directions
optioneel in settings
string[]
string[]In welke richtingen een woord mag lopen. Laat je dit weg, dan lopen woorden alleen naar rechts, schuin rechtsonder en naar beneden.
Een van westeastnorthsouthnorthwestnortheastsouthwestsoutheast
Standaard: ["east", "southeast", "south"]
template
optioneel in settings
string
stringSnijdt het raster in een vorm in plaats van het vierkant te laten.
Een van squarecirclecrossdiamondpyramidsmileystarcross_plus
Voorbeeldrequest
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": "nl",
  "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"
  }
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/wordseeker/embed?p=-Nq8sample_activity_key",
  "message": "Wordseeker created successfully"
}

Filippine puzzel

Stapelt je antwoorden zo dat één kolom een verborgen woord vormt.

#
POST /api/public/v1/acrostic 1 tot 40 in items
Inhoud

Een array van woorden. Samen moeten ze elke letter van het verborgen woord leveren.

Valt terug op de naam “Acrostic API”

Goed om te weten
  • Als de antwoorden niet de letters kunnen leveren die de oplossing nodig heeft, antwoordt de aanroep met 500 in plaats van een half opgebouwd raster op te slaan.
  • De generator zet je antwoorden in een andere volgorde om de kolom te laten kloppen, dus de volgorde die je stuurt is niet de volgorde die spelers zien.
Instellingen die het leest
VeldTypeWat het doet
hidden_solution
verplicht in settings
string
stringHet woord dat de gemarkeerde kolom vormt. Zonder dit doet dit endpoint niets.
Voorbeeldrequest
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": "nl",
  "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"
  }
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/acrostic/embed?p=-Nq8sample_activity_key",
  "message": "Acrostic created successfully"
}

Woordhussel

api_e_word_scramble

#
POST /api/public/v1/word-scramble 1 tot 40 in items
Inhoud

api_c_word_scramble

Valt terug op de naam “Word Scramble API”

Goed om te weten
  • Activiteiten die via de API zijn gemaakt hebben de instelling voor willekeurige volgorde altijd aan, dus de volgorde die je stuurt is niet de volgorde die spelers krijgen.
Instellingen die het leest
VeldTypeWat het doet
hidden_solution
optioneel in settings
string
stringEen optioneel bonuswoord dat spelers invullen zodra de rest is opgelost.
Voorbeeldrequest
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": "nl",
  "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"
  }
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/word-scramble/embed?p=-Nq8sample_activity_key",
  "message": "Word Scramble created successfully"
}

Galgje

Maakt van je woorden of zinnen rondes raad-de-letter.

#
POST /api/public/v1/hangman 1 tot 50 in items
Inhoud

Een array van woorden of korte zinnen. De omschrijving is de hint die spelers zien.

Valt terug op de naam “Hangman API”

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

Wordle

Maakt van elk woord dat je stuurt een raad-het-woord-spel.

#
POST /api/public/v1/wordle 1 tot 50 in items
Inhoud

Een array van woorden. Spelers krijgen één ronde per woord.

Valt terug op de naam “Wordle API”

Goed om te weten
  • Standaard wordt gecontroleerd of ingevoerde woorden in de woordenlijst staan. Zet deze instelling uit in de editor als je namen of zelfbedachte woorden gebruikt.
Voorbeeldrequest
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": "nl",
  "items": [
    {
      "answer": "MELON",
      "description": "Sweet and green",
      "type": "text"
    },
    {
      "answer": "PEACH",
      "description": "Fuzzy and orange",
      "type": "text"
    }
  ]
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/wordle/embed?p=-Nq8sample_activity_key",
  "message": "Wordle created successfully"
}

Typeoefening

api_e_typing_practice

#
POST /api/public/v1/typing-practice 1 tot 50 in items
Inhoud

api_c_typing_practice

Valt terug op de naam “Typing Practice API”

Voorbeeldrequest
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": "nl",
  "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"
    }
  ]
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/typing-practice/embed?p=-Nq8sample_activity_key",
  "message": "Typing Practice created successfully"
}

Rad van fortuin

api_e_wheel_of_fortune

#
POST /api/public/v1/wheel-of-fortune 1 tot 50 in items
Inhoud

api_c_wheel_of_fortune

Valt terug op de naam “Wheel of Fortune API”

Goed om te weten
  • Gemaakt met “toon de uitkomst alleen in het rad”, dus het resultaat lees je af van het rad in plaats van dat het ernaast wordt gemeld.
Voorbeeldrequest
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": "nl",
  "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"
    }
  ]
}'
Geslaagd
{
  "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"
}

Zweedse puzzel

Een Zweedse puzzel: de omschrijvingen staan in het raster, elk met een pijl naar zijn antwoord.

#
POST /api/public/v1/arrowword 2 tot 80 in items
Inhoud

Een array van woorden. Elk item koppelt het antwoord aan een omschrijving die kort genoeg is voor één vakje.

Valt terug op de naam “Arrowword API”

Instellingen die het leest
VeldTypeWat het doet
hidden_solution
optioneel in settings
string
stringEen optioneel bonuswoord. De letters ervan worden gemarkeerd in vakjes van het voltooide raster. Elke letter ervan moet dus in de antwoorden voorkomen.
Voorbeeldrequest
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": "nl",
  "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"
  }
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/arrowword/embed?p=-Nq8sample_activity_key",
  "message": "Arrowword created successfully"
}

Strands

Een raster waarin elke letter bij een themawoord hoort, met één woord dat het thema noemt en van rand tot rand loopt.

#
POST /api/public/v1/strands 2 tot 24 in items
Inhoud

Een array van themawoorden. Samen met het spangram moeten hun letters een bord precies vullen.

Valt terug op de naam “Strands API”

Goed om te weten
  • De letters van alle woorden en het spangram samen moeten precies 30, 35, 36, 40, 42, 45, 48, 49, 50, 54, 56, 60, 63, 64, 70, 72 of 80 zijn. Bij elk ander aantal antwoordt de aanroep met 400 en zegt hij hoeveel letters je moet toevoegen of weghalen.
Instellingen die het leest
VeldTypeWat het doet
theme
optioneel in settings
string
stringHet raadsel boven het raster. Laat je dit weg, dan zien spelers de titel.
spangram
optioneel in settings
string
stringHet woord of de zin die het thema noemt en het bord van de ene rand naar de andere doorkruist.
Voorbeeldrequest
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": "nl",
  "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"
  }
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/strands/embed?p=-Nq8sample_activity_key",
  "message": "Strands created successfully"
}

Opnoemspel

api_e_name_them_all

#
POST /api/public/v1/name-them-all 1 tot 250 in items
Inhoud

api_c_name_them_all

Valt terug op de naam “Name Them All API”

Goed om te weten
  • Een item is een object met een answer, en eventueel aliases (andere spellingen die ook tellen), een description (de hint) en een group. Hoofdletters, accenten en leestekens worden genegeerd wanneer een naam wordt gecontroleerd.
Instellingen die het leest
VeldTypeWat het doet
list_match_mode
optioneel in settings
string
stringOf een naam telt op het moment dat hij wordt getypt, of pas bij Enter.
Een van while_typingon_enter
Standaard: "while_typing"
list_slot_hint
optioneel in settings
string
stringWat een leeg vakje weggeeft: niets, de lengte van de naam, de eerste letter, of de hint die je hebt geschreven.
Een van nonelengthfirst_letterhint
Standaard: "none"
list_arrange
optioneel in settings
string
stringEén kolom per groep, of één lijst.
Een van groupsone_list
Standaard: "groups"
list_allow_give_up
optioneel in settings
boolean
booleanToont een knop om op te geven, die de ronde beëindigt en laat zien wat gemist is.
Standaard: false
Voorbeeldrequest
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": "nl",
  "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
  }
}'
Geslaagd
{
  "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"
}
Kaarten & paren

Memory

Omgekeerde kaarten om om te draaien en in paren te matchen.

#
POST /api/public/v1/memory 2 tot 30 in items
Inhoud

Een array van paren. Elk paar bevat de twee kaarten die bij elkaar horen.

Valt terug op de naam “Memory Game API”

Goed om te weten
  • Een kaart is een object met een type en een value. Gebruik "text" voor woorden, of "image", "audio", "youtube" of "link" met een URL in value, en voeg alt toe voor een beschrijving.
Voorbeeldrequest
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": "nl",
  "items": [
    {
      "cards": [
        {
          "type": "text",
          "value": "Apple"
        },
        {
          "type": "text",
          "value": "A red fruit"
        }
      ]
    },
    {
      "cards": [
        {
          "type": "text",
          "value": "Banana"
        },
        {
          "type": "text",
          "value": "A yellow fruit"
        }
      ]
    }
  ]
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/memory/embed?p=-Nq8sample_activity_key",
  "message": "Memory game created successfully"
}

Koppelspel

api_e_matching_pairs

#
POST /api/public/v1/matching-pairs 2 tot 30 in items
Inhoud

api_c_matching_pairs

Valt terug op de naam “Matching Game API”

Goed om te weten
  • Een kaart is een object met een type en een value. Gebruik "text" voor woorden, of "image", "audio", "youtube" of "link" met een URL in value, en voeg alt toe voor een beschrijving.
Voorbeeldrequest
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": "nl",
  "items": [
    {
      "cards": [
        {
          "type": "text",
          "value": "Apple"
        },
        {
          "type": "text",
          "value": "A red fruit"
        }
      ]
    },
    {
      "cards": [
        {
          "type": "text",
          "value": "Banana"
        },
        {
          "type": "text",
          "value": "A yellow fruit"
        }
      ]
    }
  ]
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/matching-pairs/embed?p=-Nq8sample_activity_key",
  "message": "Matching pairs game created successfully"
}

Flitskaarten

api_e_flash_cards

#
POST /api/public/v1/flash-cards 1 tot 150 in items
Inhoud

api_c_flash_cards

Valt terug op de naam “Flash Cards API”

Goed om te weten
  • Het endpoint slaat zoveel kaarten op als je stuurt, dus stuur er precies twee per item — eerst de voorkant, dan de achterkant.
  • Een kaart is een object met een type en een value. Gebruik "text" voor woorden, of "image", "audio", "youtube" of "link" met een URL in value, en voeg alt toe voor een beschrijving.
Voorbeeldrequest
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": "nl",
  "items": [
    {
      "cards": [
        {
          "type": "text",
          "value": "Apple"
        },
        {
          "type": "text",
          "value": "A red fruit"
        }
      ]
    },
    {
      "cards": [
        {
          "type": "text",
          "value": "Banana"
        },
        {
          "type": "text",
          "value": "A yellow fruit"
        }
      ]
    }
  ]
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/flash-cards/embed?p=-Nq8sample_activity_key",
  "message": "Flash Cards created successfully"
}

Sorteerpuzzel

Kaarten om te sorteren in de bak waar ze thuishoren.

#
POST /api/public/v1/categorize Minimaal 2 in items · Hoogstens 60 kaarten in totaal
Inhoud

Een array van categorieën, elk met een naam en de kaarten die erin horen.

Valt terug op de naam “Categorize Game API”

Goed om te weten
  • Een categorie die zonder naam wordt gestuurd, wordt opgeslagen als “Untitled Category”, dus stuur er altijd een mee.
  • Een kaart is een object met een type en een value. Gebruik "text" voor woorden, of "image", "audio", "youtube" of "link" met een URL in value, en voeg alt toe voor een beschrijving.
Voorbeeldrequest
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": "nl",
  "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"
        }
      ]
    }
  ]
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/categorize/embed?p=-Nq8sample_activity_key",
  "message": "Categorize game created successfully"
}

Volgordepuzzel

Een reeks die spelers weer in de juiste volgorde moeten zetten.

#
POST /api/public/v1/reorder Minimaal 1 in items · Hoogstens 60 kaarten in totaal
Inhoud

Een array van reeksen. Elke reeks bevat zijn kaarten in de juiste volgorde.

Valt terug op de naam “Reorder Game API”

Goed om te weten
  • De volgorde die je stuurt wordt opgeslagen als de juiste volgorde — nummer één eerst.
  • Een kaart is een object met een type en een value. Gebruik "text" voor woorden, of "image", "audio", "youtube" of "link" met een URL in value, en voeg alt toe voor een beschrijving.
Voorbeeldrequest
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": "nl",
  "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"
        }
      ]
    }
  ]
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/reorder/embed?p=-Nq8sample_activity_key",
  "message": "Reorder game created successfully"
}

Bingo

Een klassenbingo die de host live afroept: elke speler krijgt een kaart die uit jouw items wordt getrokken.

#
POST /api/public/v1/bingo Neemt geen items
Inhoud

Een array van items waaruit de kaarten worden getrokken. Stuur er duidelijk meer dan één kaart vakjes heeft, zodat de kaarten van elkaar verschillen.

Valt terug op de naam “Bingo API”

Goed om te weten
  • Een item is een object met een value, en eventueel een type ("text", "image" of "audio" met een URL in value), een description (de omschrijving die de host voorleest in de modus met omschrijvingen) en alt.
Instellingen die het leest
VeldTypeWat het doet
mode
optioneel in settings
string
stringWat de vakjes vult: je items, je items afgeroepen met hun omschrijving, of gewone getallen (daarvoor zijn geen items nodig).
Een van itemscluesnumbers
Standaard: "items"
rows
optioneel in settings
number
numberRijen op elke kaart, 2 tot 5.
Standaard: 3
columns
optioneel in settings
number
numberKolommen op elke kaart, 2 tot 5.
Standaard: 3
highest_number
optioneel in settings
number
numberIn de modus met getallen worden de kaarten gevuld vanaf 1 tot dit getal, hoogstens 100. Een functie van een abonnement: zonder abonnement blijft het 50.
Standaard: 50
Voorbeeldrequest
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": "nl",
  "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
  }
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/bingo/embed?p=-Nq8sample_activity_key",
  "message": "Bingo created successfully"
}

Ik heb, wie heeft

api_e_i_have_who_has

#
POST /api/public/v1/i-have-who-has 3 tot 40 in items
Inhoud

api_c_i_have_who_has

Valt terug op de naam “I Have, Who Has API”

Goed om te weten
  • Geen enkele vraag en geen enkel antwoord mag twee keer voorkomen: een leerling met het antwoord in handen zou niet weten bij welke vraag het hoort.
Instellingen die het leest
VeldTypeWat het doet
chain_shape
optioneel in settings
string
stringEen lus sluit zich op zichzelf, dus elke kaart kan beginnen; een lijn opent met een Start-kaart en eindigt met een Eind-kaart.
Een van loopline
Standaard: "loop"
Voorbeeldrequest
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": "nl",
  "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"
  }
}'
Geslaagd
{
  "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"
}

Cijferslot

Een codeslot: een paneel met toetsen, waarvan sommige samen de code vormen.

#
POST /api/public/v1/keypad 1 tot 30 in items
Inhoud

Een array van toetsen. De toetsen die in de code zitten, geven hun plek erin aan.

Valt terug op de naam “Keypad API”

Goed om te weten
  • Een toets is een object met een value, en eventueel een type ("text", "image" of "audio" met een URL in value), alt en code_position: zijn plek in de code, 1 is de eerste. Een toets kan één keer in de code zitten, en er moet minstens één toets in zitten.
Instellingen die het leest
VeldTypeWat het doet
instructions
optioneel in settings
string
stringDe vraag of het raadsel waarop de code het antwoord is, getoond bij het paneel.
force_solution_in_correct_order
optioneel in settings
boolean
booleanDe toetsen moeten op volgorde worden ingedrukt. Staat dit uit, dan opent elke volgorde van de juiste toetsen het slot.
Standaard: false
randomize_order
optioneel in settings
boolean
booleanElke speler krijgt de toetsen in een andere, door elkaar gehusselde opstelling.
Standaard: true
Voorbeeldrequest
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": "nl",
  "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
  }
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/keypad/embed?p=-Nq8sample_activity_key",
  "message": "Keypad created successfully"
}

Kwartet

Het kaartspel: spelers vragen elkaar om kaarten om sets van vier te verzamelen.

#
POST /api/public/v1/quartets 2 tot 16 in items
Inhoud

Een array van sets. Elke set heeft een naam en precies vier kaarten.

Valt terug op de naam “Quartets API”

Goed om te weten
  • Een kaart is een naam, of een object met een name en een description (het feit dat erop staat). Geen enkele kaartnaam mag twee keer in het spel voorkomen: spelers vragen om kaarten bij hun naam.
Instellingen die het leest
VeldTypeWat het doet
type
optioneel in settings
string
stringEen gewoon spel, of een leerspel waarin elke kaart een feit toont. Laat je dit weg, dan is het learn als een kaart een description heeft.
Een van normallearn
Voorbeeldrequest
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": "nl",
  "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"
  }
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/quartets/embed?p=-Nq8sample_activity_key",
  "message": "Quartets game created successfully"
}
Vragen & antwoorden

Quiz

Meerkeuzevragen en open vragen, met een score die meeloopt tijdens het spelen.

#
POST /api/public/v1/quiz 1 tot 100 in items
Inhoud

Een array van vragen. Meerkeuzevragen bevatten hun antwoordopties; open vragen bevatten het antwoord dat je goedkeurt.

Valt terug op de naam “Quiz API”

Goed om te weten
  • question_type is "multiple_choice", waarbij de juiste optie isCorrect true heeft; "true_false", hetzelfde met precies twee opties, eerst true en dan false; of "open_answer", die in plaats daarvan correct_answer gebruikt. Als je het weglaat, wordt het behandeld als meerkeuze.
  • Het quiz-endpoint geeft settings rechtstreeks door als instellingenblokken van de activiteit, dus dit is geen plek voor losse opties — stel de quiz achteraf bij in de editor.
Voorbeeldrequest
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": "nl",
  "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."
    }
  ]
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/quiz/embed?p=-Nq8sample_activity_key",
  "message": "Quiz created successfully"
}

Bordspel

api_e_board_game

#
POST /api/public/v1/board-game 1 tot 100 in items
Inhoud

api_c_board_game

Valt terug op de naam “Board Game API”

Goed om te weten
  • question_type is "multiple_choice", waarbij de juiste optie isCorrect true heeft; "true_false", hetzelfde met precies twee opties, eerst true en dan false; of "open_answer", die in plaats daarvan correct_answer gebruikt. Als je het weglaat, wordt het behandeld als meerkeuze.
Instellingen die het leest
VeldTypeWat het doet
number_of_tiles
optioneel in settings
number
numberHoeveel vakjes het bord heeft. Tussen 10 en 75.
Standaard: 30
game_mode
optioneel in settings
string
stringOf spelers naar de finish racen of onderweg voorwerpen verzamelen.
Een van race_to_finishcollect_items
Standaard: "race_to_finish"
Voorbeeldrequest
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": "nl",
  "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"
  }
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/board-game/embed?p=-Nq8sample_activity_key",
  "message": "Board Game created successfully"
}

Doolhof

Een doolhof om doorheen te lopen: elke vraag is een kamer en de antwoorden zijn de deuren.

#
POST /api/public/v1/maze Minimaal 1 in items
Inhoud

Een array van meerkeuzevragen of waar-of-niet-waarvragen, precies in de vorm die het quiz-endpoint neemt. Open vragen worden geweigerd: op een deur moet een antwoord staan.

Valt terug op de naam “Maze API”

Instellingen die het leest
VeldTypeWat het doet
maze_width
optioneel in settings
string
stringHoe de kamers zijn ingedeeld: in één kolom, een vierkant, of breder.
Een van narrownormalwide
Standaard: "normal"
maze_corridors
optioneel in settings
string
stringHoeveel doolhof er tussen twee vragen ligt.
Een van shortnormallong
Standaard: "normal"
maze_fog
optioneel in settings
string
stringToon het hele doolhof, of alleen wat de speler is gepasseerd.
Een van offnear
Standaard: "off"
maze_wrong_door_pause
optioneel in settings
string
stringHoe lang de deuren dicht blijven na een verkeerde deur.
Een van noneshortlong
Standaard: "short"
maze_walk_there
optioneel in settings
boolean
booleanBiedt een knop die het stipje naar de volgende kamer laat lopen.
Standaard: false
maze_seed
optioneel in settings
string
stringDe seed waaruit het doolhof wordt gegenereerd. Dezelfde seed en vragen geven hetzelfde doolhof; laat je hem weg, dan wordt er een nieuwe getrokken.
Voorbeeldrequest
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": "nl",
  "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"
  }
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/maze/embed?p=-Nq8sample_activity_key",
  "message": "Maze created successfully"
}

Jeopardy

Een bord als in een tv-quiz: categorieën bovenaan, daaronder omschrijvingen die meer waard zijn naarmate ze lager staan.

#
POST /api/public/v1/jeopardy Minimaal 2 in items
Inhoud

Een array van categorieën, van links naar rechts. Elke categorie heeft een naam en zijn omschrijvingen van de bovenste rij naar beneden.

Valt terug op de naam “Jeopardy API”

Goed om te weten
  • Een omschrijving is een vraag zoals het quiz-endpoint die neemt, open_answer tenzij er iets anders staat, met correct_answer en eventueel aliases. Hij kan ook value (zijn eigen waarde) en daily_double bevatten. null laat een vakje leeg.
Instellingen die het leest
VeldTypeWat het doet
jeopardy_buzzer_mode
optioneel in settings
string
stringWie hoe speelt: de host bedient het vanaf de console, spelers buzzeren via hun telefoon, of elke speler werkt zijn eentje aan het bord.
Een van hostphonessolo
Standaard: "host"
jeopardy_contestants
optioneel in settings
string
stringOf de console het over teams of over spelers heeft.
Een van teamsplayers
Standaard: "teams"
jeopardy_value_step
optioneel in settings
number
numberWat een rij waard is: een omschrijving is dit bedrag keer zijn rijnummer waard. Van 50 tot 500, in stappen van 50.
Standaard: 100
jeopardy_answer_time
optioneel in settings
number
numberSeconden om te antwoorden zodra een omschrijving open is, tot 300. 0 is geen klok.
Standaard: 20
jeopardy_wrong_answer_costs
optioneel in settings
boolean
booleanEen fout antwoord haalt de waarde van de omschrijving van de score af.
Standaard: false
jeopardy_reveal_on_timeout
optioneel in settings
boolean
booleanHet bord toont zelf het antwoord als de klok afloopt.
Standaard: false
jeopardy_require_question_form
optioneel in settings
boolean
booleanHerinnert spelers eraan om in de vorm van een vraag te antwoorden.
Standaard: false
Voorbeeldrequest
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": "nl",
  "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
  }
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/jeopardy/embed?p=-Nq8sample_activity_key",
  "message": "Jeopardy board created successfully"
}

Interactieve video

api_e_interactive_video

#
POST /api/public/v1/interactive-video 1 tot 50 in items
Inhoud

api_c_interactive_video

Valt terug op de naam “Interactive Video API”

Goed om te weten
  • Een pop-up is een object met time (seconden, of "1:23"), kind ("question" tenzij er "note", "think" of "chapter" staat) en description. Een vraag is een vraag zoals het quiz-endpoint die neemt, en kan rewind_to bevatten: waar de video na een fout antwoord opnieuw begint.
Instellingen die het leest
VeldTypeWat het doet
video_url
verplicht in settings
string
stringDe video: een pagina van YouTube, Vimeo of Bunny Stream, of een directe link naar een mp4-, webm- of mov-bestand.
video_duration
optioneel in settings
number
numberDe lengte van de video in seconden. Als je die opgeeft, wordt een pop-up na het einde geweigerd.
Voorbeeldrequest
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": "nl",
  "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
  }
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/interactive-video/embed?p=-Nq8sample_activity_key",
  "message": "Interactive video created successfully"
}
Zinnen & getallen

Cryptogram

Maakt van een zin een code om te kraken, teken voor teken.

#
POST /api/public/v1/cryptogram Neemt geen items
Inhoud

Eén zin, in het veld sentence. Dit endpoint neemt geen items.

Valt terug op de naam “Cryptogram API”

Goed om te weten
  • Alles wat je in items stuurt wordt genegeerd — de puzzel wordt alleen uit de zin opgebouwd.
Instellingen die het leest
VeldTypeWat het doet
sentence
verplicht
string
stringDe zin die versleuteld wordt. Spelers ontcijferen hem teken voor teken.
helpers
optioneel in settings
string
stringWelke tekens gratis worden weggegeven als opstapje: geen, de meest voorkomende, de klinkers, of de tekens die je zelf opgeeft.
Een van nonemost_commonvowelscustom
Standaard: "none"
character_list
optioneel in settings
string
stringHet alfabet waaruit de code wordt opgebouwd. Leeg gelaten kiest de versleuteling er zelf een.
extra_letters
optioneel in settings
string
stringDe tekens die worden weggegeven als helpers "custom" is. Genegeerd bij de andere helper-modi.
hide_unused_characters
optioneel in settings
boolean
booleanLaat tekens die de zin nooit gebruikt uit de sleutel weg.
Standaard: false
Voorbeeldrequest
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": "nl",
  "sentence": "An apple a day keeps the doctor away",
  "settings": {
    "helpers": "vowels",
    "hide_unused_characters": false
  }
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/cryptogram/embed?p=-Nq8sample_activity_key",
  "message": "Cryptogram created successfully"
}

Rekensommen

Verstopt een zin achter sommen — los de som op, onthul de letter.

#
POST /api/public/v1/calculation Neemt geen items
Inhoud

Eén zin, in het veld sentence. Dit endpoint neemt geen items.

Valt terug op de naam “Calculation Game API”

Goed om te weten
  • Als de beperkingen te strak zijn om de zin te coderen, antwoordt de aanroep met 400 en het verzoek ze te versoepelen, in plaats van een halve puzzel op te slaan.
Instellingen die het leest
VeldTypeWat het doet
sentence
verplicht
string
stringDe zin die spelers onthullen door de sommen op te lossen.
difficulty_level
optioneel in settings
number
numberDe hoogste uitkomst die een som mag hebben.
Een van 20501001000
Standaard: "100"
operators
optioneel in settings
string[]
string[]Welke bewerkingen mogen voorkomen. x is vermenigvuldigen, : is delen.
Een van +-x:
Standaard: ["+", "-", "x", ":"]
max_operations
optioneel in settings
number
numberHoeveel bewerkingen één som achter elkaar mag zetten.
Een van 123
Standaard: 1
number_difficulty
optioneel in settings
number
numberBegrenst de losse getallen binnen een som. Ergens tussen 5 en 1000.
Standaard: 100
Voorbeeldrequest
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": "nl",
  "sentence": "Fruit salad for everyone",
  "settings": {
    "difficulty_level": "100",
    "operators": [
      "+",
      "-",
      "x",
      ":"
    ],
    "max_operations": 1,
    "number_difficulty": 100
  }
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/calculation/embed?p=-Nq8sample_activity_key",
  "message": "Calculation game created successfully"
}

Sudoku

Genereert een opgelost raster en haalt daar weer getallen uit.

#
POST /api/public/v1/sudoku Neemt geen items
Inhoud

Niets. De hele puzzel komt voort uit zijn twee instellingen.

Valt terug op de naam “Sudoku API”

Goed om te weten
  • Stuur geen items en geen sentence — size en difficulty zijn de volledige invoer.
  • De editor biedt de moeilijkheidsgraad alleen aan voor 2x3, 3x3 en 3x4. De API past hem toe op elke grootte, 2x2 en 4x4 inbegrepen.
Instellingen die het leest
VeldTypeWat het doet
size
optioneel in settings
string
stringDe grootte van één blok, geschreven als rijen bij kolommen — 3x3 geeft het klassieke 9x9-raster. Het endpoint controleert alleen of het als twee getallen te lezen is, dus houd het bij de groottes die de editor aanbiedt.
Een van 2x22x33x33x44x4
Standaard: "3x3"
difficulty_level
optioneel in settings
string
stringHoeveel getallen er op het bord blijven staan om mee te beginnen.
Een van easynormalhard
Standaard: "normal"
Voorbeeldrequest
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": "nl",
  "settings": {
    "size": "3x3",
    "difficulty_level": "normal"
  }
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/sudoku/embed?p=-Nq8sample_activity_key",
  "message": "Sudoku created successfully"
}

Gevallen zin

api_e_fallen_phrase

#
POST /api/public/v1/fallen-phrase Neemt geen items
Inhoud

api_c_fallen_phrase

Valt terug op de naam “Fallen Phrase API”

Instellingen die het leest
VeldTypeWat het doet
sentence
verplicht
string
stringDe zin die je verbergt: een citaat, een spreekwoord, een kernzin. Hoogstens 120 letters en cijfers.
columns
optioneel in settings
number
numberHoe breed het bord is, van 8 tot 18. Smaller stapelt meer letters in elke kolom en is moeilijker.
Standaard: 14
helpers
optioneel in settings
string
stringWelke letters als opstapje in het raster blijven staan: geen, de meest voorkomende, de klinkers, of de letters die je zelf opgeeft.
Een van nonemost_commonvowelscustom
Standaard: "none"
extra_letters
optioneel in settings
string
stringDe letters die worden weggegeven als helpers "custom" is.
Voorbeeldrequest
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": "nl",
  "sentence": "Don't count your chickens before they hatch.",
  "settings": {
    "columns": 12,
    "helpers": "custom",
    "extra_letters": "ky"
  }
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/fallen-phrase/embed?p=-Nq8sample_activity_key",
  "message": "Fallen phrase created successfully"
}

Tafels oefenen

api_e_times_tables

#
POST /api/public/v1/times-tables Neemt geen items
Inhoud

api_c_times_tables

Valt terug op de naam “Times Tables API”

Instellingen die het leest
VeldTypeWat het doet
tables
optioneel in settings
number[]
number[]De tafels die geoefend worden. Laat je dit weg, dan is het 1 tot 10; met een 11 of 12 wordt het raster 12 bij 12.
Een van 123456789101112
order
optioneel in settings
string
stringOf de rijen en kolommen op volgorde staan of door elkaar.
Een van ascendingshuffled
Standaard: "ascending"
picture
optioneel in settings
string
stringHet plaatje dat goede antwoorden inkleuren.
Een van sailboatheartrockettreecatfishflowerhouse
Standaard: "sailboat"
players_choose_tables
optioneel in settings
boolean
booleanLaat elke speler kiezen welke van de tafels hij oefent.
Standaard: false
fill_same_sums
optioneel in settings
boolean
booleanEén goed antwoord vult elk vakje met dezelfde keersom in.
Standaard: true
Voorbeeldrequest
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": "nl",
  "settings": {
    "tables": [
      7,
      3,
      4
    ],
    "order": "shuffled",
    "seed": "k3x9q2ab",
    "picture": "rocket",
    "players_choose_tables": true,
    "fill_same_sums": false
  }
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/times-tables/embed?p=-Nq8sample_activity_key",
  "message": "Times tables created successfully"
}

Gatentekst

api_e_fill_in_the_gap

#
POST /api/public/v1/fill-in-the-gap 1 tot 50 in items
Inhoud

api_c_fill_in_the_gap

Valt terug op de naam “Fill in the gap API”

Goed om te weten
  • Schrijf de hele zin en zet asterisken om elk woord dat wegvalt: "Water boils at *100* degrees." Meerdere woorden binnen één paar zijn één gat. Een item kan ook een instructie bevatten die boven de zin wordt getoond.
Voorbeeldrequest
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": "nl",
  "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."
    }
  ]
}'
Geslaagd
{
  "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"
}

Zinsontleding

Zinnen waarin spelers de woorden labelen: woordsoorten, zinsdelen of labels van jezelf.

#
POST /api/public/v1/deconstruct 1 tot 50 in items
Inhoud

Een array van zinnen. Elk woord dat gelabeld moet worden schrijf je als [word](label).

Valt terug op de naam “Sentence analysis API”

Goed om te weten
  • Schrijf een zin als "The [dog](noun) [barks](verb)." Woorden zonder tag worden getoond maar niet gevraagd. De labels noun, verb, adjective en subject worden aan elke speler in zijn eigen taal getoond.
Instellingen die het leest
VeldTypeWat het doet
categories
optioneel in settings
string[]
string[]De labels waaruit spelers kiezen, op volgorde. Laat je dit weg, dan zijn het de labels die in de zinnen voorkomen. Stuur het mee om een label toe te voegen dat bij geen enkel woord hoort, of om de volgorde vast te leggen.
Voorbeeldrequest
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": "nl",
  "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"
    ]
  }
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/deconstruct/embed?p=-Nq8sample_activity_key",
  "message": "Sentence analysis created successfully"
}

Logiquiz

api_e_logic_puzzle

#
POST /api/public/v1/logic-puzzle Minimaal 3 in items
Inhoud

api_c_logic_puzzle

Valt terug op de naam “Logic Puzzle API”

Goed om te weten
  • Elke categorie heeft evenveel items nodig, 3 tot 6, allemaal verschillend. Eén categorie mag als ordered worden gemarkeerd (prijzen, tijden, leeftijden), met een optionele unit, zodat de generator omschrijvingen kan schrijven over meer, minder en hoeveel.
Instellingen die het leest
VeldTypeWat het doet
story
optioneel in settings
string
stringHet achtergrondverhaal dat boven de omschrijvingen staat.
difficulty
optioneel in settings
string
stringWelke soorten omschrijvingen de generator mag gebruiken.
Een van easymediumhard
Standaard: "easy"
hints
optioneel in settings
boolean
booleanBiedt een knop die de volgende stap toont.
Standaard: true
auto_cross
optioneel in settings
boolean
booleanAls je een combinatie markeert, wordt de rest van de rij en kolom doorgestreept.
Standaard: true
clue_mode
optioneel in settings
string
stringWie de omschrijvingen schrijft die spelers zien: gegenereerd uit de tabel, je eigen zinnen in free_clues, of geen.
Een van generatedfreenone
Standaard: "generated"
free_clues
optioneel in settings
string[]
string[]Je eigen omschrijvingen, getoond zoals je ze schrijft, met clue_mode "free". Er wordt niets aan gecontroleerd.
Voorbeeldrequest
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": "nl",
  "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"
  }
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/logic-puzzle/embed?p=-Nq8sample_activity_key",
  "message": "Logic puzzle created successfully"
}

Speurtocht

api_e_scavenger_hunt

#
POST /api/public/v1/scavenger-hunt 1 tot 50 in items
Inhoud

api_c_scavenger_hunt

Valt terug op de naam “Scavenger Hunt API”

Goed om te weten
  • Een stap is een object met title, description, code en eventueel accepted_codes (andere spellingen die ook tellen), url en link_text. Een code wordt gecontroleerd zonder rekening te houden met hoofdletters en spaties. De kaart met pins kun je alleen in de editor toevoegen.
Voorbeeldrequest
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": "nl",
  "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"
      ]
    }
  ]
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/scavenger-hunt/embed?p=-Nq8sample_activity_key",
  "message": "Scavenger hunt created successfully"
}

Ruimtelijk inzicht

api_e_spatial_reasoning

#
POST /api/public/v1/spatial-reasoning 1 tot 50 in items
Inhoud

api_c_spatial_reasoning

Valt terug op de naam “Spatial Reasoning API”

Goed om te weten
  • Objecten en doelen zijn square, triangle, circle, hexagon, pentagon, star, diamond of heart. Relaties zijn inside, outside, behind, in_front_of, right_of, left_of, above, below, same_color_as, different_color_from, larger_than en smaller_than. Een regel die nooit kan kloppen, antwoordt met 400.
Instellingen die het leest
VeldTypeWat het doet
clue_mode
optioneel in settings
string
stringRegels getoond als plaatjes of als zinnen.
Een van visualtext
Standaard: "visual"
unique_object_picks
optioneel in settings
boolean
booleanElke vorm mag maar één keer worden neergelegd.
Standaard: false
hide_color_picker
optioneel in settings
boolean
booleanSpelers kunnen vormen niet van kleur veranderen.
Standaard: false
Voorbeeldrequest
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": "nl",
  "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
  }
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/spatial-reasoning/embed?p=-Nq8sample_activity_key",
  "message": "Spatial reasoning activity created successfully"
}

Rebus

Zinnen geschreven als plaatjes: spelers lezen de plaatjes en de letterwijzigingen terug tot woorden.

#
POST /api/public/v1/rebus 1 tot 30 in items
Inhoud

Een array van zinnen. Elke zin somt de woorden op die als plaatje zijn getekend; elk ander woord blijft als zijn letters staan.

Valt terug op de naam “Rebus API”

Goed om te weten
  • Een woord wordt getekend uit delen die samen het woord spellen. Een deel heeft de letters waar het voor staat (text), een emoji, en shows: het woord voor wat het plaatje laat zien ("broom" voor een plaatje dat voor "room" staat). Puzzel berekent de letterwijzigingen. Een deel kan ook een symbool zijn, zoals 4 voor "for".
Instellingen die het leest
VeldTypeWat het doet
rebus_commas
optioneel in settings
boolean
booleanTekent een weggelaten eerste of laatste letter als komma naast het plaatje.
Standaard: false
Voorbeeldrequest
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": "nl",
  "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
  }
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/rebus/embed?p=-Nq8sample_activity_key",
  "message": "Rebus created successfully"
}
Afbeeldingen

Legpuzzel

Knipt een afbeelding in stukjes om weer in elkaar te schuiven.

#
POST /api/public/v1/jigsaw Neemt geen items
Inhoud

Eén afbeeldings-URL, in het veld image. Dit endpoint neemt geen items.

Valt terug op de naam “Jigsaw Game API”

Goed om te weten
  • De API maakt altijd een legpuzzel van 4 bij 4. Aantal stukjes, onregelmatige stukjes en rechte randen zijn instellingen in de editor — rows of columns hier meesturen doet niets.
  • De URL wordt opgeslagen zoals je hem stuurde en het bestand wordt nooit gekopieerd, dus hij moet openbaar bereikbaar blijven zolang de activiteit gespeeld wordt.
Instellingen die het leest
VeldTypeWat het doet
image
verplicht
string
stringAbsolute URL van de afbeelding die in stukken wordt geknipt. Wordt op het hoogste niveau gestuurd, niet binnen settings.
Voorbeeldrequest
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": "nl",
  "image": "https://example.com/orchard.jpg"
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/jigsaw/embed?p=-Nq8sample_activity_key",
  "message": "Jigsaw game created successfully"
}

Schuifpuzzel

Husselt een afbeelding tot tegels die op hun plek geschoven worden.

#
POST /api/public/v1/slidingpuzzle Neemt geen items
Inhoud

Eén afbeeldings-URL, binnen settings. Dit endpoint neemt geen items.

Valt terug op de naam “Sliding Puzzle API”

Goed om te weten
  • Anders dan de legpuzzel leest dit endpoint zijn afbeelding uit settings.image. Een image-veld op het hoogste niveau wordt genegeerd en de aanroep antwoordt met 400.
  • De URL wordt opgeslagen zoals je hem stuurde en het bestand wordt nooit gekopieerd, dus hij moet openbaar bereikbaar blijven zolang de activiteit gespeeld wordt.
Instellingen die het leest
VeldTypeWat het doet
image
verplicht in settings
string
stringAbsolute URL van de afbeelding die door elkaar wordt geschoven. Anders dan bij de legpuzzel staat deze binnen settings.
Voorbeeldrequest
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": "nl",
  "settings": {
    "image": "https://example.com/orchard.jpg"
  }
}'
Geslaagd
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/slidingpuzzle/embed?p=-Nq8sample_activity_key",
  "message": "Sliding puzzle created successfully"
}

Doet iets niet wat het moet doen?

Stuur je request en de foutmelding die je terugkreeg. Je krijgt antwoord van de maker van de API.

Mail support