Przejdź do treści
API dla programistów

Twórz aktywności z własnego systemu

Jeden POST na typ aktywności. Wyślij swoją treść jako JSON, a w zamian dostaniesz aktywność na koncie Puzzel.org i adres URL, który przekażesz graczom albo wstawisz do iframe.

Bazowy URL
https://puzzel.org/api/public/v1
Uwierzytelnianie
Klucz + e-mail w treści żądania
Endpointy
38 typów aktywności
Limit
10 aktywności dziennie

Twoje pierwsze żądanie

Nic nie instalujesz i nie ma żadnej wstępnej wymiany tokenów: wyślij metodą POST treść JSON ze swoim kluczem, adresem e-mail i zawartością. W odpowiedzi wracają klucz nowej aktywności i adres URL, pod którym się w nią gra.

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

Każdy przykład na tej stronie to kompletne, gotowe do uruchomienia żądanie. Podstaw własny klucz i własną treść, a zadziała bez żadnych zmian.

Uwierzytelnianie

Nie ma żadnych nagłówków ani tokenu bearer. Oba dane uwierzytelniające jadą w treści JSON każdego żądania, a klucz jest akceptowany tylko dla konta, do którego należy ten adres e-mail.

PoleTypDo czego służy
account_api_key
wymagane
string
stringKlucz API twojego konta. Trafia do treści żądania, a nie do nagłówka.
email
wymagane
string
stringAdres, którym logujesz się na swoje konto Puzzel.org. Klucz jest ważny tylko razem z nim.

Twój klucz znajdziesz w sekcji konta w panelu, pod przyciskiem Pokaż.

Zaloguj się

Klucze API przyznajemy w chwili rozpoczęcia subskrypcji, więc bezpłatne konto jeszcze go nie ma.

Zobacz plany

Traktuj klucz jak hasło. Tworzy i nadpisuje aktywności na twoim koncie, więc trzymaj go po stronie serwera, z dala od wszystkiego, co może odczytać przeglądarka.

Treść żądania

Każdy endpoint przyjmuje te same pięć pól. Różni się tylko pole z zawartością pod nimi: większość przyjmuje tablicę items, kilka jedno zdanie albo jeden obraz, a sudoku nie przyjmuje niczego.

PoleTypDo czego służy
account_api_key
wymagane
string
stringKlucz API twojego konta. Trafia do treści żądania, a nie do nagłówka.
email
wymagane
string
stringAdres, którym logujesz się na swoje konto Puzzel.org. Klucz jest ważny tylko razem z nim.
title
opcjonalne
string
stringNazwa, jaką aktywność dostanie w twoim panelu. Pomiń je, a endpoint użyje własnej nazwy zapasowej.
language
opcjonalne
string
stringDecyduje tylko o języku w zwracanym adresie URL — nie tłumaczy niczego, co wysyłasz. Wykreślanka dodatkowo z niego korzysta, by przełączyć litery wypełniające na arabskie, gdy ma wartość "ar".
Domyślnie: "en"
activity_key
opcjonalne
string
stringPomiń je, aby utworzyć nową aktywność. Podaj klucz aktywności, którą już masz, a zostanie ona przebudowana.

settings to obiekt z opcjami danego endpointu. Które z nich endpoint odczytuje, wypisane jest przy nim niżej; wszystko inne, co tam umieścisz, jest ignorowane.

Co wraca w odpowiedzi

Udane wywołanie odpowiada kodem 200 z kluczem nowej aktywności i adresem URL, pod którym się w nią gra. Wszystko inne odpowiada polem success ustawionym na false i jednym tekstem błędu.

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

Zwracany url to widok osadzony. Zamień embed na play, aby otworzyć go na całej stronie, albo na build, aby otworzyć go w edytorze — klucz po p= pozostaje ten sam.

Tworzenie a aktualizacja

Wyślij activity_key, a stojąca za nim aktywność zostanie przebudowana na miejscu: jej zawartość jest zastępowana, nazwa i znacznik wersji odświeżane, a sam klucz pozostaje ten sam — więc udostępnione już linki i osadzenia działają dalej. Wyniki, umieszczenie w folderze i wszystkie ustawienia, których endpoint sam nie zapisuje, zostają bez zmian.

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 jest stosowane przy każdej aktualizacji, razem z wartością domyślną — pomiń je, a aktywność zostanie przemianowana na nazwę zapasową tego endpointu.
  • Bloki ustawień, które endpoint zapisuje sam, są pisane od zera, więc aktualizacja resetuje je do wartości, które wyślesz, albo do wartości domyślnych endpointu.
  • Aktualizować możesz tylko aktywności należące do twojego konta. Cudzy klucz kończy się odpowiedzią 403.
  • Aktualizacja kosztuje tyle samo co utworzenie: jedno wywołanie z dziennego limitu.

Limit żądań

10
10 aktywności na konto dziennie

Liczy się każde udane wywołanie, zarówno tworzenie, jak i aktualizacja. Po przekroczeniu limitu kolejne żądanie odpowiada kodem 429, dopóki licznik nie zostanie wyzerowany.

Licznik jest zerowany raz dziennie przez zaplanowane zadanie, a nie w ruchomym oknie 24 godzin.

Błędy

Błędy zawsze przychodzą jako JSON z tymi samymi dwoma polami, nigdy jako strona HTML. Tekst błędu jest napisany tak, by przeczytał go człowiek — nazywa pole albo limit, na którym coś się wysypało.

StatusCo oznacza
400
Bad Request
Czegoś w treści żądania brakuje, coś jest źle zbudowane albo poza zakresem. Komunikat wskazuje pole.
401
Unauthorized
Adres e-mail jest nieznany albo klucz nie należy do tego konta.
403
Forbidden
Wysłany activity_key należy do innego konta.
429
Too Many Requests
Dzisiejszy limit został wyczerpany. Zeruje się raz dziennie.
500
Server Error
Generator nie zdołał zbudować łamigłówki z tego, co wysłano — zwykle za mało słów albo słowa, których nie da się ze sobą dopasować.

Endpointy

Jedna ścieżka na typ aktywności, wszystkie POST, wszystkie pod tym samym bazowym URL. Przy każdej wypisana jest treść, której potrzebuje, ustawienia, które odczytuje, i żądanie, które możesz uruchomić.

Słowa i litery

Krzyżówka

Splata twoje odpowiedzi w siatkę i sam numeruje definicje.

