En POST per aktivitetstyp. Skicka ditt innehåll som JSON och få tillbaka en aktivitet i ditt Puzzel.org-konto samt en URL du kan ge till spelare eller lägga in i en iframe.
Bas-URL
https://puzzel.org/api/public/v1
Autentisering
Nyckel + e-post i body
Endpoints
20 aktivitetstyper
Kvot
10 aktiviteter per dag
Ditt första anrop
Inget att installera och ingen handskakning: skicka en JSON-body med din nyckel, din e-post och ditt innehåll. Svaret innehåller den nya aktivitetens nyckel och URL:en den spelas på.
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": "sv",
"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"
}
]
}'
Varje exempel på den här sidan är ett komplett, körbart anrop. Byt ut mot din egen nyckel och ditt eget innehåll så fungerar det direkt.
Autentisering
Det finns inga headers och ingen bearer-token. Båda uppgifterna skickas i JSON-bodyn i varje anrop, och nyckeln accepteras bara för kontot som e-postadressen tillhör.
Fält
Typ
Vad det gör
account_api_key
obligatoriskt
string
string
Ditt kontos API-nyckel. Den skickas i body, inte i en header.
email
obligatoriskt
string
string
Adressen ditt Puzzel.org-konto loggar in med. Nyckeln är bara giltig tillsammans med den.
Din nyckel finns under kontodelen av instrumentpanelen, bakom Visa.
Behandla nyckeln som ett lösenord. Den skapar och skriver över aktiviteter i ditt konto, så håll den på serversidan och borta från allt en webbläsare kan läsa.
Anropets body
Varje endpoint tar samma fem fält. Det som skiljer är innehållsfältet under dem: de flesta tar en array av items, några tar en mening eller en bild, och sudoku tar ingenting alls.
Fält
Typ
Vad det gör
account_api_key
obligatoriskt
string
string
Ditt kontos API-nyckel. Den skickas i body, inte i en header.
email
obligatoriskt
string
string
Adressen ditt Puzzel.org-konto loggar in med. Nyckeln är bara giltig tillsammans med den.
title
valfritt
string
string
Namnet aktiviteten får i instrumentpanelen. Utelämna det så använder endpointen sitt eget standardnamn.
language
valfritt
string
string
Avgör bara språket i URL:en du får tillbaka — det översätter inget du skickar. Ordsök läser det också för att växla sina utfyllnadsbokstäver till arabiska när det är "ar".
Standard: "en"
activity_key
valfritt
string
string
Utelämna det för att skapa en ny aktivitet. Skicka nyckeln till en du redan äger så byggs den aktiviteten om istället.
settings är ett objekt med alternativ per endpoint. Vilka en endpoint läser listas nedan för respektive endpoint; allt annat du lägger där ignoreras.
Vad du får tillbaka
Ett lyckat anrop svarar 200 med den nya aktivitetens nyckel och URL:en den spelas på. Allt annat svarar med success satt till false och en enda felsträng.
{
"success": false,
"error": "Invalid Email or API Key"
}
URL:en du får tillbaka är embed-vyn. Byt embed mot play för att öppna den i helskärm, eller mot build för att öppna den i redigeraren — nyckeln efter p= är densamma.
Skapa kontra uppdatera
Skicka activity_key så byggs aktiviteten bakom den om på plats: dess innehåll ersätts, dess namn och versionsstämpel uppdateras, och själva nyckeln förblir densamma — så länkar och inbäddningar du redan delat fortsätter fungera. Resultat, mappplacering och varje inställning som endpointen inte själv skriver lämnas som de var.
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 tillämpas vid varje uppdatering, dess standardvärde inräknat — utelämna det så byter aktiviteten namn till den endpointens standardnamn.
Inställningsblocken en endpoint skriver själv skrivs om helt från grunden, så en uppdatering återställer också dem till värdena du skickar, eller till endpointens standardvärden.
Du kan bara uppdatera aktiviteter ditt eget konto äger. Någon annans nyckel svarar 403.
En uppdatering kostar lika mycket som att skapa: ett anrop av dagens kvot.
Anropsgräns
10
10 aktiviteter per konto och dag
Varje lyckat anrop räknas, skapande och uppdatering lika. Går du över svarar nästa anrop 429 tills räknaren nollställs.
Räknaren nollställs en gång om dagen av ett schemalagt jobb, inte i ett rullande 24-timmarsfönster.
Fel
Fel kommer alltid som JSON med samma två fält, aldrig som en HTML-sida. Felsträngen är skriven för att läsas av en människa — den namnger fältet eller gränsen som gjorde att det misslyckades.
Status
Vad det betyder
400
Bad Request
Något i body saknas, är felaktigt formaterat eller utanför tillåtet intervall. Meddelandet namnger fältet.
401
Unauthorized
E-postadressen är okänd, eller så tillhör nyckeln inte det kontot.
403
Forbidden
activity_key du skickade tillhör ett annat konto.
429
Too Many Requests
Dagens kvot är förbrukad. Den nollställs en gång om dagen.
500
Server Error
Generatorn kunde inte bygga ett pussel av det du skickade — oftast för få ord, eller ord som inte går att passa ihop.
Endpoints
En sökväg per aktivitetstyp, alla POST, alla under samma bas-URL. Var och en listar innehållet den behöver, inställningarna den läser och ett anrop du kan köra.
Ord & bokstäver
F
I
G
A
T
R
I
P
M
Korsord
Länkar ihop dina svar i ett rutnät och numrerar definitionerna åt dig.
En array av ord. Definitionstexten blir ordbanken spelarna arbetar utifrån.
Faller tillbaka på namnet “Wordseeker API”
Bra att veta
Svar under två tecken tas bort, och varje svar skrivs med versaler innan det läggs in i rutnätet.
Rutnätet fylls ut med latinska bokstäver om inte language är "ar", vilket växlar utfyllnaden till arabiska.
Inställningar den läser
Fält
Typ
Vad det gör
hidden_solution
valfritti settings
string
string
De överblivna bokstäverna stavar ut det här. Att ange det säger också åt generatorn att passa in lösningen först istället för att packa in så många ord som möjligt.
directions
valfritti settings
string[]
string[]
Vilka riktningar ett ord får löpa i. Utelämna det så löper orden bara österut, sydöst och söderut.
En avwesteastnorthsouthnorthwestnortheastsouthwestsoutheast
Standard: ["east", "southeast", "south"]
template
valfritti settings
string
string
Skär till rutnätet i en form istället för att lämna det kvadratiskt.
En avsquarecirclecrossdiamondpyramidsmileystarcross_plus
Exempelanrop
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": "sv",
"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"
}
}'
Aktiviteter som skapas via API:et har alltid inställningen för att blanda ordningen påslagen, så ordningen du skickar är inte den ordning spelarna får.
Inställningar den läser
Fält
Typ
Vad det gör
hidden_solution
valfritti settings
string
string
Ett valfritt bonusord spelarna anger när resten är löst.
Exempelanrop
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": "sv",
"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"
}
}'
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": "sv",
"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"
}
]
}'
Lyckades
{
"success": true,
"id": "-Nq8sample_activity_key",
"url": "https://puzzel.org/en/typing-practice/embed?p=-Nq8sample_activity_key",
"message": "Typing Practice created successfully"
}
En array av par. Varje par innehåller de två kort som hör ihop.
Faller tillbaka på namnet “Memory Game API”
Bra att veta
Ett kort är ett objekt med en type och ett value. Använd "text" för ord, eller "image", "audio", "youtube" eller "link" med en URL i value, och lägg till alt för en beskrivning.
Ett kort är ett objekt med en type och ett value. Använd "text" för ord, eller "image", "audio", "youtube" eller "link" med en URL i value, och lägg till alt för en beskrivning.
Endpointen sparar lika många kort som du skickar, så skicka exakt två per post — framsida, sedan baksida.
Ett kort är ett objekt med en type och ett value. Använd "text" för ord, eller "image", "audio", "youtube" eller "link" med en URL i value, och lägg till alt för en beskrivning.
En array av kategorier, var och en med ett namn och de kort som hör till den.
Faller tillbaka på namnet “Categorize Game API”
Bra att veta
En kategori som skickas utan namn sparas som “Untitled Category”, så skicka alltid ett.
Ett kort är ett objekt med en type och ett value. Använd "text" för ord, eller "image", "audio", "youtube" eller "link" med en URL i value, och lägg till alt för en beskrivning.
En array av sekvenser. Var och en innehåller sina kort i rätt ordning.
Faller tillbaka på namnet “Reorder Game API”
Bra att veta
Ordningen du skickar sparas som den rätta ordningen — nummer ett först.
Ett kort är ett objekt med en type och ett value. Använd "text" för ord, eller "image", "audio", "youtube" eller "link" med en URL i value, och lägg till alt för en beskrivning.
En array av frågor. Flervalsfrågor har sina svarsalternativ; öppna frågor har svaret du godkänner.
Faller tillbaka på namnet “Quiz API”
Bra att veta
question_type är antingen "multiple_choice", där det rätta alternativet har isCorrect satt till true, eller "open_answer", som istället använder correct_answer. Utelämnas det behandlas det som flerval.
Quizendpointen skickar settings rakt igenom som aktivitetens inställningsblock, så det är inte en plats för lösa alternativ — justera quizet i redigeraren efteråt.
Exempelanrop
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": "sv",
"items": [
{
"question_type": "multiple_choice",
"description": "Which fruit is yellow?",
"answers": [
{
"type": "text",
"description": "Banana",
"isCorrect": true
},
{
"type": "text",
"description": "Cherry",
"isCorrect": false
}
]
},
{
"question_type": "open_answer",
"description": "What colour is a lemon?",
"correct_answer": "Yellow",
"explanation": "Lemons ripen from green to yellow."
}
]
}'
question_type är antingen "multiple_choice", där det rätta alternativet har isCorrect satt till true, eller "open_answer", som istället använder correct_answer. Utelämnas det behandlas det som flerval.
Inställningar den läser
Fält
Typ
Vad det gör
number_of_tiles
valfritti settings
number
number
Hur många rutor spelbrädet har. Mellan 10 och 75.
Standard: 30
game_mode
valfritti settings
string
string
Om spelarna kapplöper till mål eller samlar föremål på vägen.
En avrace_to_finishcollect_items
Standard: "race_to_finish"
Exempelanrop
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": "sv",
"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"
}
}'
Lyckades
{
"success": true,
"id": "-Nq8sample_activity_key",
"url": "https://puzzel.org/en/board-game/embed?p=-Nq8sample_activity_key",
"message": "Board Game created successfully"
}
Ingenting. Hela pusslet kommer ur dess två inställningar.
Faller tillbaka på namnet “Sudoku API”
Bra att veta
Skicka inga items och ingen sentence — size och difficulty är hela inmatningen.
Redigeraren erbjuder bara svårighetsgraden för 2x3, 3x3 och 3x4. API:et tillämpar den på alla storlekar, 2x2 och 4x4 inräknat.
Inställningar den läser
Fält
Typ
Vad det gör
size
valfritti settings
string
string
Storleken på ett block, skrivet som rader gånger kolumner — 3x3 ger det klassiska 9x9-rutnätet. Endpointen kontrollerar bara att det tolkas som två tal, så håll dig till storlekarna redigeraren erbjuder.
En av2x22x33x33x44x4
Standard: "3x3"
difficulty_level
valfritti settings
string
string
Hur många siffror som lämnas kvar i rutnätet att utgå från.
En bild-URL, i fältet image. Den här endpointen tar inga items.
Faller tillbaka på namnet “Jigsaw Game API”
Bra att veta
API:et gör alltid ett 4 gånger 4-bitpussel. Antal bitar, oregelbundna bitar och raka kanter är inställningar i redigeraren — att skicka rows eller columns här gör ingenting.
URL:en sparas precis som du skickade den och filen kopieras aldrig, så den måste förbli publikt nåbar så länge aktiviteten spelas.
Inställningar den läser
Fält
Typ
Vad det gör
image
obligatoriskt
string
string
Absolut URL till bilden som ska delas upp i bitar. Skickas på toppnivå, inte inuti settings.