Sari la conținut
Vezi noul Puzzel.org în avanpremieră Înapoi la site-ul actual
API pentru dezvoltatori

Creează activități direct din sistemul tău

Un POST pentru fiecare tip de activitate. Trimiți conținutul ca JSON și primești înapoi o activitate în contul tău Puzzel.org, plus un URL pe care îl poți da jucătorilor sau îl poți pune într-un iframe.

URL de bază
https://puzzel.org/api/public/v1
Autentificare
Cheie + e-mail în corpul cererii
Endpointuri
20 tipuri de activități
Cotă
10 activități pe zi

Prima ta cerere

Nu ai nimic de instalat și nu e nevoie de niciun handshake: trimiți un corp JSON cu cheia ta, e-mailul tău și conținutul tău. Răspunsul conține cheia noii activități și URL-ul la care se joacă.

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

Fiecare exemplu de pe această pagină este o cerere completă, care poate fi rulată. Înlocuiește cheia și conținutul cu ale tale și funcționează ca atare.

Autentificare

Nu există anteturi și niciun token bearer. Ambele credențiale călătoresc în corpul JSON al fiecărei cereri, iar cheia este acceptată doar pentru contul căruia îi aparține acel e-mail.

CâmpTipCe face
account_api_key
obligatoriu
string
stringCheia API a contului tău. Se pune în corpul cererii, nu într-un antet.
email
obligatoriu
string
stringAdresa cu care te conectezi la contul tău Puzzel.org. Cheia este valabilă doar împreună cu ea.

Cheia ta se află în secțiunea de cont a tabloului tău de bord, după butonul Arată.

Conectează-te

Cheile API sunt oferite când începe un abonament, așa că un cont gratuit nu are încă una.

Vezi planurile

Tratează cheia ca pe o parolă. Ea creează și suprascrie activități în contul tău, așa că păstreaz-o pe server și departe de orice poate citi un browser.

Corpul cererii

Fiecare endpoint primește aceleași cinci câmpuri. Ce diferă este câmpul de conținut de sub ele: majoritatea primesc un array de elemente, câteva primesc o singură propoziție sau o singură imagine, iar sudoku nu primește nimic.

CâmpTipCe face
account_api_key
obligatoriu
string
stringCheia API a contului tău. Se pune în corpul cererii, nu într-un antet.
email
obligatoriu
string
stringAdresa cu care te conectezi la contul tău Puzzel.org. Cheia este valabilă doar împreună cu ea.
title
opțional
string
stringNumele pe care îl primește activitatea în tabloul tău de bord. Dacă îl omiți, endpointul folosește propriul nume implicit.
language
opțional
string
stringDecide doar limba din URL-ul pe care îl primești înapoi — nu traduce nimic din ce trimiți. Cuvintele ascunse îl citesc și pentru a comuta literele de umplutură la arabă, atunci când valoarea este "ar".
Implicit: "en"
activity_key
opțional
string
stringOmite-l ca să creezi o activitate nouă. Trimite cheia uneia pe care deja o deții și acea activitate este reconstruită în loc.

settings este un obiect cu opțiuni specifice fiecărui endpoint. Care dintre ele sunt citite de un endpoint este listat mai jos, la el; orice altceva pui acolo este ignorat.

Ce primești înapoi

Un apel reușit răspunde cu 200, cu cheia noii activități și URL-ul la care se joacă. Orice altceva răspunde cu success setat pe false și un singur șir de eroare.

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

URL-ul primit înapoi este vizualizarea de încorporare. Înlocuiește embed cu play ca să-l deschizi pe pagină întreagă, sau cu build ca să-l deschizi în editor — cheia de după p= rămâne aceeași.

Creare vs. actualizare

Trimite activity_key și activitatea din spatele ei este reconstruită pe loc: conținutul îi este înlocuit, numele și marcajul de versiune sunt reîmprospătate, iar cheia în sine rămâne aceeași — așa că linkurile și încorporările pe care le-ai partajat deja continuă să funcționeze. Rezultatele, plasarea în folder și orice setare pe care endpointul nu o scrie el însuși rămân neschimbate.

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 este aplicat la fiecare actualizare, inclusiv valoarea lui implicită — dacă îl omiți, activitatea este redenumită cu numele implicit al acelui endpoint.
  • Blocurile de setări pe care un endpoint le scrie el însuși sunt rescrise de la zero, așa că o actualizare le resetează și pe acestea la valorile pe care le trimiți, sau la valorile implicite ale endpointului.
  • Poți actualiza doar activități deținute chiar de contul tău. Cheia altcuiva primește răspuns 403.
  • O actualizare costă la fel ca o creare: un apel scăzut din cota de azi.