#
POST /api/public/v1/crossword Od 2 do 80 elementów w items
Treść

Tablica słów. Każdy wpis łączy odpowiedź z definicją, która na nią wskazuje.

W razie braku używa nazwy “Crossword API”

Warto wiedzieć
  • Odpowiedzi krótsze niż dwa znaki są odrzucane przed zbudowaniem siatki i co najmniej dwie muszą to przetrwać.
  • Odpowiedzi są zamieniane na wielkie litery, a generator ma dwadzieścia prób, żeby je dopasować. Jeśli nie zdoła umieścić ani jednego słowa, wywołanie odpowiada kodem 500.
Odczytywane ustawienia
PoleTypDo czego służy
hidden_solution
opcjonalne w settings
string
stringOpcjonalne słowo bonusowe. Jego litery są zaznaczone w kratkach gotowej siatki, a gracze zbierają je po rozwiązaniu krzyżówki, więc każda jego litera musi pojawić się w odpowiedziach.
Przykładowe żądanie
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": "pl",
  "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"
    }
  ]
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/crossword/embed?p=-Nq8sample_activity_key",
  "message": "Crossword created successfully"
}

Wykreślanka

Ukrywa twoje słowa w siatce liter, w wybranych przez ciebie kierunkach i kształcie.

#
POST /api/public/v1/wordseeker Od 2 do 40 elementów w items
Treść

Tablica słów. Tekst definicji staje się listą słów, z której korzystają gracze.

W razie braku używa nazwy “Wordseeker API”

Warto wiedzieć
  • Odpowiedzi krótsze niż dwa znaki są odrzucane, a każda odpowiedź trafia do siatki zamieniona na wielkie litery.
  • Siatka jest wypełniana literami łacińskimi, chyba że language ma wartość "ar" — wtedy litery wypełniające przełączają się na arabskie.
Odczytywane ustawienia
PoleTypDo czego służy
hidden_solution
opcjonalne w settings
string
stringPozostałe litery układają się w to rozwiązanie. Ustawienie go mówi też generatorowi, żeby najpierw dopasował rozwiązanie, zamiast upchnąć jak najwięcej słów.
directions
opcjonalne w settings
string[]
string[]W których kierunkach może biec słowo. Pomiń je, a słowa pobiegną tylko na wschód, na południowy wschód i na południe.
Jedna z wartości westeastnorthsouthnorthwestnortheastsouthwestsoutheast
Domyślnie: ["east", "southeast", "south"]
template
opcjonalne w settings
string
stringWycina siatkę w kształt, zamiast zostawiać ją kwadratową.
Jedna z wartości squarecirclecrossdiamondpyramidsmileystarcross_plus
Przykładowe żądanie
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": "pl",
  "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"
  }
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/wordseeker/embed?p=-Nq8sample_activity_key",
  "message": "Wordseeker created successfully"
}

Akrostych

Układa twoje odpowiedzi jedna pod drugą tak, by jedna kolumna tworzyła ukryte słowo.

#
POST /api/public/v1/acrostic Od 1 do 40 elementów w items
Treść

Tablica słów. Razem muszą dostarczyć wszystkie litery ukrytego słowa.

W razie braku używa nazwy “Acrostic API”

Warto wiedzieć
  • Jeśli odpowiedzi nie dostarczą liter potrzebnych do rozwiązania, wywołanie odpowiada kodem 500, zamiast zapisać niedokończoną siatkę.
  • Generator zmienia kolejność twoich odpowiedzi, żeby kolumna zadziałała, więc kolejność, którą wysyłasz, nie jest tą, którą widzą gracze.
Odczytywane ustawienia
PoleTypDo czego służy
hidden_solution
wymagane w settings
string
stringSłowo, które układa się w wyróżnionej kolumnie. Bez niego ten endpoint nie zadziała.
Przykładowe żądanie
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": "pl",
  "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"
  }
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/acrostic/embed?p=-Nq8sample_activity_key",
  "message": "Acrostic created successfully"
}

Anagramy

api_e_word_scramble

#
POST /api/public/v1/word-scramble Od 1 do 40 elementów w items
Treść

api_c_word_scramble

W razie braku używa nazwy “Word Scramble API”

Warto wiedzieć
  • Aktywności tworzone przez API zawsze mają włączone losowanie kolejności, więc kolejność, którą wysyłasz, nie jest tą, którą dostają gracze.
Odczytywane ustawienia
PoleTypDo czego służy
hidden_solution
opcjonalne w settings
string
stringOpcjonalne słowo bonusowe, które gracze wpisują po rozwiązaniu reszty.
Przykładowe żądanie
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": "pl",
  "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"
  }
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/word-scramble/embed?p=-Nq8sample_activity_key",
  "message": "Word Scramble created successfully"
}

Wisielec

Zamienia twoje słowa lub zwroty w rundy zgadywania liter.

#
POST /api/public/v1/hangman Od 1 do 50 elementów w items
Treść

Tablica słów lub krótkich zwrotów. Wskazówka jest podpowiedzią, którą widzą gracze.

W razie braku używa nazwy “Hangman API”

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

Wordle

Z każdego wysłanego słowa robi grę w zgadywanie słowa.

#
POST /api/public/v1/wordle Od 1 do 50 elementów w items
Treść

Tablica słów. Gracze dostają jedną rundę na każde słowo.

W razie braku używa nazwy “Wordle API”

Warto wiedzieć
  • Tworzone z włączonym sprawdzaniem, czy zgadywane słowa naprawdę istnieją. Wyłącz je w edytorze, jeśli twoje słowa to nazwy własne albo wyrazy wymyślone.
Przykładowe żądanie
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": "pl",
  "items": [
    {
      "answer": "MELON",
      "description": "Sweet and green",
      "type": "text"
    },
    {
      "answer": "PEACH",
      "description": "Fuzzy and orange",
      "type": "text"
    }
  ]
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/wordle/embed?p=-Nq8sample_activity_key",
  "message": "Wordle created successfully"
}

Nauka pisania na klawiaturze

api_e_typing_practice

#
POST /api/public/v1/typing-practice Od 1 do 50 elementów w items
Treść

api_c_typing_practice

W razie braku używa nazwy “Typing Practice API”

Przykładowe żądanie
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": "pl",
  "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"
    }
  ]
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/typing-practice/embed?p=-Nq8sample_activity_key",
  "message": "Typing Practice created successfully"
}

