Naar de inhoud
Je bekijkt een voorproefje van het nieuwe Puzzel.org Terug naar de huidige site
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
20 activiteitstypen
Quotum
10 activiteiten per dag

Je eerste request

Niets te installeren en geen handshake: post een JSON-body met je sleutel, je e-mailadres en je inhoud. Het antwoord bevat de key van de nieuwe activiteit en de URL waarop die gespeeld wordt.

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

Er zijn geen headers en geen bearer token. Beide gegevens reizen mee in de JSON-body van elk request, en de sleutel wordt alleen geaccepteerd voor het account waar dat e-mailadres bij hoort.

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 neemt dezelfde vijf velden. Wat verschilt is het inhoudsveld eronder: de meeste nemen een array van items, een paar nemen één zin of één afbeelding, en sudoku neemt helemaal niets.

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 alleen de taal in de URL die je terugkrijgt — er wordt niets vertaald van wat je stuurt. De woordzoeker leest het ook om zijn vulletters op Arabisch te zetten als het "ar" is.
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 antwoordt met 200, de key van de nieuwe activiteit en de URL waarop die gespeeld wordt. Al het andere antwoordt met success op false en één 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 en de bijbehorende activiteit wordt ter plekke opnieuw opgebouwd: de inhoud wordt vervangen, de naam en het versiestempel worden ververst, en de key zelf blijft hetzelfde — dus links en insluitingen die je al gedeeld hebt blijven werken. Resultaten, de map waarin de activiteit staat en elke instelling die het endpoint zelf niet schrijft blijven zoals ze waren.

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.
  • De instellingenblokken die een endpoint zelf schrijft worden helemaal opnieuw opgebouwd, dus een update zet die ook terug naar de waarden die je stuurt, of naar 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

Fouten komen altijd binnen als JSON met dezelfde twee velden, nooit als een HTML-pagina. De error-string is geschreven om door een mens gelezen te worden — hij noemt het veld of de limiet waar het misging.

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 Minimaal 2 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.
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 Minimaal 2 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 dit instelt, plaatst de generator eerst de oplossing in plaats van zoveel mogelijk woorden te proppen.
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"
}

Acrostichon

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

#
POST /api/public/v1/acrostic Minimaal 1 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 Minimaal 1 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 Minimaal 1 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 Minimaal 1 in items
Inhoud

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

Valt terug op de naam “Wordle API”

Goed om te weten
  • Gemaakt met de instelling aan die controleert of gokken echte woorden zijn. Zet die uit in de editor als je woorden namen of verzonnen zijn.
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 Minimaal 1 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 Minimaal 1 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"
}
Kaarten & paren

Memory

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

#
POST /api/public/v1/memory Minimaal 2 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 Minimaal 2 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 Minimaal 1 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
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
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"
}
Vragen & antwoorden

Quiz

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

#
POST /api/public/v1/quiz Minimaal 1 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 óf "multiple_choice", waarbij de juiste optie isCorrect true heeft, óf "open_answer", dat in plaats daarvan correct_answer gebruikt. Weggelaten wordt het als meerkeuze behandeld.
  • 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 Minimaal 1 in items
Inhoud

api_c_board_game

Valt terug op de naam “Board Game API”

Goed om te weten
  • question_type is óf "multiple_choice", waarbij de juiste optie isCorrect true heeft, óf "open_answer", dat in plaats daarvan correct_answer gebruikt. Weggelaten wordt het als meerkeuze behandeld.
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"
}
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"
}
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 het request dat je probeerde en de fout die je terugkreeg, en je krijgt een echt antwoord — van degene die het endpoint heeft geschreven.

Mail support