Lompat ke konten
Kamu sedang melihat pratinjau Puzzel.org yang baru Kembali ke situs saat ini
API pengembang

Buat aktivitas dari sistemmu sendiri

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

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.

KolomTipeFungsinya
account_api_key
wajib
string
stringKunci API akunmu. Dikirim di body, bukan di header.
email
wajib
string
stringAlamat 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.

Masuk

Kunci API diberikan saat langganan dimulai, jadi akun gratis belum punya kunci.

Lihat paket

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.

KolomTipeFungsinya
account_api_key
wajib
string
stringKunci API akunmu. Dikirim di body, bukan di header.
email
wajib
string
stringAlamat email yang kamu pakai untuk masuk ke akun Puzzel.org. Kunci hanya berlaku bersama alamat itu.
title
opsional
string
stringNama yang didapat aktivitas di dasbormu. Kosongkan dan endpoint memakai nama cadangannya sendiri.
language
opsional
string
stringHanya 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
stringKosongkan 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.

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

StatusArtinya
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

Teka-teki silang

Menautkan jawabanmu menjadi satu kisi dan menomori deskripsinya untukmu.

#
POST /api/public/v1/crossword Minimal 2 di items
Konten

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

Pencarian kata

Menyembunyikan katamu di dalam kisi huruf, dengan arah dan bentuk yang kamu pilih.

#
POST /api/public/v1/wordseeker Minimal 2 di items
Konten

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
KolomTipeFungsinya
hidden_solution
opsional di settings
string
stringHuruf yang tersisa mengeja kata ini. Mengisinya juga memberi tahu generator untuk memuat solusinya lebih dulu, alih-alih menjejalkan sebanyak mungkin kata.
directions
opsional di settings
string[]
string[]Ke arah mana saja sebuah kata boleh membentang. Kosongkan dan kata hanya membentang ke timur, tenggara, dan selatan.
Salah satu dari westeastnorthsouthnorthwestnortheastsouthwestsoutheast
Bawaan: ["east", "southeast", "south"]
template
opsional di settings
string
stringMemotong kisi menjadi sebuah bentuk alih-alih membiarkannya persegi.
Salah satu dari squarecirclecrossdiamondpyramidsmileystarcross_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"
  }
}'
Berhasil
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/wordseeker/embed?p=-Nq8sample_activity_key",
  "message": "Wordseeker created successfully"
}

Akrostik

Menyusun jawabanmu bertumpuk sehingga satu kolom mengeja kata tersembunyi.

#
POST /api/public/v1/acrostic Minimal 1 di items
Konten

Array kata. Bersama-sama, semua kata itu harus menyediakan setiap huruf dari kata tersembunyi itu.

Memakai nama cadangan “Acrostic API”

Perlu diketahui
  • Kalau jawabannya tidak bisa menyediakan huruf yang dibutuhkan solusinya, panggilan dijawab 500 alih-alih menyimpan kisi setengah jadi.
  • Generator mengurutkan ulang jawabanmu agar kolomnya pas, jadi urutan yang kamu kirim bukan urutan yang dilihat pemain.
Pengaturan yang dibaca
KolomTipeFungsinya
hidden_solution
wajib di settings
string
stringKata yang dieja oleh kolom yang disorot. Endpoint ini tidak akan berjalan tanpanya.
Contoh permintaan
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": "id",
  "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"
  }
}'
Berhasil
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/acrostic/embed?p=-Nq8sample_activity_key",
  "message": "Acrostic created successfully"
}

Kata acak

api_e_word_scramble

#
POST /api/public/v1/word-scramble Minimal 1 di items
Konten

api_c_word_scramble

Memakai nama cadangan “Word Scramble API”

Perlu diketahui
  • Aktivitas yang dibuat lewat API selalu punya pengaturan acak-urutan yang menyala, jadi urutan yang kamu kirim bukan urutan yang didapat pemain.
Pengaturan yang dibaca
KolomTipeFungsinya
hidden_solution
opsional di settings
string
stringKata bonus opsional yang dimasukkan pemain setelah sisanya terpecahkan.
Contoh permintaan
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": "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"
  }
}'
Berhasil
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/word-scramble/embed?p=-Nq8sample_activity_key",
  "message": "Word Scramble created successfully"
}

Permainan tebak huruf

Mengubah kata atau frasamu menjadi ronde tebak huruf.

#
POST /api/public/v1/hangman Minimal 1 di items
Konten

Array kata atau frasa pendek. Deskripsi adalah petunjuk yang dilihat pemain.

Memakai nama cadangan “Hangman API”

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

Wordle

Menjadikan setiap kata yang kamu kirim sebagai satu permainan tebak kata.

#
POST /api/public/v1/wordle Minimal 1 di items
Konten

Array kata. Pemain mendapat satu ronde per kata.

Memakai nama cadangan “Wordle API”

Perlu diketahui
  • Dibuat dengan pengaturan periksa-apakah-tebakan-kata-nyata dalam keadaan menyala. Matikan di editor kalau katamu berupa nama atau kata rekaan.