Koło fortuny

api_e_wheel_of_fortune

#
POST /api/public/v1/wheel-of-fortune Od 1 do 50 elementów w items
Treść

api_c_wheel_of_fortune

W razie braku używa nazwy “Wheel of Fortune API”

Warto wiedzieć
  • Tworzone z ustawieniem “pokaż wynik tylko w kole”, więc rezultat odczytuje się z koła, zamiast być ogłaszanym obok.
Przykładowe żądanie
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": "pl",
  "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"
    }
  ]
}'
Sukces
{
  "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"
}

Krzyżówka panoramiczna

Krzyżówka panoramiczna: definicje są wewnątrz siatki, każda ze strzałką wskazującą jej odpowiedź.

#
POST /api/public/v1/arrowword Od 2 do 80 elementów w items
Treść

Tablica słów. Każdy wpis łączy odpowiedź z definicją na tyle krótką, by zmieściła się w jednej kratce.

W razie braku używa nazwy “Arrowword API”

Odczytywane ustawienia
PoleTypDo czego służy
hidden_solution
opcjonalne w settings
string
stringOpcjonalne słowo bonusowe. Jego litery są zaznaczone w kratkach gotowej siatki, więc każda jego litera musi pojawić się w odpowiedziach.
Przykładowe żądanie
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": "pl",
  "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"
  }
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/arrowword/embed?p=-Nq8sample_activity_key",
  "message": "Arrowword created successfully"
}

Strands

Siatka, w której każda litera należy do słowa tematycznego, a jedno słowo nazywające temat biegnie od krawędzi do krawędzi.

#
POST /api/public/v1/strands Od 2 do 24 elementów w items
Treść

Tablica słów tematycznych. Razem ze spangramem ich litery muszą dokładnie wypełnić planszę.

W razie braku używa nazwy “Strands API”

Warto wiedzieć
  • Litery wszystkich słów i spangramu razem muszą dać dokładnie 30, 35, 36, 40, 42, 45, 48, 49, 50, 54, 56, 60, 63, 64, 70, 72 albo 80. Każda inna liczba kończy się odpowiedzią 400 i mówi, ile liter dodać lub usunąć.
Odczytywane ustawienia
PoleTypDo czego służy
theme
opcjonalne w settings
string
stringZagadka pokazywana nad siatką. Pominięta: gracze widzą tytuł.
spangram
opcjonalne w settings
string
stringSłowo lub fraza, która nazywa temat i przecina planszę od jednej krawędzi do drugiej.
Przykładowe żądanie
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": "pl",
  "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"
  }
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/strands/embed?p=-Nq8sample_activity_key",
  "message": "Strands created successfully"
}

Wymienianka

api_e_name_them_all

#
POST /api/public/v1/name-them-all Od 1 do 250 elementów w items
Treść

api_c_name_them_all

W razie braku używa nazwy “Name Them All API”

Warto wiedzieć
  • Wpis to obiekt z polem answer i opcjonalnie aliases (inne pisownie, które się liczą), description (podpowiedź) oraz group. Przy sprawdzaniu nazwy wielkość liter, akcenty i interpunkcja są ignorowane.
Odczytywane ustawienia
PoleTypDo czego służy
list_match_mode
opcjonalne w settings
string
stringCzy nazwa liczy się w chwili wpisania, czy dopiero po naciśnięciu Enter.
Jedna z wartości while_typingon_enter
Domyślnie: "while_typing"
list_slot_hint
opcjonalne w settings
string
stringCo zdradza puste pole: nic, długość nazwy, jej pierwszą literę albo podpowiedź, którą napiszesz.
Jedna z wartości nonelengthfirst_letterhint
Domyślnie: "none"
list_arrange
opcjonalne w settings
string
stringJedna kolumna na grupę albo jedna lista.
Jedna z wartości groupsone_list
Domyślnie: "groups"
list_allow_give_up
opcjonalne w settings
boolean
booleanPokazuje przycisk poddania się, który kończy rundę i odsłania to, czego zabrakło.
Domyślnie: false
Przykładowe żądanie
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": "pl",
  "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
  }
}'
Sukces
{
  "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"
}
Karty i pary

Memory

Karty odwrócone rewersem do góry, które odkrywa się i dobiera w pary.

#
POST /api/public/v1/memory Od 2 do 30 elementów w items
Treść

Tablica par. Każda para zawiera dwie karty, które do siebie pasują.

W razie braku używa nazwy “Memory Game API”

Warto wiedzieć
  • Karta to obiekt z polami type i value. Użyj "text" dla słów albo "image", "audio", "youtube" czy "link" z adresem URL w value i dodaj alt z opisem.
Przykładowe żądanie
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": "pl",
  "items": [
    {
      "cards": [
        {
          "type": "text",
          "value": "Apple"
        },
        {
          "type": "text",
          "value": "A red fruit"
        }
      ]
    },
    {
      "cards": [
        {
          "type": "text",
          "value": "Banana"
        },
        {
          "type": "text",
          "value": "A yellow fruit"
        }
      ]
    }
  ]
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/memory/embed?p=-Nq8sample_activity_key",
  "message": "Memory game created successfully"
}

Dopasowanie

api_e_matching_pairs

#
POST /api/public/v1/matching-pairs Od 2 do 30 elementów w items
Treść

api_c_matching_pairs

W razie braku używa nazwy “Matching Game API”

Warto wiedzieć
  • Karta to obiekt z polami type i value. Użyj "text" dla słów albo "image", "audio", "youtube" czy "link" z adresem URL w value i dodaj alt z opisem.
Przykładowe żądanie
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": "pl",
  "items": [
    {
      "cards": [
        {
          "type": "text",
          "value": "Apple"
        },
        {
          "type": "text",
          "value": "A red fruit"
        }
      ]
    },
    {
      "cards": [
        {
          "type": "text",
          "value": "Banana"
        },
        {
          "type": "text",
          "value": "A yellow fruit"
        }
      ]
    }
  ]
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/matching-pairs/embed?p=-Nq8sample_activity_key",
  "message": "Matching pairs game created successfully"
}

Fiszki

api_e_flash_cards

#
POST /api/public/v1/flash-cards Od 1 do 150 elementów w items
Treść

api_c_flash_cards

W razie braku używa nazwy “Flash Cards API”