Limită de trafic

10
10 activități per cont pe zi

Fiecare apel reușit se contorizează, la fel creările ca și actualizările. Dacă depășești limita, următoarea cerere primește răspuns 429 până când contorul este resetat.

Contorul este șters o dată pe zi de un job programat, nu pe o fereastră glisantă de 24 de ore.

Erori

Erorile sosesc întotdeauna ca JSON, cu aceleași două câmpuri, niciodată ca pagină HTML. Șirul de eroare este scris pentru a fi citit de o persoană — numește câmpul sau limita care a eșuat.

StareCe înseamnă
400
Bad Request
Ceva din corpul cererii lipsește, este malformat sau este în afara intervalului permis. Mesajul numește câmpul.
401
Unauthorized
E-mailul este necunoscut, sau cheia nu aparține acelui cont.
403
Forbidden
activity_key pe care l-ai trimis aparține unui alt cont.
429
Too Many Requests
Cota de azi este epuizată. Se resetează o dată pe zi.
500
Server Error
Generatorul nu a putut construi un joc din ce ai trimis — de obicei prea puține cuvinte, sau cuvinte care nu pot fi îmbinate.

Endpointuri

O cale pentru fiecare tip de activitate, toate POST, toate sub același URL de bază. Fiecare listează conținutul de care are nevoie, setările pe care le citește și o cerere pe care o poți rula.

Cuvinte și litere

Cuvintele încrucișate

Îmbină răspunsurile tale într-o grilă și numerotează definițiile pentru tine.

#
POST /api/public/v1/crossword Cel puțin 2 în items
Conținut

Un array de cuvinte. Fiecare intrare asociază răspunsul cu definiția care indică spre el.

Revine implicit la numele “Crossword API”

Bine de știut
  • Răspunsurile mai scurte de două caractere sunt eliminate înainte de construirea grilei, iar cel puțin două trebuie să supraviețuiască acestui pas.
  • Răspunsurile sunt convertite cu majuscule, iar generatorul are douăzeci de încercări să le potrivească. Dacă nu poate plasa niciun cuvânt, apelul răspunde cu 500.
Exemplu de cerere
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": "ro",
  "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"
    }
  ]
}'
Succes
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/crossword/embed?p=-Nq8sample_activity_key",
  "message": "Crossword created successfully"
}

Cuvintele ascunse

Ascunde cuvintele tale într-o grilă de litere, în direcțiile și forma pe care le alegi.

#
POST /api/public/v1/wordseeker Cel puțin 2 în items
Conținut

Un array de cuvinte. Textul definiției devine lista de cuvinte de la care pornesc jucătorii.

Revine implicit la numele “Wordseeker API”

Bine de știut
  • Răspunsurile sub două caractere sunt eliminate, iar fiecare răspuns este convertit cu majuscule înainte de a intra în grilă.
  • Grila este completată cu litere latine, cu excepția cazului în care language este "ar", ceea ce comută umplutura la arabă.
Setări pe care le citește
CâmpTipCe face
hidden_solution
opțional în settings
string
stringLiterele rămase formează acest cuvânt. Setarea lui îi spune și generatorului să potrivească mai întâi soluția, în loc să încadreze cât mai multe cuvinte posibil.
directions
opțional în settings
string[]
string[]În ce direcții poate merge un cuvânt. Dacă îl omiți, cuvintele merg doar spre est, sud-est și sud.
Una dintre westeastnorthsouthnorthwestnortheastsouthwestsoutheast
Implicit: ["east", "southeast", "south"]
template
opțional în settings
string
stringDecupează grila într-o formă, în loc să o lase pătrată.
Una dintre squarecirclecrossdiamondpyramidsmileystarcross_plus
Exemplu de cerere
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": "ro",
  "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"
  }
}'
Succes
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/wordseeker/embed?p=-Nq8sample_activity_key",
  "message": "Wordseeker created successfully"
}

Acrostihul

Stivuiește răspunsurile tale astfel încât o coloană să formeze un cuvânt ascuns.

#
POST /api/public/v1/acrostic Cel puțin 1 în items
Conținut