Contoh permintaan
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": "id",
  "items": [
    {
      "answer": "MELON",
      "description": "Sweet and green",
      "type": "text"
    },
    {
      "answer": "PEACH",
      "description": "Fuzzy and orange",
      "type": "text"
    }
  ]
}'
Berhasil
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/wordle/embed?p=-Nq8sample_activity_key",
  "message": "Wordle created successfully"
}

Latihan mengetik

api_e_typing_practice

#
POST /api/public/v1/typing-practice Minimal 1 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"
}

Roda keberuntungan

api_e_wheel_of_fortune

#
POST /api/public/v1/wheel-of-fortune Minimal 1 di items
Konten

api_c_wheel_of_fortune

Memakai nama cadangan “Wheel of Fortune API”

Perlu diketahui
  • Dibuat dengan “tampilkan hasil hanya di roda”, jadi hasilnya dibaca dari rodanya, bukan diumumkan di sampingnya.
Contoh permintaan
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": "id",
  "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"
    }
  ]
}'
Berhasil
{
  "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"
}
Kartu & pasangan

Memory

Kartu tertelungkup untuk dibalik dan dicocokkan berpasangan.

#
POST /api/public/v1/memory Minimal 2 di items
Konten

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.
Contoh permintaan
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": "id",
  "items": [
    {
      "cards": [
        {
          "type": "text",
          "value": "Apple"
        },
        {
          "type": "text",
          "value": "A red fruit"
        }
      ]
    },
    {
      "cards": [
        {
          "type": "text",
          "value": "Banana"
        },
        {
          "type": "text",
          "value": "A yellow fruit"
        }
      ]
    }
  ]
}'
Berhasil
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/memory/embed?p=-Nq8sample_activity_key",
  "message": "Memory game created successfully"
}

Permainan menjodohkan

api_e_matching_pairs

#
POST /api/public/v1/matching-pairs Minimal 2 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.
Contoh permintaan
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": "id",
  "items": [
    {
      "cards": [
        {
          "type": "text",
          "value": "Apple"
        },
        {
          "type": "text",
          "value": "A red fruit"
        }
      ]
    },
    {
      "cards": [
        {
          "type": "text",
          "value": "Banana"
        },
        {
          "type": "text",
          "value": "A yellow fruit"
        }
      ]
    }
  ]
}'
Berhasil
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/matching-pairs/embed?p=-Nq8sample_activity_key",
  "message": "Matching pairs game created successfully"
}

Kartu belajar

api_e_flash_cards

#
POST /api/public/v1/flash-cards Minimal 1 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.
Contoh permintaan
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": "id",
  "items": [
    {
      "cards": [
        {
          "type": "text",
          "value": "Apple"
        },
        {
          "type": "text",
          "value": "A red fruit"
        }
      ]
    },
    {
      "cards": [
        {
          "type": "text",
          "value": "Banana"
        },
        {
          "type": "text",
          "value": "A yellow fruit"
        }
      ]
    }
  ]
}'
Berhasil
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/flash-cards/embed?p=-Nq8sample_activity_key",
  "message": "Flash Cards created successfully"
}

Pengelompokan

Kartu untuk dipilah ke kelompok yang tepat.

#
POST /api/public/v1/categorize Minimal 2 di items
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.
Contoh permintaan
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": "id",
  "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"
        }
      ]
    }
  ]
}'
Berhasil
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/categorize/embed?p=-Nq8sample_activity_key",
  "message": "Categorize game created successfully"
}

Teka-teki urutan

Rangkaian yang harus disusun kembali oleh pemain.

#
POST /api/public/v1/reorder Minimal 1 di items
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.
Contoh permintaan
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": "id",
  "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"
        }
      ]
    }
  ]
}'
Berhasil
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/reorder/embed?p=-Nq8sample_activity_key",
  "message": "Reorder game created successfully"
}
Pertanyaan & jawaban

Quiz

Pertanyaan pilihan ganda dan pertanyaan terbuka, dinilai seiring pemain menjawab.

#
POST /api/public/v1/quiz Minimal 1 di items
Konten

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

Permainan papan

api_e_board_game

#
POST /api/public/v1/board-game Minimal 1 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, atau "open_answer", yang memakai correct_answer. Kalau dikosongkan, nilainya dianggap pilihan ganda.
Pengaturan yang dibaca
KolomTipeFungsinya
number_of_tiles
opsional di settings
number
numberBerapa banyak petak yang dimiliki papan. Antara 10 dan 75.
Bawaan: 30
game_mode
opsional di settings
string
stringApakah pemain berlomba ke garis akhir atau mengumpulkan benda di sepanjang jalan.
Salah satu dari race_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"
}
Kalimat & angka

Kriptogram

Mengubah kalimat menjadi sandi untuk dipecahkan, satu karakter demi satu karakter.

#
POST /api/public/v1/cryptogram Tidak menerima items
Konten

Satu kalimat, di kolom sentence. Endpoint ini tidak menerima items.

Memakai nama cadangan “Cryptogram API”