Warto wiedzieć
  • Endpoint zapisuje tyle kart, ile wyślesz, więc wysyłaj dokładnie dwie na wpis — najpierw przód, potem tył.
  • Karta to obiekt z polami type i value. Użyj "text" dla słów albo "image", "audio", "youtube" czy "link" z adresem URL w value i dodaj alt z opisem.
Przykładowe żądanie
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": "pl",
  "items": [
    {
      "cards": [
        {
          "type": "text",
          "value": "Apple"
        },
        {
          "type": "text",
          "value": "A red fruit"
        }
      ]
    },
    {
      "cards": [
        {
          "type": "text",
          "value": "Banana"
        },
        {
          "type": "text",
          "value": "A yellow fruit"
        }
      ]
    }
  ]
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/flash-cards/embed?p=-Nq8sample_activity_key",
  "message": "Flash Cards created successfully"
}

Podział na kategorie

Karty do rozdzielenia do kategorii, do których należą.

#
POST /api/public/v1/categorize Co najmniej 2 elementów w items · maksymalnie 60 kart łącznie
Treść

Tablica kategorii, każda z nazwą i kartami, które do niej należą.

W razie braku używa nazwy “Categorize Game API”

Warto wiedzieć
  • Kategoria wysłana bez nazwy zapisuje się jako “Untitled Category”, więc zawsze podawaj nazwę.
  • Karta to obiekt z polami type i value. Użyj "text" dla słów albo "image", "audio", "youtube" czy "link" z adresem URL w value i dodaj alt z opisem.
Przykładowe żądanie
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": "pl",
  "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"
        }
      ]
    }
  ]
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/categorize/embed?p=-Nq8sample_activity_key",
  "message": "Categorize game created successfully"
}

Porządkowanie

Sekwencja, którą gracze muszą ułożyć z powrotem w kolejności.

#
POST /api/public/v1/reorder Co najmniej 1 elementów w items · maksymalnie 60 kart łącznie
Treść

Tablica sekwencji. Każda zawiera swoje karty w poprawnej kolejności.

W razie braku używa nazwy “Reorder Game API”

Warto wiedzieć
  • Kolejność, którą wysyłasz, jest zapisywana jako poprawna — pozycja numer jeden na początku.
  • Karta to obiekt z polami type i value. Użyj "text" dla słów albo "image", "audio", "youtube" czy "link" z adresem URL w value i dodaj alt z opisem.
Przykładowe żądanie
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": "pl",
  "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"
        }
      ]
    }
  ]
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/reorder/embed?p=-Nq8sample_activity_key",
  "message": "Reorder game created successfully"
}

Bingo

Bingo dla klasy, które prowadzący wywołuje na żywo: każdy gracz dostaje kartę wylosowaną z twoich elementów.

#
POST /api/public/v1/bingo Nie przyjmuje items
Treść

Tablica elementów, z których losowane są karty. Wyślij wyraźnie więcej elementów, niż ma kratek jedna karta, żeby karty się różniły.

W razie braku używa nazwy “Bingo API”

Warto wiedzieć
  • Element to obiekt z polem value i opcjonalnie type ("text", "image" albo "audio" z adresem URL w value), description (wskazówka, którą prowadzący odczytuje w trybie clues) oraz alt.
Odczytywane ustawienia
PoleTypDo czego służy
mode
opcjonalne w settings
string
stringCo wypełnia kratki: twoje elementy, twoje elementy wywoływane po wskazówce albo zwykłe liczby (nie potrzebują items).
Jedna z wartości itemscluesnumbers
Domyślnie: "items"
rows
opcjonalne w settings
number
numberWiersze na każdej karcie, od 2 do 5.
Domyślnie: 3
columns
opcjonalne w settings
number
numberKolumny na każdej karcie, od 2 do 5.
Domyślnie: 3
highest_number
opcjonalne w settings
number
numberW trybie numbers karty są wypełniane liczbami od 1 do tej liczby, najwyżej 100. Funkcja planu: bez planu zostaje 50.
Domyślnie: 50
Przykładowe żądanie
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": "pl",
  "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
  }
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/bingo/embed?p=-Nq8sample_activity_key",
  "message": "Bingo created successfully"
}

Mam, kto ma

api_e_i_have_who_has

#
POST /api/public/v1/i-have-who-has Od 3 do 40 elementów w items
Treść

api_c_i_have_who_has

W razie braku używa nazwy “I Have, Who Has API”

Warto wiedzieć
  • Żadne pytanie ani żadna odpowiedź nie może się powtórzyć: uczeń, który ma odpowiedź, nie wiedziałby, do którego pytania należy.
Odczytywane ustawienia
PoleTypDo czego służy
chain_shape
opcjonalne w settings
string
stringPętla zamyka się w sobie, więc każda karta może zaczynać; linia otwiera się kartą Start i kończy kartą Koniec.
Jedna z wartości loopline
Domyślnie: "loop"
Przykładowe żądanie
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": "pl",
  "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"
  }
}'
Sukces
{
  "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"
}

Zamek szyfrowy

Zamek szyfrowy: siatka kart, z których część razem tworzy kod.

#
POST /api/public/v1/keypad Od 1 do 30 elementów w items
Treść

Tablica kart. Karty wchodzące w skład kodu niosą swoje miejsce w nim.

W razie braku używa nazwy “Keypad API”

Warto wiedzieć
  • Karta to obiekt z polem value i opcjonalnie type ("text", "image" albo "audio" z adresem URL w value), alt oraz code_position: jej miejscem w kodzie, 1 to pierwsze. Karta może być w kodzie tylko raz i co najmniej jedna karta musi w nim być.
Odczytywane ustawienia
PoleTypDo czego służy
instructions
opcjonalne w settings
string
stringPytanie albo zagadka, na którą odpowiada kod, pokazywane razem z siatką kart.
force_solution_in_correct_order
opcjonalne w settings
boolean
booleanKarty trzeba wybrać po kolei. Wyłączone: zamek otwiera dowolna kolejność właściwych kart.
Domyślnie: false
randomize_order
opcjonalne w settings
boolean
booleanKażdy gracz dostaje karty w przetasowanym układzie.
Domyślnie: true
Przykładowe żądanie
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": "pl",
  "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
  }
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/keypad/embed?p=-Nq8sample_activity_key",
  "message": "Keypad created successfully"
}

Kwartety

Gra karciana: gracze proszą się nawzajem o karty, by zebrać kwartety.

#
POST /api/public/v1/quartets Od 2 do 16 elementów w items
Treść