Un array de cuvinte. Împreună trebuie să furnizeze fiecare literă a cuvântului ascuns.

Revine implicit la numele “Acrostic API”

Bine de știut
  • Dacă răspunsurile nu pot furniza literele de care are nevoie soluția, apelul răspunde cu 500, în loc să salveze o grilă construită pe jumătate.
  • Generatorul reordonează răspunsurile tale ca să facă să funcționeze coloana, așa că ordinea pe care o trimiți nu este ordinea pe care o văd jucătorii.
Setări pe care le citește
CâmpTipCe face
hidden_solution
obligatoriu în settings
string
stringCuvântul pe care îl formează coloana evidențiată. Acest endpoint nu funcționează fără el.
Exemplu de cerere
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": "ro",
  "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"
  }
}'
Succes
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/acrostic/embed?p=-Nq8sample_activity_key",
  "message": "Acrostic created successfully"
}

Cuvintele amestecate

api_e_word_scramble

#
POST /api/public/v1/word-scramble Cel puțin 1 în items
Conținut

api_c_word_scramble

Revine implicit la numele “Word Scramble API”

Bine de știut
  • Activitățile create prin API au mereu activată setarea de amestecare a ordinii, așa că ordinea pe care o trimiți nu este ordinea pe care o primesc jucătorii.
Setări pe care le citește
CâmpTipCe face
hidden_solution
opțional în settings
string
stringUn cuvânt bonus opțional pe care jucătorii îl introduc după ce rezolvă restul.
Exemplu de cerere
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": "ro",
  "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"
  }
}'
Succes
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/word-scramble/embed?p=-Nq8sample_activity_key",
  "message": "Word Scramble created successfully"
}

Spânzurătoarea

Transformă cuvintele sau expresiile tale în runde de ghicit litere.

#
POST /api/public/v1/hangman Cel puțin 1 în items
Conținut

Un array de cuvinte sau expresii scurte. Indiciul este sugestia pe care o văd jucătorii.

Revine implicit la numele “Hangman API”

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

Wordle

Creează un joc de ghicit cuvântul din fiecare cuvânt pe care îl trimiți.

#
POST /api/public/v1/wordle Cel puțin 1 în items
Conținut

Un array de cuvinte. Jucătorii primesc câte o rundă pentru fiecare cuvânt.

Revine implicit la numele “Wordle API”

Bine de știut
  • Creat cu setarea de verificare-că-răspunsurile-sunt-cuvinte-reale activată. Dezactiveaz-o în editor dacă cuvintele tale sunt nume sau inventate.
Exemplu de cerere
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": "ro",
  "items": [
    {
      "answer": "MELON",
      "description": "Sweet and green",
      "type": "text"
    },
    {
      "answer": "PEACH",
      "description": "Fuzzy and orange",
      "type": "text"
    }
  ]
}'
Succes
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/wordle/embed?p=-Nq8sample_activity_key",
  "message": "Wordle created successfully"
}

Exercițiul de tastare

api_e_typing_practice

#
POST /api/public/v1/typing-practice Cel puțin 1 în items
Conținut

api_c_typing_practice

Revine implicit la numele “Typing Practice API”

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

Roata norocului

api_e_wheel_of_fortune

#
POST /api/public/v1/wheel-of-fortune Cel puțin 1 în items
Conținut

api_c_wheel_of_fortune

Revine implicit la numele “Wheel of Fortune API”

Bine de știut
  • Creat cu opțiunea “arată rezultatul doar pe roată” activată, așa că rezultatul se citește de pe roată, nu este anunțat lângă ea.
Exemplu de cerere
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": "ro",
  "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"
    }
  ]
}'
Succes
{
  "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"
}
Cartonașe și perechi

Memory

Cartonașe cu fața în jos, de întors și potrivit în perechi.

#
POST /api/public/v1/memory Cel puțin 2 în items
Conținut

Un array de perechi. Fiecare pereche conține cele două cartonașe care merg împreună.

Revine implicit la numele “Memory Game API”

Bine de știut
  • Un cartonaș este un obiect cu un type și o value. Folosește "text" pentru cuvinte, sau "image", "audio", "youtube" ori "link" cu un URL în value, și adaugă alt pentru o descriere.
