Satu POST per jenis aktivitas. Kirim kontenmu sebagai JSON, lalu kamu mendapat satu aktivitas di akun Puzzel.org milikmu beserta URL yang bisa kamu berikan ke pemain atau kamu sematkan di iframe.
URL dasar
https://puzzel.org/api/public/v1
Autentikasi
Kunci + email di body
Endpoint
38 jenis aktivitas
Kuota
10 aktivitas per hari
Permintaan pertamamu
Tidak ada yang perlu dipasang dan tidak ada handshake: kirim body JSON berisi kuncimu, emailmu, dan kontenmu. Responsnya membawa kunci aktivitas baru itu dan URL tempat aktivitas itu dimainkan.
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": "id",
"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"
}
]
}'
Setiap contoh di halaman ini adalah permintaan lengkap yang bisa langsung dijalankan. Ganti dengan kunci dan kontenmu sendiri, dan contoh itu langsung berfungsi.
Autentikasi
Tidak ada header dan tidak ada bearer token. Kedua kredensial dikirim di body JSON setiap permintaan, dan kunci hanya diterima untuk akun yang memiliki email tersebut.
Kolom
Tipe
Fungsinya
account_api_key
wajib
string
string
Kunci API akunmu. Dikirim di body, bukan di header.
email
wajib
string
string
Alamat email yang kamu pakai untuk masuk ke akun Puzzel.org. Kunci hanya berlaku bersama alamat itu.
Kuncimu ada di bagian akun pada dasbormu, di balik tombol Tampilkan.
Perlakukan kunci itu seperti kata sandi. Kunci itu membuat dan menimpa aktivitas di akunmu, jadi simpan di sisi server dan jauhkan dari apa pun yang bisa dibaca peramban.
Body permintaan
Setiap endpoint menerima lima kolom yang sama. Yang berbeda adalah kolom konten di bawahnya: sebagian besar menerima array items, beberapa menerima satu sentence atau satu image, dan Sudoku tidak menerima apa pun.
Kolom
Tipe
Fungsinya
account_api_key
wajib
string
string
Kunci API akunmu. Dikirim di body, bukan di header.
email
wajib
string
string
Alamat email yang kamu pakai untuk masuk ke akun Puzzel.org. Kunci hanya berlaku bersama alamat itu.
title
opsional
string
string
Nama yang didapat aktivitas di dasbormu. Kosongkan dan endpoint memakai nama cadangannya sendiri.
language
opsional
string
string
Hanya menentukan lokal di URL yang kamu terima — kolom ini tidak menerjemahkan apa pun yang kamu kirim. Pencarian kata juga membacanya untuk mengganti huruf pengisinya menjadi huruf Arab bila nilainya "ar".
Bawaan: "en"
activity_key
opsional
string
string
Kosongkan untuk membuat aktivitas baru. Kirim kunci aktivitas yang sudah kamu miliki, dan aktivitas itulah yang dibangun ulang.
settings adalah objek berisi opsi per endpoint. Opsi mana yang dibaca sebuah endpoint dicantumkan bersamanya di bawah; apa pun lain yang kamu taruh di sana diabaikan.
Apa yang dikembalikan
Panggilan yang berhasil menjawab 200 dengan kunci aktivitas baru itu dan URL tempat aktivitas itu dimainkan. Selain itu, jawabannya berisi success bernilai false dan satu string error.
{
"success": false,
"error": "Invalid Email or API Key"
}
url yang kamu terima adalah tampilan sematan. Ganti embed dengan play untuk membukanya satu halaman penuh, atau dengan build untuk membukanya di editor — kunci setelah p= tetap sama.
Membuat vs. memperbarui
Kirim activity_key dan aktivitas di baliknya dibangun ulang di tempat: kontennya diganti, nama dan cap versinya disegarkan, dan kuncinya sendiri tetap sama — jadi tautan dan sematan yang sudah kamu bagikan tetap berfungsi. Hasil, penempatan folder, dan setiap pengaturan yang tidak ditulis sendiri oleh endpoint dibiarkan apa adanya.
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 diterapkan pada setiap pembaruan, termasuk nilai bawaannya — kosongkan dan aktivitas itu akan diganti namanya menjadi nama cadangan endpoint tersebut.
Blok pengaturan yang ditulis sendiri oleh sebuah endpoint ditulis ulang dari nol, jadi pembaruan juga mengembalikan blok itu ke nilai yang kamu kirim, atau ke nilai bawaan endpoint.
Kamu hanya bisa memperbarui aktivitas yang dimiliki akunmu sendiri. Kunci milik orang lain dijawab 403.
Pembaruan berbiaya sama dengan pembuatan: satu panggilan dari kuota hari ini.
Batas permintaan
10
10 aktivitas per akun per hari
Setiap panggilan yang berhasil ikut dihitung, baik pembuatan maupun pembaruan. Lewati batasnya dan permintaan berikutnya dijawab 429 sampai penghitungnya dinolkan.
Penghitung dikosongkan sekali sehari oleh tugas terjadwal, bukan pada jendela 24 jam berjalan.
Kesalahan
Kesalahan selalu datang sebagai JSON dengan dua kolom yang sama, tidak pernah sebagai halaman HTML. String error ditulis untuk dibaca manusia — string itu menyebut kolom atau batas yang gagal.
Status
Artinya
400
Bad Request
Ada isi body yang hilang, salah bentuk, atau di luar jangkauan. Pesannya menyebut kolom yang bermasalah.
401
Unauthorized
Email tidak dikenal, atau kunci bukan milik akun itu.
403
Forbidden
activity_key yang kamu kirim milik akun lain.
429
Too Many Requests
Kuota hari ini sudah habis. Kuota dikosongkan sekali sehari.
500
Server Error
Generator tidak bisa membangun teka-teki dari yang kamu kirim — biasanya karena katanya terlalu sedikit, atau kata yang tidak bisa disusun bersama.
Endpoint
Satu path per jenis aktivitas, semuanya POST, semuanya di bawah URL dasar yang sama. Masing-masing mencantumkan konten yang dibutuhkan, pengaturan yang dibaca, dan satu permintaan yang bisa kamu jalankan.
Kata & huruf
B
I
S
U
A
M
A
N
I
Teka-teki silang
Menautkan jawabanmu menjadi satu kisi dan menomori deskripsinya untukmu.
Array kata. Setiap entri memasangkan jawaban dengan deskripsi yang menunjuk ke jawaban itu.
Memakai nama cadangan “Crossword API”
Perlu diketahui
Jawaban yang lebih pendek dari dua karakter dibuang sebelum kisi dibangun, dan minimal dua jawaban harus lolos dari penyaringan itu.
Jawaban diubah menjadi huruf kapital dan generator mendapat dua puluh percobaan untuk memuatnya. Kalau satu kata pun tidak bisa ditempatkan, panggilan dijawab 500.
Pengaturan yang dibaca
Kolom
Tipe
Fungsinya
hidden_solution
opsionaldi settings
string
string
Kata bonus opsional. Huruf-hurufnya ditandai di kotak-kotak kisi yang sudah jadi, untuk dikumpulkan pemain setelah teka-teki silang terpecahkan, jadi setiap hurufnya harus muncul di jawaban.
Contoh permintaan
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": "id",
"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"
}
]
}'
Array kata. Teks deskripsi menjadi bank kata yang dipakai pemain.
Memakai nama cadangan “Wordseeker API”
Perlu diketahui
Jawaban di bawah dua karakter dibuang, dan setiap jawaban diubah menjadi huruf kapital sebelum masuk ke kisi.
Kisi diisi dengan huruf Latin kecuali language bernilai "ar", yang mengganti huruf pengisinya menjadi huruf Arab.
Pengaturan yang dibaca
Kolom
Tipe
Fungsinya
hidden_solution
opsionaldi settings
string
string
Huruf yang tersisa mengeja kata ini. Mengisinya juga memberi tahu generator untuk memuat solusinya lebih dulu, alih-alih menjejalkan sebanyak mungkin kata.
directions
opsionaldi settings
string[]
string[]
Ke arah mana saja sebuah kata boleh membentang. Kosongkan dan kata hanya membentang ke timur, tenggara, dan selatan.
Salah satu dariwesteastnorthsouthnorthwestnortheastsouthwestsoutheast
Bawaan: ["east", "southeast", "south"]
template
opsionaldi settings
string
string
Memotong kisi menjadi sebuah bentuk alih-alih membiarkannya persegi.
Salah satu darisquarecirclecrossdiamondpyramidsmileystarcross_plus
Contoh permintaan
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": "id",
"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"
}
}'
POST/api/public/v1/typing-practice1 hingga 50 di items
Konten
api_c_typing_practice
Memakai nama cadangan “Typing Practice API”
Contoh permintaan
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": "id",
"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"
}
]
}'
Berhasil
{
"success": true,
"id": "-Nq8sample_activity_key",
"url": "https://puzzel.org/en/typing-practice/embed?p=-Nq8sample_activity_key",
"message": "Typing Practice created successfully"
}
Array kata tema. Bersama spangram, huruf-hurufnya harus memenuhi papan dengan tepat.
Memakai nama cadangan “Strands API”
Perlu diketahui
Huruf dari semua kata dan spangram bersama-sama harus berjumlah tepat 30, 35, 36, 40, 42, 45, 48, 49, 50, 54, 56, 60, 63, 64, 70, 72 atau 80. Jumlah lain dijawab 400 beserta keterangan berapa huruf yang harus ditambah atau dikurangi.
Pengaturan yang dibaca
Kolom
Tipe
Fungsinya
theme
opsionaldi settings
string
string
Teka-teki yang ditampilkan di atas kisi. Kalau dikosongkan, pemain melihat judulnya.
spangram
opsionaldi settings
string
string
Kata atau frasa yang menyebutkan tema dan melintasi papan dari satu tepi ke tepi lainnya.
POST/api/public/v1/name-them-all1 hingga 250 di items
Konten
api_c_name_them_all
Memakai nama cadangan “Name Them All API”
Perlu diketahui
Entri adalah objek dengan answer, dan opsional aliases (ejaan lain yang dihitung benar), description (petunjuknya) serta group. Huruf kapital, aksen, dan tanda baca diabaikan saat sebuah nama diperiksa.
Pengaturan yang dibaca
Kolom
Tipe
Fungsinya
list_match_mode
opsionaldi settings
string
string
Apakah sebuah nama dihitung begitu diketik, atau hanya setelah menekan tombol Enter.
Salah satu dariwhile_typingon_enter
Bawaan: "while_typing"
list_slot_hint
opsionaldi settings
string
string
Apa yang dibocorkan sebuah slot kosong: tidak ada, panjang nama, huruf pertamanya, atau petunjuk yang kamu tulis.
Salah satu darinonelengthfirst_letterhint
Bawaan: "none"
list_arrange
opsionaldi settings
string
string
Satu kolom per kelompok, atau satu daftar.
Salah satu darigroupsone_list
Bawaan: "groups"
list_allow_give_up
opsionaldi settings
boolean
boolean
Menampilkan tombol menyerah yang mengakhiri putaran dan menunjukkan apa yang terlewat.
{
"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"
}
Array pasangan. Setiap pasangan berisi dua kartu yang saling melengkapi.
Memakai nama cadangan “Memory Game API”
Perlu diketahui
Kartu adalah objek dengan type dan value. Pakai "text" untuk kata, atau "image", "audio", "youtube" atau "link" dengan URL di value, dan tambahkan alt untuk deskripsinya.
POST/api/public/v1/matching-pairs2 hingga 30 di items
Konten
api_c_matching_pairs
Memakai nama cadangan “Matching Game API”
Perlu diketahui
Kartu adalah objek dengan type dan value. Pakai "text" untuk kata, atau "image", "audio", "youtube" atau "link" dengan URL di value, dan tambahkan alt untuk deskripsinya.
POST/api/public/v1/flash-cards1 hingga 150 di items
Konten
api_c_flash_cards
Memakai nama cadangan “Flash Cards API”
Perlu diketahui
Endpoint menyimpan sebanyak apa pun kartu yang kamu kirim, jadi kirim tepat dua per entri — depan, lalu belakang.
Kartu adalah objek dengan type dan value. Pakai "text" untuk kata, atau "image", "audio", "youtube" atau "link" dengan URL di value, dan tambahkan alt untuk deskripsinya.
POST/api/public/v1/categorizeMinimal 2 di items · maksimal 60 kartu secara keseluruhan
Konten
Array kategori, masing-masing dengan nama dan kartu yang termasuk di dalamnya.
Memakai nama cadangan “Categorize Game API”
Perlu diketahui
Kategori yang dikirim tanpa nama disimpan sebagai “Untitled Category”, jadi selalu kirim namanya.
Kartu adalah objek dengan type dan value. Pakai "text" untuk kata, atau "image", "audio", "youtube" atau "link" dengan URL di value, dan tambahkan alt untuk deskripsinya.
POST/api/public/v1/reorderMinimal 1 di items · maksimal 60 kartu secara keseluruhan
Konten
Array rangkaian. Masing-masing memuat kartunya dalam urutan yang benar.
Memakai nama cadangan “Reorder Game API”
Perlu diketahui
Urutan yang kamu kirim disimpan sebagai urutan yang benar — nomor satu lebih dulu.
Kartu adalah objek dengan type dan value. Pakai "text" untuk kata, atau "image", "audio", "youtube" atau "link" dengan URL di value, dan tambahkan alt untuk deskripsinya.
Array item tempat kartu-kartu diambil. Kirim jauh lebih banyak daripada jumlah kotak di satu kartu, supaya kartunya berbeda-beda.
Memakai nama cadangan “Bingo API”
Perlu diketahui
Item adalah objek dengan value, dan opsional type ("text", "image" atau "audio" dengan URL di value), description (petunjuk yang dibacakan pemandu dalam mode petunjuk) serta alt.
Pengaturan yang dibaca
Kolom
Tipe
Fungsinya
mode
opsionaldi settings
string
string
Apa yang mengisi kotak: items milikmu, items milikmu yang dipanggil lewat petunjuknya, atau angka biasa (yang tidak butuh items).
Salah satu dariitemscluesnumbers
Bawaan: "items"
rows
opsionaldi settings
number
number
Jumlah baris di setiap kartu, 2 sampai 5.
Bawaan: 3
columns
opsionaldi settings
number
number
Jumlah kolom di setiap kartu, 2 sampai 5.
Bawaan: 3
highest_number
opsionaldi settings
number
number
Dalam mode angka, kartu diisi dari 1 sampai angka ini, paling besar 100. Fitur paket: tanpa paket nilainya tetap 50.
Bawaan: 50
Contoh permintaan
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": "id",
"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
}
}'
{
"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"
}
Array tombol. Tombol yang termasuk dalam kode membawa tempatnya di dalam kode itu.
Memakai nama cadangan “Keypad API”
Perlu diketahui
Tombol adalah objek dengan value, dan opsional type ("text", "image" atau "audio" dengan URL di value), alt, serta code_position: tempatnya di dalam kode, 1 untuk yang pertama. Sebuah tombol hanya bisa muncul sekali di dalam kode, dan setidaknya satu tombol harus ada di dalamnya.
Pengaturan yang dibaca
Kolom
Tipe
Fungsinya
instructions
opsionaldi settings
string
string
Pertanyaan atau teka-teki yang dijawab oleh kode, ditampilkan bersama papan tombolnya.
force_solution_in_correct_order
opsionaldi settings
boolean
boolean
Tombol harus ditekan secara berurutan. Kalau dimatikan, urutan apa pun dari tombol yang benar membuka gemboknya.
Bawaan: false
randomize_order
opsionaldi settings
boolean
boolean
Setiap pemain mendapat tombol dalam susunan yang diacak.
Array kuartet. Masing-masing punya nama dan tepat empat kartu.
Memakai nama cadangan “Quartets API”
Perlu diketahui
Kartu adalah sebuah nama, atau objek dengan name dan description (fakta yang ditampilkan di kartu itu). Tidak boleh ada nama kartu yang muncul dua kali dalam permainan: pemain meminta kartu berdasarkan namanya.
Pengaturan yang dibaca
Kolom
Tipe
Fungsinya
type
opsionaldi settings
string
string
Permainan biasa, atau permainan belajar di mana setiap kartu menampilkan sebuah fakta. Kalau dikosongkan, nilainya learn jika ada kartu yang punya description.
Salah satu darinormallearn
Contoh permintaan
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": "id",
"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"
}
}'
Berhasil
{
"success": true,
"id": "-Nq8sample_activity_key",
"url": "https://puzzel.org/en/quartets/embed?p=-Nq8sample_activity_key",
"message": "Quartets game created successfully"
}
Array pertanyaan. Pertanyaan pilihan ganda membawa pilihan jawabannya; pertanyaan terbuka membawa jawaban yang kamu terima.
Memakai nama cadangan “Quiz API”
Perlu diketahui
question_type bernilai "multiple_choice", yang opsi benarnya membawa isCorrect true; "true_false", sama seperti itu tetapi dengan tepat dua opsi, true di urutan pertama dan false di urutan kedua; atau "open_answer", yang memakai correct_answer. Kalau dikosongkan, nilainya dianggap pilihan ganda.
Endpoint Quiz meneruskan settings apa adanya sebagai blok pengaturan aktivitas, jadi tempat ini bukan untuk opsi lepasan — sesuaikan Quiz di editor setelahnya.
Contoh permintaan
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": "id",
"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."
}
]
}'
POST/api/public/v1/board-game1 hingga 100 di items
Konten
api_c_board_game
Memakai nama cadangan “Board Game API”
Perlu diketahui
question_type bernilai "multiple_choice", yang opsi benarnya membawa isCorrect true; "true_false", sama seperti itu tetapi dengan tepat dua opsi, true di urutan pertama dan false di urutan kedua; atau "open_answer", yang memakai correct_answer. Kalau dikosongkan, nilainya dianggap pilihan ganda.
Pengaturan yang dibaca
Kolom
Tipe
Fungsinya
number_of_tiles
opsionaldi settings
number
number
Berapa banyak petak yang dimiliki papan. Antara 10 dan 75.
Bawaan: 30
game_mode
opsionaldi settings
string
string
Apakah pemain berlomba ke garis akhir atau mengumpulkan benda di sepanjang jalan.
Salah satu darirace_to_finishcollect_items
Bawaan: "race_to_finish"
Contoh permintaan
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": "id",
"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"
}
}'
Berhasil
{
"success": true,
"id": "-Nq8sample_activity_key",
"url": "https://puzzel.org/en/board-game/embed?p=-Nq8sample_activity_key",
"message": "Board Game created successfully"
}
Array pertanyaan pilihan ganda atau benar-salah, persis bentuk yang diterima endpoint Quiz. Pertanyaan terbuka ditolak: sebuah pintu butuh jawaban yang tertulis di atasnya.
Memakai nama cadangan “Maze API”
Pengaturan yang dibaca
Kolom
Tipe
Fungsinya
maze_width
opsionaldi settings
string
string
Bagaimana ruang-ruangnya ditata: satu kolom, persegi, atau lebih lebar.
Salah satu darinarrownormalwide
Bawaan: "normal"
maze_corridors
opsionaldi settings
string
string
Seberapa banyak labirin yang terbentang di antara dua pertanyaan.
Salah satu darishortnormallong
Bawaan: "normal"
maze_fog
opsionaldi settings
string
string
Tampilkan seluruh labirin, atau hanya yang pernah didekati pemain.
Salah satu darioffnear
Bawaan: "off"
maze_wrong_door_pause
opsionaldi settings
string
string
Berapa lama pintu tetap tertutup setelah pemain memilih pintu yang salah.
Salah satu darinoneshortlong
Bawaan: "short"
maze_walk_there
opsionaldi settings
boolean
boolean
Menampilkan tombol yang membawa bidak berjalan ke ruang berikutnya.
Bawaan: false
maze_seed
opsionaldi settings
string
string
Seed yang menjadi dasar pembuatan labirin. Seed dan pertanyaan yang sama menghasilkan labirin yang sama; kalau dikosongkan, labirin baru dibuat.
Contoh permintaan
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": "id",
"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"
}
}'
Array kategori, dari kiri ke kanan. Masing-masing punya nama dan deskripsinya dari baris teratas ke bawah.
Memakai nama cadangan “Jeopardy API”
Perlu diketahui
Deskripsi adalah pertanyaan sebagaimana diterima endpoint Quiz, open_answer kecuali ditulis lain, dengan correct_answer dan opsional aliases. Deskripsi juga boleh membawa value (nilainya sendiri) dan daily_double. null membiarkan sebuah kotak kosong.
Pengaturan yang dibaca
Kolom
Tipe
Fungsinya
jeopardy_buzzer_mode
opsionaldi settings
string
string
Siapa bermain bagaimana: pemandu menjalankannya dari konsol, pemain menekan bel dari ponsel, atau setiap pemain mengerjakan papan sendirian.
Salah satu darihostphonessolo
Bawaan: "host"
jeopardy_contestants
opsionaldi settings
string
string
Apakah konsol menyebut tim atau pemain.
Salah satu dariteamsplayers
Bawaan: "teams"
jeopardy_value_step
opsionaldi settings
number
number
Nilai sebuah baris: sebuah deskripsi bernilai angka ini dikali nomor barisnya. Dari 50 sampai 500, dengan kelipatan 50.
Bawaan: 100
jeopardy_answer_time
opsionaldi settings
number
number
Detik untuk menjawab setelah sebuah deskripsi dibuka, paling lama 300. 0 berarti tanpa jam.
Bawaan: 20
jeopardy_wrong_answer_costs
opsionaldi settings
boolean
boolean
Jawaban yang salah mengurangi skor sebesar nilai deskripsinya.
Bawaan: false
jeopardy_reveal_on_timeout
opsionaldi settings
boolean
boolean
Papan sendiri menampilkan jawabannya saat waktu habis.
Bawaan: false
jeopardy_require_question_form
opsionaldi settings
boolean
boolean
Mengingatkan pemain untuk menjawab dalam bentuk pertanyaan.
Bawaan: false
Contoh permintaan
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": "id",
"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
}
}'
POST/api/public/v1/interactive-video1 hingga 50 di items
Konten
api_c_interactive_video
Memakai nama cadangan “Interactive Video API”
Perlu diketahui
Pop-up adalah objek dengan time (detik, atau "1:23"), kind ("question" kecuali tertulis "note", "think" atau "chapter") dan description. Pertanyaan adalah pertanyaan sebagaimana diterima endpoint Quiz, dan boleh membawa rewind_to: dari mana video diputar ulang setelah jawaban yang salah.
Pengaturan yang dibaca
Kolom
Tipe
Fungsinya
video_url
wajibdi settings
string
string
Videonya: halaman YouTube, Vimeo atau Bunny Stream, atau tautan langsung ke berkas mp4, webm atau mov.
video_duration
opsionaldi settings
number
number
Panjang video dalam detik. Kalau diisi, pop-up yang melewati akhir video ditolak.
Contoh permintaan
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": "id",
"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
}
}'
Berhasil
{
"success": true,
"id": "-Nq8sample_activity_key",
"url": "https://puzzel.org/en/interactive-video/embed?p=-Nq8sample_activity_key",
"message": "Interactive video created successfully"
}
POST/api/public/v1/calculationTidak menerima items
Konten
Satu kalimat, di kolom sentence. Endpoint ini tidak menerima items.
Memakai nama cadangan “Calculation Game API”
Perlu diketahui
Kalau batasannya terlalu ketat untuk menyandikan kalimat itu, panggilan dijawab 400 yang memintamu melonggarkannya, alih-alih menyimpan teka-teki setengah jadi.
Pengaturan yang dibaca
Kolom
Tipe
Fungsinya
sentence
wajib
string
string
Kalimat yang tersingkap saat pemain menyelesaikan soal hitungnya.
difficulty_level
opsionaldi settings
number
number
Jawaban tertinggi yang boleh dimiliki sebuah soal hitung.
Salah satu dari20501001000
Bawaan: "100"
operators
opsionaldi settings
string[]
string[]
Operasi mana saja yang boleh muncul. x adalah kali, : adalah bagi.
Salah satu dari+-x:
Bawaan: ["+", "-", "x", ":"]
max_operations
opsionaldi settings
number
number
Berapa banyak operasi yang boleh dirangkai dalam satu soal hitung.
Salah satu dari123
Bawaan: 1
number_difficulty
opsionaldi settings
number
number
Membatasi setiap angka di dalam satu soal hitung. Antara 5 sampai 1000.
Tidak ada. Seluruh teka-teki lahir dari dua pengaturannya.
Memakai nama cadangan “Sudoku API”
Perlu diketahui
Jangan kirim items dan jangan kirim sentence — size dan difficulty adalah seluruh masukannya.
Editor hanya menyediakan tingkat kesulitan untuk 2x3, 3x3, dan 3x4. API menerapkannya ke semua ukuran, termasuk 2x2 dan 4x4.
Pengaturan yang dibaca
Kolom
Tipe
Fungsinya
size
opsionaldi settings
string
string
Ukuran satu blok, ditulis sebagai baris kali kolom — 3x3 menghasilkan kisi 9x9 yang klasik. Endpoint hanya memeriksa bahwa nilainya terbaca sebagai dua angka, jadi gunakan saja ukuran yang disediakan editor.
Salah satu dari2x22x33x33x44x4
Bawaan: "3x3"
difficulty_level
opsionaldi settings
string
string
Berapa banyak angka yang ditinggalkan di papan sebagai titik awal.
POST/api/public/v1/fill-in-the-gap1 hingga 50 di items
Konten
api_c_fill_in_the_gap
Memakai nama cadangan “Fill in the gap API”
Perlu diketahui
Tulis kalimat lengkap dan beri tanda bintang di sekeliling setiap kata yang dikosongkan: "Water boils at *100* degrees." Beberapa kata di dalam satu pasang tanda bintang dihitung satu bagian rumpang. Sebuah entri juga boleh membawa instruksi yang ditampilkan di atas kalimat.
Contoh permintaan
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": "id",
"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."
}
]
}'
Berhasil
{
"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"
}
POST/api/public/v1/deconstruct1 hingga 50 di items
Konten
Array kalimat. Setiap kata yang harus diberi label ditulis sebagai [word](label).
Memakai nama cadangan “Sentence analysis API”
Perlu diketahui
Tulis kalimat sebagai "The [dog](noun) [barks](verb)." Kata tanpa tag ditampilkan tetapi tidak ditanyakan. Label noun, verb, adjective, dan subject ditampilkan kepada setiap pemain dalam bahasanya sendiri.
Pengaturan yang dibaca
Kolom
Tipe
Fungsinya
categories
opsionaldi settings
string[]
string[]
Label yang dipilih pemain, secara berurutan. Kalau dikosongkan, nilainya adalah label yang dipakai di kalimat-kalimat. Kirimkan untuk menambahkan label yang tidak dibawa kata mana pun, atau untuk mengatur urutannya.
Contoh permintaan
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": "id",
"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"
]
}
}'
Setiap kategori butuh jumlah item yang sama, 3 sampai 6, semuanya berbeda. Satu kategori boleh ditandai ordered (harga, waktu, usia) dengan unit opsional, yang memungkinkan generator menulis deskripsi tentang lebih banyak, lebih sedikit, dan berapa selisihnya.
Pengaturan yang dibaca
Kolom
Tipe
Fungsinya
story
opsionaldi settings
string
string
Cerita latar yang ditampilkan di atas deskripsi.
difficulty
opsionaldi settings
string
string
Jenis deskripsi apa saja yang boleh dipakai generator.
Salah satu darieasymediumhard
Bawaan: "easy"
hints
opsionaldi settings
boolean
boolean
Menampilkan tombol yang menunjukkan langkah berikutnya.
Bawaan: true
auto_cross
opsionaldi settings
boolean
boolean
Menandai satu pasangan mencoret sisa baris dan kolomnya.
Bawaan: true
clue_mode
opsionaldi settings
string
string
Siapa yang menulis deskripsi yang dilihat pemain: dibuat dari tabel, kalimatmu sendiri di free_clues, atau tidak ada.
Salah satu darigeneratedfreenone
Bawaan: "generated"
free_clues
opsionaldi settings
string[]
string[]
Kalimat deskripsimu sendiri, ditampilkan apa adanya, dengan clue_mode "free". Tidak ada yang memeriksanya.
Contoh permintaan
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": "id",
"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"
}
}'
POST/api/public/v1/scavenger-hunt1 hingga 50 di items
Konten
api_c_scavenger_hunt
Memakai nama cadangan “Scavenger Hunt API”
Perlu diketahui
Langkah adalah objek dengan title, description, code dan opsional accepted_codes (ejaan lain yang dihitung benar), url serta link_text. Kode diperiksa tanpa memperhatikan huruf kapital dan spasi. Peta dengan pin hanya bisa ditambahkan di editor.
Contoh permintaan
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": "id",
"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"
]
}
]
}'
POST/api/public/v1/spatial-reasoning1 hingga 50 di items
Konten
api_c_spatial_reasoning
Memakai nama cadangan “Spatial Reasoning API”
Perlu diketahui
Objek dan target adalah square, triangle, circle, hexagon, pentagon, star, diamond atau heart. Relasinya adalah inside, outside, behind, in_front_of, right_of, left_of, above, below, same_color_as, different_color_from, larger_than dan smaller_than. Aturan yang tidak mungkin dipenuhi dijawab 400.
Pengaturan yang dibaca
Kolom
Tipe
Fungsinya
clue_mode
opsionaldi settings
string
string
Aturan ditampilkan sebagai gambar atau sebagai kalimat.
Array kalimat. Masing-masing mendaftar kata yang digambar; setiap kata lainnya tetap berupa hurufnya.
Memakai nama cadangan “Rebus API”
Perlu diketahui
Sebuah kata digambar dari bagian-bagian yang bersama-sama mengejanya. Sebuah bagian punya huruf yang diwakilinya (text), sebuah emoji, dan shows: kata untuk apa yang ditunjukkan gambar ("broom" untuk gambar yang mewakili "room"). Puzzel menghitung sendiri perubahan hurufnya. Sebuah bagian juga boleh berupa simbol, seperti 4 untuk "for".
Pengaturan yang dibaca
Kolom
Tipe
Fungsinya
rebus_commas
opsionaldi settings
boolean
boolean
Menggambar huruf pertama atau terakhir yang dihilangkan sebagai koma di samping gambar.
Satu URL gambar, di kolom image. Endpoint ini tidak menerima items.
Memakai nama cadangan “Jigsaw Game API”
Perlu diketahui
API selalu membuat Puzzle 4 kali 4. Jumlah keping, keping tak beraturan, dan tepi rata adalah pengaturan editor — mengirim rows atau columns di sini tidak berpengaruh.
URL disimpan persis seperti yang kamu kirim dan berkasnya tidak pernah disalin, jadi URL itu harus tetap bisa diakses publik selama aktivitasnya masih dimainkan.
Pengaturan yang dibaca
Kolom
Tipe
Fungsinya
image
wajib
string
string
URL absolut gambar yang akan dipotong. Dikirim di tingkat teratas, bukan di dalam settings.
POST/api/public/v1/slidingpuzzleTidak menerima items
Konten
Satu URL gambar, di dalam settings. Endpoint ini tidak menerima items.
Memakai nama cadangan “Sliding Puzzle API”
Perlu diketahui
Berbeda dengan Puzzle, endpoint ini membaca gambarnya dari settings.image. Kolom image di tingkat teratas diabaikan dan panggilan dijawab 400.
URL disimpan persis seperti yang kamu kirim dan berkasnya tidak pernah disalin, jadi URL itu harus tetap bisa diakses publik selama aktivitasnya masih dimainkan.
Pengaturan yang dibaca
Kolom
Tipe
Fungsinya
image
wajibdi settings
string
string
URL absolut gambar yang akan diacak. Berbeda dengan milik Puzzle, yang ini berada di dalam settings.