Tablica kwartetów. Każdy ma nazwę i dokładnie cztery karty.

W razie braku używa nazwy “Quartets API”

Warto wiedzieć
  • Karta to nazwa albo obiekt z polami name i description (fakt pokazany na karcie). Żadna nazwa karty nie może się w grze powtórzyć: gracze proszą o karty po nazwie.
Odczytywane ustawienia
PoleTypDo czego służy
type
opcjonalne w settings
string
stringZwykła gra albo gra edukacyjna, w której każda karta pokazuje fakt. Pominięte: learn, gdy jakakolwiek karta ma description.
Jedna z wartości normallearn
Przykładowe żądanie
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": "pl",
  "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"
  }
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/quartets/embed?p=-Nq8sample_activity_key",
  "message": "Quartets game created successfully"
}
Pytania i odpowiedzi

Quiz

Pytania wielokrotnego wyboru i otwarte, punktowane na bieżąco.

#
POST /api/public/v1/quiz Od 1 do 100 elementów w items
Treść

Tablica pytań. Pytania wielokrotnego wyboru niosą swoje odpowiedzi, pytania otwarte — odpowiedź, którą akceptujesz.

W razie braku używa nazwy “Quiz API”

Warto wiedzieć
  • question_type ma wartość "multiple_choice", gdzie poprawna opcja ma isCorrect true; "true_false", czyli to samo z dokładnie dwiema opcjami, pierwsza to prawda, druga to fałsz; albo "open_answer", który zamiast tego używa correct_answer. Jeśli go pominiesz, pytanie jest traktowane jak wielokrotny wybór.
  • Endpoint quizu przekazuje settings prosto jako bloki ustawień aktywności, więc nie jest to miejsce na luźne opcje — quiz dopracuj potem w edytorze.
Przykładowe żądanie
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": "pl",
  "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."
    }
  ]
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/quiz/embed?p=-Nq8sample_activity_key",
  "message": "Quiz created successfully"
}

Gra planszowa

api_e_board_game

#
POST /api/public/v1/board-game Od 1 do 100 elementów w items
Treść

api_c_board_game

W razie braku używa nazwy “Board Game API”

Warto wiedzieć
  • question_type ma wartość "multiple_choice", gdzie poprawna opcja ma isCorrect true; "true_false", czyli to samo z dokładnie dwiema opcjami, pierwsza to prawda, druga to fałsz; albo "open_answer", który zamiast tego używa correct_answer. Jeśli go pominiesz, pytanie jest traktowane jak wielokrotny wybór.
Odczytywane ustawienia
PoleTypDo czego służy
number_of_tiles
opcjonalne w settings
number
numberIle pól ma plansza. Od 10 do 75.
Domyślnie: 30
game_mode
opcjonalne w settings
string
stringCzy gracze ścigają się do mety, czy zbierają po drodze przedmioty.
Jedna z wartości race_to_finishcollect_items
Domyślnie: "race_to_finish"
Przykładowe żądanie
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": "pl",
  "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"
  }
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/board-game/embed?p=-Nq8sample_activity_key",
  "message": "Board Game created successfully"
}

Labirynt

Labirynt do przejścia: każde pytanie to komnata, a jej odpowiedzi to drzwi.

#
POST /api/public/v1/maze Co najmniej 1 elementów w items
Treść

Tablica pytań wielokrotnego wyboru albo prawda/fałsz, dokładnie w takim kształcie, jaki przyjmuje endpoint quizu. Pytania otwarte są odrzucane: na drzwiach musi być napisana odpowiedź.

W razie braku używa nazwy “Maze API”

Odczytywane ustawienia
PoleTypDo czego służy
maze_width
opcjonalne w settings
string
stringJak ułożone są komnaty: jedna kolumna, kwadrat albo szerzej.
Jedna z wartości narrownormalwide
Domyślnie: "normal"
maze_corridors
opcjonalne w settings
string
stringIle labiryntu leży między dwoma pytaniami.
Jedna z wartości shortnormallong
Domyślnie: "normal"
maze_fog
opcjonalne w settings
string
stringPokaż cały labirynt albo tylko to, obok czego gracz już był.
Jedna z wartości offnear
Domyślnie: "off"
maze_wrong_door_pause
opcjonalne w settings
string
stringJak długo drzwi pozostają zamknięte po błędnym wyborze.
Jedna z wartości noneshortlong
Domyślnie: "short"
maze_walk_there
opcjonalne w settings
boolean
booleanDodaje przycisk, który przeprowadza pionek do następnej komnaty.
Domyślnie: false
maze_seed
opcjonalne w settings
string
stringZiarno, z którego generowany jest labirynt. To samo ziarno i te same pytania dają ten sam labirynt; pominięte — losowany jest nowy.
Przykładowe żądanie
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": "pl",
  "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"
  }
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/maze/embed?p=-Nq8sample_activity_key",
  "message": "Maze created successfully"
}

Jeopardy

Plansza jak w teleturnieju: kategorie na górze, a pod nimi wskazówki warte tym więcej, im niżej się znajdują.

#
POST /api/public/v1/jeopardy Co najmniej 2 elementów w items
Treść

Tablica kategorii, od lewej do prawej. Każda ma nazwę i swoje wskazówki, od górnego wiersza w dół.

W razie braku używa nazwy “Jeopardy API”

Warto wiedzieć
  • Wskazówka to pytanie w takim kształcie, jaki przyjmuje endpoint quizu, open_answer, o ile nie podano inaczej, z correct_answer i opcjonalnie aliases. Może też nieść value (własną wartość) i daily_double. null zostawia kratkę pustą.