Perlu diketahui
  • Apa pun yang kamu kirim di items diabaikan — teka-tekinya dibangun hanya dari sentence.
Pengaturan yang dibaca
KolomTipeFungsinya
sentence
wajib
string
stringKalimat yang akan dienkripsi. Pemain memecahkannya karakter demi karakter.
helpers
opsional di settings
string
stringKarakter mana yang langsung dibagikan gratis sebagai jalan masuk: tidak ada, yang paling sering muncul, huruf vokal, atau yang kamu tentukan sendiri.
Salah satu dari nonemost_commonvowelscustom
Bawaan: "none"
character_list
opsional di settings
string
stringAbjad yang menjadi dasar sandinya. Kalau dibiarkan kosong, enkripsinya memilih sendiri.
extra_letters
opsional di settings
string
stringKarakter yang dibagikan ketika helpers bernilai "custom". Diabaikan untuk mode bantuan lainnya.
hide_unused_characters
opsional di settings
boolean
booleanMenghilangkan karakter yang tidak pernah dipakai kalimat itu dari kuncinya.
Bawaan: false
Contoh permintaan
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": "id",
  "sentence": "An apple a day keeps the doctor away",
  "settings": {
    "helpers": "vowels",
    "hide_unused_characters": false
  }
}'
Berhasil
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/cryptogram/embed?p=-Nq8sample_activity_key",
  "message": "Cryptogram created successfully"
}

Latihan berhitung

Menyembunyikan kalimat di balik soal hitung — pecahkan soalnya, hurufnya terungkap.

#
POST /api/public/v1/calculation Tidak 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
KolomTipeFungsinya
sentence
wajib
string
stringKalimat yang tersingkap saat pemain menyelesaikan soal hitungnya.
difficulty_level
opsional di settings
number
numberJawaban tertinggi yang boleh dimiliki sebuah soal hitung.
Salah satu dari 20501001000
Bawaan: "100"
operators
opsional di settings
string[]
string[]Operasi mana saja yang boleh muncul. x adalah kali, : adalah bagi.
Salah satu dari +-x:
Bawaan: ["+", "-", "x", ":"]
max_operations
opsional di settings
number
numberBerapa banyak operasi yang boleh dirangkai dalam satu soal hitung.
Salah satu dari 123
Bawaan: 1
number_difficulty
opsional di settings
number
numberMembatasi setiap angka di dalam satu soal hitung. Antara 5 sampai 1000.
Bawaan: 100
Contoh permintaan
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": "id",
  "sentence": "Fruit salad for everyone",
  "settings": {
    "difficulty_level": "100",
    "operators": [
      "+",
      "-",
      "x",
      ":"
    ],
    "max_operations": 1,
    "number_difficulty": 100
  }
}'
Berhasil
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/calculation/embed?p=-Nq8sample_activity_key",
  "message": "Calculation game created successfully"
}

Sudoku

Membuat kisi yang sudah terisi penuh, lalu mengeluarkan lagi sebagian angkanya.

#
POST /api/public/v1/sudoku Tidak menerima items
Konten

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
KolomTipeFungsinya
size
opsional di settings
string
stringUkuran 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 dari 2x22x33x33x44x4
Bawaan: "3x3"
difficulty_level
opsional di settings
string
stringBerapa banyak angka yang ditinggalkan di papan sebagai titik awal.
Salah satu dari easynormalhard
Bawaan: "normal"
Contoh permintaan
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": "id",
  "settings": {
    "size": "3x3",
    "difficulty_level": "normal"
  }
}'
Berhasil
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/sudoku/embed?p=-Nq8sample_activity_key",
  "message": "Sudoku created successfully"
}
Gambar

Puzzle

Memotong gambar menjadi kepingan untuk diseret kembali menjadi satu.

#
POST /api/public/v1/jigsaw Tidak menerima items
Konten

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
KolomTipeFungsinya
image
wajib
string
stringURL absolut gambar yang akan dipotong. Dikirim di tingkat teratas, bukan di dalam settings.
Contoh permintaan
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": "id",
  "image": "https://example.com/orchard.jpg"
}'
Berhasil
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/jigsaw/embed?p=-Nq8sample_activity_key",
  "message": "Jigsaw game created successfully"
}

Puzzle geser

Mengacak gambar menjadi keping yang digeser ke tempatnya.

#
POST /api/public/v1/slidingpuzzle Tidak 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
KolomTipeFungsinya
image
wajib di settings
string
stringURL absolut gambar yang akan diacak. Berbeda dengan milik Puzzle, yang ini berada di dalam settings.
Contoh permintaan
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": "id",
  "settings": {
    "image": "https://example.com/orchard.jpg"
  }
}'
Berhasil
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/slidingpuzzle/embed?p=-Nq8sample_activity_key",
  "message": "Sliding puzzle created successfully"
}

Ada yang tidak beres?

Kirim permintaan yang kamu coba dan error yang kamu terima, lalu kamu akan mendapat jawaban sungguhan, dari orang yang menulis endpoint itu.

Kirim email ke dukungan