Exemplu de cerere
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": "ro",
  "items": [
    {
      "cards": [
        {
          "type": "text",
          "value": "Apple"
        },
        {
          "type": "text",
          "value": "A red fruit"
        }
      ]
    },
    {
      "cards": [
        {
          "type": "text",
          "value": "Banana"
        },
        {
          "type": "text",
          "value": "A yellow fruit"
        }
      ]
    }
  ]
}'
Succes
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/memory/embed?p=-Nq8sample_activity_key",
  "message": "Memory game created successfully"
}

Jocul de asocieri

api_e_matching_pairs

#
POST /api/public/v1/matching-pairs Cel puțin 2 în items
Conținut

api_c_matching_pairs

Revine implicit la numele “Matching Game API”

Bine de știut
  • Un cartonaș este un obiect cu un type și o value. Folosește "text" pentru cuvinte, sau "image", "audio", "youtube" ori "link" cu un URL în value, și adaugă alt pentru o descriere.
Exemplu de cerere
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": "ro",
  "items": [
    {
      "cards": [
        {
          "type": "text",
          "value": "Apple"
        },
        {
          "type": "text",
          "value": "A red fruit"
        }
      ]
    },
    {
      "cards": [
        {
          "type": "text",
          "value": "Banana"
        },
        {
          "type": "text",
          "value": "A yellow fruit"
        }
      ]
    }
  ]
}'
Succes
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/matching-pairs/embed?p=-Nq8sample_activity_key",
  "message": "Matching pairs game created successfully"
}

Cartonașele de învățare

api_e_flash_cards

#
POST /api/public/v1/flash-cards Cel puțin 1 în items
Conținut

api_c_flash_cards

Revine implicit la numele “Flash Cards API”

Bine de știut
  • Endpointul stochează exact atâtea cartonașe câte trimiți, așa că trimite exact două per intrare — fața, apoi spatele.
  • Un cartonaș este un obiect cu un type și o value. Folosește "text" pentru cuvinte, sau "image", "audio", "youtube" ori "link" cu un URL în value, și adaugă alt pentru o descriere.
Exemplu de cerere
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": "ro",
  "items": [
    {
      "cards": [
        {
          "type": "text",
          "value": "Apple"
        },
        {
          "type": "text",
          "value": "A red fruit"
        }
      ]
    },
    {
      "cards": [
        {
          "type": "text",
          "value": "Banana"
        },
        {
          "type": "text",
          "value": "A yellow fruit"
        }
      ]
    }
  ]
}'
Succes
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/flash-cards/embed?p=-Nq8sample_activity_key",
  "message": "Flash Cards created successfully"
}

Sortarea pe categorii

Cartonașe de sortat în categoria din care fac parte.

#
POST /api/public/v1/categorize Cel puțin 2 în items
Conținut

Un array de categorii, fiecare cu un nume și cartonașele care fac parte din ea.

Revine implicit la numele “Categorize Game API”

Bine de știut
  • O categorie trimisă fără nume este salvată ca “Categorie fără titlu”, așa că trimite mereu unul.
  • Un cartonaș este un obiect cu un type și o value. Folosește "text" pentru cuvinte, sau "image", "audio", "youtube" ori "link" cu un URL în value, și adaugă alt pentru o descriere.
Exemplu de cerere
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": "ro",
  "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"
        }
      ]
    }
  ]
}'
Succes
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/categorize/embed?p=-Nq8sample_activity_key",
  "message": "Categorize game created successfully"
}

Ordonarea

O secvență pe care jucătorii trebuie să o pună din nou în ordine.

#
POST /api/public/v1/reorder Cel puțin 1 în items
Conținut

Un array de secvențe. Fiecare conține cartonașele sale în ordinea corectă.

Revine implicit la numele “Reorder Game API”

Bine de știut
  • Ordinea pe care o trimiți este stocată ca ordine corectă — numărul unu primul.
  • Un cartonaș este un obiect cu un type și o value. Folosește "text" pentru cuvinte, sau "image", "audio", "youtube" ori "link" cu un URL în value, și adaugă alt pentru o descriere.
Exemplu de cerere
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": "ro",
  "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"
        }
      ]
    }
  ]
}'
Succes
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/reorder/embed?p=-Nq8sample_activity_key",
  "message": "Reorder game created successfully"
}
Întrebări și răspunsuri

Quizul

Întrebări cu variante multiple și întrebări deschise, punctate pe măsură ce jucătorii avansează.

#
POST /api/public/v1/quiz Cel puțin 1 în items
Conținut

Un array de întrebări. Întrebările cu variante multiple conțin răspunsurile lor; întrebările deschise conțin răspunsul pe care îl accepți.