Odczytywane ustawienia
PoleTypDo czego służy
jeopardy_buzzer_mode
opcjonalne w settings
string
stringKto gra i jak: prowadzący steruje z konsoli, gracze zgłaszają się z telefonów albo każdy gracz przechodzi planszę sam.
Jedna z wartości hostphonessolo
Domyślnie: "host"
jeopardy_contestants
opcjonalne w settings
string
stringCzy konsola mówi o drużynach, czy o graczach.
Jedna z wartości teamsplayers
Domyślnie: "teams"
jeopardy_value_step
opcjonalne w settings
number
numberIle warty jest wiersz: wskazówka jest warta tyle razy numer swojego wiersza. Od 50 do 500, co 50.
Domyślnie: 100
jeopardy_answer_time
opcjonalne w settings
number
numberSekundy na odpowiedź po odsłonięciu wskazówki, maksymalnie 300. 0 oznacza brak stopera.
Domyślnie: 20
jeopardy_wrong_answer_costs
opcjonalne w settings
boolean
booleanBłędna odpowiedź odejmuje od punktacji wartość wskazówki.
Domyślnie: false
jeopardy_reveal_on_timeout
opcjonalne w settings
boolean
booleanPlansza sama pokazuje odpowiedź, gdy skończy się czas.
Domyślnie: false
jeopardy_require_question_form
opcjonalne w settings
boolean
booleanPrzypomina graczom, by odpowiadali w formie pytania.
Domyślnie: false
Przykładowe żądanie
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": "pl",
  "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
  }
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/jeopardy/embed?p=-Nq8sample_activity_key",
  "message": "Jeopardy board created successfully"
}

Interaktywne wideo

api_e_interactive_video

#
POST /api/public/v1/interactive-video Od 1 do 50 elementów w items
Treść

api_c_interactive_video

W razie braku używa nazwy “Interactive Video API”

Warto wiedzieć
  • Okienko to obiekt z time (sekundy albo "1:23"), kind ("question", chyba że napisano "note", "think" albo "chapter") i description. Pytanie to pytanie w takim kształcie, jaki przyjmuje endpoint quizu, i może nieść rewind_to: miejsce, od którego wideo odtwarza się od nowa po błędnej odpowiedzi.
Odczytywane ustawienia
PoleTypDo czego służy
video_url
wymagane w settings
string
stringWideo: strona YouTube, Vimeo albo Bunny Stream albo bezpośredni link do pliku mp4, webm lub mov.
video_duration
opcjonalne w settings
number
numberDługość wideo w sekundach. Gdy ją podasz, okienko po końcu wideo jest odrzucane.
Przykładowe żądanie
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": "pl",
  "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
  }
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/interactive-video/embed?p=-Nq8sample_activity_key",
  "message": "Interactive video created successfully"
}
Zdania i liczby

Kryptogram

Zamienia zdanie w szyfr do złamania, znak po znaku.

#
POST /api/public/v1/cryptogram Nie przyjmuje items
Treść

Jedno zdanie, w polu sentence. Ten endpoint nie przyjmuje items.

W razie braku używa nazwy “Cryptogram API”

Warto wiedzieć
  • Wszystko, co wyślesz w items, jest ignorowane — łamigłówka powstaje z samego zdania.
Odczytywane ustawienia
PoleTypDo czego służy
sentence
wymagane
string
stringZdanie do zaszyfrowania. Gracze rozszyfrowują je znak po znaku.
helpers
opcjonalne w settings
string
stringKtóre znaki są odsłaniane za darmo na wejście: żadne, najczęstsze, samogłoski albo te, które wypiszesz samodzielnie.
Jedna z wartości nonemost_commonvowelscustom
Domyślnie: "none"
character_list
opcjonalne w settings
string
stringAlfabet, z którego budowany jest szyfr. Zostawiony pusty, szyfrowanie wybierze go samo.
extra_letters
opcjonalne w settings
string
stringZnaki odsłaniane, gdy helpers ma wartość "custom". Przy pozostałych trybach ignorowane.
hide_unused_characters
opcjonalne w settings
boolean
booleanPomija w kluczu znaki, których zdanie w ogóle nie używa.
Domyślnie: false
Przykładowe żądanie
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": "pl",
  "sentence": "An apple a day keeps the doctor away",
  "settings": {
    "helpers": "vowels",
    "hide_unused_characters": false
  }
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/cryptogram/embed?p=-Nq8sample_activity_key",
  "message": "Cryptogram created successfully"
}

Ćwiczenie rachunkowe

Ukrywa zdanie za działaniami — rozwiąż działanie, odsłoń literę.

#
POST /api/public/v1/calculation Nie przyjmuje items
Treść

Jedno zdanie, w polu sentence. Ten endpoint nie przyjmuje items.

W razie braku używa nazwy “Calculation Game API”

Warto wiedzieć
  • Jeśli ograniczenia są zbyt ciasne, by zakodować zdanie, wywołanie odpowiada kodem 400 z prośbą o ich poluzowanie, zamiast zapisać niepełną łamigłówkę.
Odczytywane ustawienia
PoleTypDo czego służy
sentence
wymagane
string
stringZdanie, które gracze odkrywają, rozwiązując działania.
difficulty_level
opcjonalne w settings
number
numberNajwyższy wynik, jaki może dać działanie.
Jedna z wartości 20501001000
Domyślnie: "100"
operators
opcjonalne w settings
string[]
string[]Które operacje mogą się pojawić. x to mnożenie, : to dzielenie.
Jedna z wartości +-x:
Domyślnie: ["+", "-", "x", ":"]
max_operations
opcjonalne w settings
number
numberIle operacji może połączyć w sobie jedno działanie.
Jedna z wartości 123
Domyślnie: 1
number_difficulty
opcjonalne w settings
number
numberOgranicza pojedyncze liczby w działaniu. Od 5 do 1000.
Domyślnie: 100
Przykładowe żądanie
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": "pl",
  "sentence": "Fruit salad for everyone",
  "settings": {
    "difficulty_level": "100",
    "operators": [
      "+",
      "-",
      "x",
      ":"
    ],
    "max_operations": 1,
    "number_difficulty": 100
  }
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/calculation/embed?p=-Nq8sample_activity_key",
  "message": "Calculation game created successfully"
}

Sudoku

Generuje rozwiązaną siatkę, a potem wyjmuje z niej liczby.

#
POST /api/public/v1/sudoku Nie przyjmuje items
Treść

Nic. Cała łamigłówka powstaje z dwóch ustawień.

W razie braku używa nazwy “Sudoku API”

Warto wiedzieć
  • Nie wysyłaj ani items, ani sentence — rozmiar i poziom trudności to całe wejście.
  • Edytor oferuje poziom trudności tylko dla 2x3, 3x3 i 3x4. API stosuje go do każdego rozmiaru, w tym 2x2 i 4x4.
Odczytywane ustawienia
PoleTypDo czego służy
size
opcjonalne w settings
string
stringRozmiar jednego bloku, zapisany jako wiersze na kolumny — 3x3 daje klasyczną siatkę 9x9. Endpoint sprawdza tylko, czy da się to odczytać jako dwie liczby, więc trzymaj się rozmiarów, które oferuje edytor.
Jedna z wartości 2x22x33x33x44x4
Domyślnie: "3x3"
difficulty_level
opcjonalne w settings
string
stringIle liczb zostaje w siatce na start.
Jedna z wartości easynormalhard
Domyślnie: "normal"
Przykładowe żądanie
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": "pl",
  "settings": {
    "size": "3x3",
    "difficulty_level": "normal"
  }
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/sudoku/embed?p=-Nq8sample_activity_key",
  "message": "Sudoku created successfully"
}

Opadająca fraza

api_e_fallen_phrase

#
POST /api/public/v1/fallen-phrase Nie przyjmuje items
Treść

api_c_fallen_phrase

W razie braku używa nazwy “Fallen Phrase API”

Odczytywane ustawienia
PoleTypDo czego służy
sentence
wymagane
string
stringFraza do ukrycia: cytat, przysłowie, kluczowe zdanie. Najwyżej 120 liter i cyfr.
columns
opcjonalne w settings
number
numberJak szeroka jest plansza, od 8 do 18. Węższa układa więcej liter w każdej kolumnie i jest trudniejsza.
Domyślnie: 14
helpers
opcjonalne w settings
string
stringKtóre litery zostają w siatce jako punkt wejścia: żadne, najczęstsze, samogłoski albo te, które wypiszesz samodzielnie.
Jedna z wartości nonemost_commonvowelscustom
Domyślnie: "none"
extra_letters
opcjonalne w settings
string
stringLitery podarowane graczom, gdy helpers ma wartość "custom".
Przykładowe żądanie
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": "pl",
  "sentence": "Don't count your chickens before they hatch.",
  "settings": {
    "columns": 12,
    "helpers": "custom",
    "extra_letters": "ky"
  }
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/fallen-phrase/embed?p=-Nq8sample_activity_key",
  "message": "Fallen phrase created successfully"
}

Tabliczka mnożenia

api_e_times_tables

#
POST /api/public/v1/times-tables Nie przyjmuje items
Treść

api_c_times_tables

W razie braku używa nazwy “Times Tables API”

Odczytywane ustawienia
PoleTypDo czego służy
tables
opcjonalne w settings
number[]
number[]Tabliczki do ćwiczenia. Pominięte: od 1 do 10; 11 albo 12 powiększa siatkę do 12 na 12.
Jedna z wartości 123456789101112
order
opcjonalne w settings
string
stringCzy wiersze i kolumny idą po kolei, czy w przetasowanej kolejności.
Jedna z wartości ascendingshuffled
Domyślnie: "ascending"
picture
opcjonalne w settings
string
stringObraz, który malują poprawne odpowiedzi.
Jedna z wartości sailboatheartrockettreecatfishflowerhouse
Domyślnie: "sailboat"
players_choose_tables
opcjonalne w settings
boolean
booleanPozwala każdemu graczowi wybrać, które z tabliczek ćwiczy.
Domyślnie: false
fill_same_sums
opcjonalne w settings
boolean
booleanJedna poprawna odpowiedź wypełnia każdą kratkę z tym samym działaniem.
Domyślnie: true
Przykładowe żądanie
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": "pl",
  "settings": {
    "tables": [
      7,
      3,
      4
    ],
    "order": "shuffled",
    "seed": "k3x9q2ab",
    "picture": "rocket",
    "players_choose_tables": true,
    "fill_same_sums": false
  }
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/times-tables/embed?p=-Nq8sample_activity_key",
  "message": "Times tables created successfully"
}

Tekst z lukami

api_e_fill_in_the_gap

#
POST /api/public/v1/fill-in-the-gap Od 1 do 50 elementów w items
Treść

api_c_fill_in_the_gap

W razie braku używa nazwy “Fill in the gap API”

Warto wiedzieć
  • Zapisz całe zdanie i otocz gwiazdkami każde słowo do pominięcia: "Water boils at *100* degrees." Kilka słów w jednej parze gwiazdek to jedna luka. Wpis może też nieść polecenie wyświetlane nad zdaniem.
Przykładowe żądanie
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": "pl",
  "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."
    }
  ]
}'
Sukces
{
  "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"
}

Rozbiór zdania

Zdania, w których gracze oznaczają słowa etykietami: części mowy, części zdania albo własne etykiety.

#
POST /api/public/v1/deconstruct Od 1 do 50 elementów w items
Treść

Tablica zdań. Każde słowo do oznaczenia zapisujesz jako [word](label).

W razie braku używa nazwy “Sentence analysis API”

Warto wiedzieć
  • Zapisz zdanie jako "The [dog](noun) [barks](verb)." Słowa bez znacznika są pokazywane, ale o nie nie pytamy. Etykiety noun, verb, adjective i subject są pokazywane każdemu graczowi w jego własnym języku.
Odczytywane ustawienia
PoleTypDo czego służy
categories
opcjonalne w settings
string[]
string[]Etykiety, spośród których gracze wybierają, po kolei. Pominięte: etykiety użyte w zdaniach. Wyślij je, aby dodać etykietę, której nie niesie żadne słowo, albo ustalić kolejność.
Przykładowe żądanie
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": "pl",
  "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"
    ]
  }
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/deconstruct/embed?p=-Nq8sample_activity_key",
  "message": "Sentence analysis created successfully"
}

Łamigłówka logiczna

api_e_logic_puzzle

#
POST /api/public/v1/logic-puzzle Co najmniej 3 elementów w items
Treść

api_c_logic_puzzle

W razie braku używa nazwy “Logic Puzzle API”

Warto wiedzieć
  • Każda kategoria potrzebuje tej samej liczby elementów, od 3 do 6, wszystkich różnych. Jedną kategorię można oznaczyć jako ordered (ceny, godziny, wiek) z opcjonalnym unit, co pozwala generatorowi pisać wskazówki o tym, co jest większe, mniejsze i o ile.