Revine implicit la numele “Quiz API”

Bine de știut
  • question_type este fie "multiple_choice", caz în care opțiunea corectă are isCorrect pe true, fie "open_answer", care folosește în schimb correct_answer. Dacă îl omiți, este tratat ca variante multiple.
  • Endpointul quiz transmite settings direct, ca blocuri de setări ale activității, așa că nu e locul pentru opțiuni disparate — ajustează quizul ulterior în editor.
Exemplu de cerere
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": "ro",
  "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."
    }
  ]
}'
Succes
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/quiz/embed?p=-Nq8sample_activity_key",
  "message": "Quiz created successfully"
}

Jocul de societate

api_e_board_game

#
POST /api/public/v1/board-game Cel puțin 1 în items
Conținut

api_c_board_game

Revine implicit la numele “Board Game API”

Bine de știut
  • question_type este fie "multiple_choice", caz în care opțiunea corectă are isCorrect pe true, fie "open_answer", care folosește în schimb correct_answer. Dacă îl omiți, este tratat ca variante multiple.
Setări pe care le citește
CâmpTipCe face
number_of_tiles
opțional în settings
number
numberCâte căsuțe are jocul de societate. Între 10 și 75.
Implicit: 30
game_mode
opțional în settings
string
stringDacă jucătorii se întrec spre final sau colectează obiecte pe parcurs.
Una dintre race_to_finishcollect_items
Implicit: "race_to_finish"
Exemplu de cerere
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": "ro",
  "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"
  }
}'
Succes
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/board-game/embed?p=-Nq8sample_activity_key",
  "message": "Board Game created successfully"
}
Propoziții și numere

Criptograma

Transformă o propoziție într-un cod de spart, un caracter pe rând.

#
POST /api/public/v1/cryptogram Nu primește items
Conținut

O singură propoziție, în câmpul sentence. Acest endpoint nu primește items.

Revine implicit la numele “Cryptogram API”

Bine de știut
  • Orice trimiți în items este ignorat — jocul este construit doar din sentence.
Setări pe care le citește
CâmpTipCe face
sentence
obligatoriu
string
stringPropoziția de criptat. Jucătorii o decodează literă cu literă.
helpers
opțional în settings
string
stringCe caractere sunt dezvăluite gratuit ca punct de plecare: niciunul, cele mai frecvente, vocalele, sau cele pe care le listezi tu însuți.
Una dintre nonemost_commonvowelscustom
Implicit: "none"
character_list
opțional în settings
string
stringAlfabetul din care este construit cifrul. Lăsat gol, criptarea își alege propriul alfabet.
extra_letters
opțional în settings
string
stringCaracterele dezvăluite când helpers este "custom". Ignorat pentru celelalte moduri.
hide_unused_characters
opțional în settings
boolean
booleanLasă în afara cheii caracterele pe care propoziția nu le folosește niciodată.
Implicit: false
Exemplu de cerere
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": "ro",
  "sentence": "An apple a day keeps the doctor away",
  "settings": {
    "helpers": "vowels",
    "hide_unused_characters": false
  }
}'
Succes
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/cryptogram/embed?p=-Nq8sample_activity_key",
  "message": "Cryptogram created successfully"
}

Exercițiul de calcul

Ascunde o propoziție în spatele unor calcule — rezolvi calculul, dezvălui litera.

#
POST /api/public/v1/calculation Nu primește items
Conținut

O singură propoziție, în câmpul sentence. Acest endpoint nu primește items.

Revine implicit la numele “Calculation Game API”

Bine de știut
  • Dacă restricțiile sunt prea stricte pentru a coda propoziția, apelul răspunde cu 400 și te roagă să le relaxezi, în loc să salveze un joc parțial.
Setări pe care le citește
CâmpTipCe face
sentence
obligatoriu
string
stringPropoziția pe care jucătorii o descoperă rezolvând calculele.
difficulty_level
opțional în settings
number
numberCel mai mare rezultat pe care îl poate avea un calcul.
Una dintre 20501001000
Implicit: "100"
operators
opțional în settings
string[]
string[]Ce operații pot apărea. x înseamnă înmulțire, : înseamnă împărțire.
Una dintre +-x:
Implicit: ["+", "-", "x", ":"]
max_operations
opțional în settings
number
numberCâte operații poate înlănțui un calcul.
Una dintre 123
Implicit: 1
number_difficulty
opțional în settings
number
numberLimitează numerele individuale din interiorul unui calcul. Undeva între 5 și 1000.
Implicit: 100
Exemplu de cerere
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": "ro",
  "sentence": "Fruit salad for everyone",
  "settings": {
    "difficulty_level": "100",
    "operators": [
      "+",
      "-",
      "x",
      ":"
    ],
    "max_operations": 1,
    "number_difficulty": 100
  }
}'
Succes
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/calculation/embed?p=-Nq8sample_activity_key",
  "message": "Calculation game created successfully"
}