Odczytywane ustawienia
PoleTypDo czego służy
story
opcjonalne w settings
string
stringHistoria w tle, pokazywana nad wskazówkami.
difficulty
opcjonalne w settings
string
stringZ jakich rodzajów wskazówek może korzystać generator.
Jedna z wartości easymediumhard
Domyślnie: "easy"
hints
opcjonalne w settings
boolean
booleanDodaje przycisk, który pokazuje następny krok.
Domyślnie: true
auto_cross
opcjonalne w settings
boolean
booleanZaznaczenie dopasowania wykreśla resztę jego wiersza i kolumny.
Domyślnie: true
clue_mode
opcjonalne w settings
string
stringKto pisze wskazówki widoczne dla graczy: generowane z tabeli, twoje własne zdania w free_clues albo żadne.
Jedna z wartości generatedfreenone
Domyślnie: "generated"
free_clues
opcjonalne w settings
string[]
string[]Twoje własne zdania ze wskazówkami, pokazywane tak, jak je napiszesz, przy clue_mode "free". Nic ich nie sprawdza.
Przykładowe żądanie
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": "pl",
  "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"
  }
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/logic-puzzle/embed?p=-Nq8sample_activity_key",
  "message": "Logic puzzle created successfully"
}

Poszukiwanie skarbów

api_e_scavenger_hunt

#
POST /api/public/v1/scavenger-hunt Od 1 do 50 elementów w items
Treść

api_c_scavenger_hunt

W razie braku używa nazwy “Scavenger Hunt API”

Warto wiedzieć
  • Krok to obiekt z title, description, code i opcjonalnie accepted_codes (inne pisownie, które się liczą), url i link_text. Kod jest sprawdzany bez względu na wielkość liter i spacje. Mapę z pinezkami można dodać tylko w edytorze.
Przykładowe żądanie
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": "pl",
  "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"
      ]
    }
  ]
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/scavenger-hunt/embed?p=-Nq8sample_activity_key",
  "message": "Scavenger hunt created successfully"
}

Rozumowanie przestrzenne

api_e_spatial_reasoning

#
POST /api/public/v1/spatial-reasoning Od 1 do 50 elementów w items
Treść

api_c_spatial_reasoning

W razie braku używa nazwy “Spatial Reasoning API”

Warto wiedzieć
  • Obiekty i cele to square, triangle, circle, hexagon, pentagon, star, diamond albo heart. Relacje to inside, outside, behind, in_front_of, right_of, left_of, above, below, same_color_as, different_color_from, larger_than i smaller_than. Reguła, której nie da się nigdy spełnić, kończy się odpowiedzią 400.
Odczytywane ustawienia
PoleTypDo czego służy
clue_mode
opcjonalne w settings
string
stringReguły pokazywane jako obrazy albo jako zdania.
Jedna z wartości visualtext
Domyślnie: "visual"
unique_object_picks
opcjonalne w settings
boolean
booleanKażdy kształt można umieścić tylko raz.
Domyślnie: false
hide_color_picker
opcjonalne w settings
boolean
booleanGracze nie mogą zmieniać kolorów kształtów.
Domyślnie: false
Przykładowe żądanie
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": "pl",
  "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
  }
}'
Sukces
{
  "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

Zdania zapisane obrazkami: gracze czytają obrazki, a zmiany liter zamieniają je z powrotem w słowa.

#
POST /api/public/v1/rebus Od 1 do 30 elementów w items
Treść

Tablica zdań. Każde wymienia słowa narysowane jako obrazki; każde inne słowo zostaje swoimi literami.

W razie braku używa nazwy “Rebus API”

Warto wiedzieć
  • Słowo jest rysowane z części, które razem je literują. Część ma litery, które reprezentuje (text), emoji i shows: słowo opisujące to, co pokazuje obrazek ("broom" dla obrazka oznaczającego "room"). Puzzel sam wylicza zmiany liter. Część może być zamiast tego symbolem, takim jak 4 dla "for".
Odczytywane ustawienia
PoleTypDo czego służy
rebus_commas
opcjonalne w settings
boolean
booleanRysuje odciętą pierwszą albo ostatnią literę jako przecinek obok obrazka.
Domyślnie: false
Przykładowe żądanie
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": "pl",
  "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
  }
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/rebus/embed?p=-Nq8sample_activity_key",
  "message": "Rebus created successfully"
}
Obrazy

Puzzle

Tnie obraz na elementy, które trzeba z powrotem złożyć.

#
POST /api/public/v1/jigsaw Nie przyjmuje items
Treść

Jeden adres URL obrazu, w polu image. Ten endpoint nie przyjmuje items.

W razie braku używa nazwy “Jigsaw Game API”

Warto wiedzieć
  • API zawsze tworzy puzzle 4 na 4. Liczba elementów, nieregularne kształty i proste krawędzie to ustawienia edytora — wysyłanie tutaj rows albo columns nic nie daje.
  • Adres URL jest zapisywany dokładnie tak, jak go wyślesz, a plik nigdy nie jest kopiowany, więc musi pozostać publicznie dostępny tak długo, jak długo gra się w tę aktywność.
Odczytywane ustawienia
PoleTypDo czego służy
image
wymagane
string
stringBezwzględny adres URL obrazu do pocięcia. Wysyłany na najwyższym poziomie, nie w settings.
Przykładowe żądanie
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": "pl",
  "image": "https://example.com/orchard.jpg"
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/jigsaw/embed?p=-Nq8sample_activity_key",
  "message": "Jigsaw game created successfully"
}

Przesuwanka

Rozsypuje obraz na kafelki, które wsuwa się na miejsce.

#
POST /api/public/v1/slidingpuzzle Nie przyjmuje items
Treść

Jeden adres URL obrazu, w settings. Ten endpoint nie przyjmuje items.

W razie braku używa nazwy “Sliding Puzzle API”

Warto wiedzieć
  • W odróżnieniu od puzzli, ten endpoint czyta obraz z settings.image. Pole image na najwyższym poziomie jest ignorowane, a wywołanie odpowiada kodem 400.
  • Adres URL jest zapisywany dokładnie tak, jak go wyślesz, a plik nigdy nie jest kopiowany, więc musi pozostać publicznie dostępny tak długo, jak długo gra się w tę aktywność.
Odczytywane ustawienia
PoleTypDo czego służy
image
wymagane w settings
string
stringBezwzględny adres URL obrazu do wymieszania. W odróżnieniu od puzzli, ten trafia do settings.
Przykładowe żądanie
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": "pl",
  "settings": {
    "image": "https://example.com/orchard.jpg"
  }
}'
Sukces
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/slidingpuzzle/embed?p=-Nq8sample_activity_key",
  "message": "Sliding puzzle created successfully"
}

Coś nie działa jak trzeba?

Wyślij swoje żądanie i błąd, który wrócił, a dostaniesz konkretną odpowiedź — od osoby, która napisała ten endpoint.

Napisz do pomocy