Sudoku

Generează o grilă rezolvată, apoi scoate din nou numerele.

#
POST /api/public/v1/sudoku Nu primește items
Conținut

Nimic. Tot jocul rezultă din cele două setări ale sale.

Revine implicit la numele “Sudoku API”

Bine de știut
  • Nu trimite items și nici sentence — size și difficulty sunt toată intrarea.
  • Editorul oferă dificultatea doar pentru 2x3, 3x3 și 3x4. API-ul o aplică pentru fiecare dimensiune, inclusiv 2x2 și 4x4.
Setări pe care le citește
CâmpTipCe face
size
opțional în settings
string
stringDimensiunea unui bloc, scrisă ca rânduri pe coloane — 3x3 dă grila clasică 9x9. Endpointul verifică doar că se poate interpreta ca două numere, așa că rămâi la dimensiunile oferite de editor.
Una dintre 2x22x33x33x44x4
Implicit: "3x3"
difficulty_level
opțional în settings
string
stringCâte numere rămân pe grilă ca punct de plecare.
Una dintre easynormalhard
Implicit: "normal"
Exemplu de cerere
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": "ro",
  "settings": {
    "size": "3x3",
    "difficulty_level": "normal"
  }
}'
Succes
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/sudoku/embed?p=-Nq8sample_activity_key",
  "message": "Sudoku created successfully"
}
Imagini

Puzzle-ul

Taie o imagine în piese, de tras înapoi la un loc.

#
POST /api/public/v1/jigsaw Nu primește items
Conținut

Un URL de imagine, în câmpul image. Acest endpoint nu primește items.

Revine implicit la numele “Jigsaw Game API”

Bine de știut
  • API-ul creează întotdeauna un puzzle de 4 pe 4. Numărul de piese, piesele neregulate și marginile drepte sunt setări din editor — trimiterea de rows sau columns aici nu are niciun efect.
  • URL-ul este stocat exact așa cum l-ai trimis, iar fișierul nu este copiat niciodată, așa că trebuie să rămână accesibil public atât timp cât activitatea este jucată.
Setări pe care le citește
CâmpTipCe face
image
obligatoriu
string
stringURL absolut al imaginii de tăiat în bucăți. Se trimite la nivelul de sus, nu în interiorul settings.
Exemplu de cerere
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": "ro",
  "image": "https://example.com/orchard.jpg"
}'
Succes
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/jigsaw/embed?p=-Nq8sample_activity_key",
  "message": "Jigsaw game created successfully"
}

Puzzle-ul glisant

Amestecă o imagine în piese care alunecă la locul lor.

#
POST /api/public/v1/slidingpuzzle Nu primește items
Conținut

Un URL de imagine, în interiorul settings. Acest endpoint nu primește items.

Revine implicit la numele “Sliding Puzzle API”

Bine de știut
  • Spre deosebire de puzzle, acest endpoint își citește imaginea din settings.image. Un câmp image la nivelul de sus este ignorat, iar apelul răspunde cu 400.
  • URL-ul este stocat exact așa cum l-ai trimis, iar fișierul nu este copiat niciodată, așa că trebuie să rămână accesibil public atât timp cât activitatea este jucată.
Setări pe care le citește
CâmpTipCe face
image
obligatoriu în settings
string
stringURL absolut al imaginii de amestecat. Spre deosebire de cel de la puzzle, acesta se află în interiorul settings.
Exemplu de cerere
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": "ro",
  "settings": {
    "image": "https://example.com/orchard.jpg"
  }
}'
Succes
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/slidingpuzzle/embed?p=-Nq8sample_activity_key",
  "message": "Sliding puzzle created successfully"
}

Ceva nu funcționează cum trebuie?

Trimite cererea pe care ai încercat-o și eroarea pe care ai primit-o înapoi și vei primi un răspuns real, de la persoana care a scris endpointul.

Trimite un e-mail suportului