Alur
- Siapkan paket soal lewat API Import Soal dan simpan
question_bank.id, atau pilih paket soal yang sudah ada denganGET /question-banks. - Buat ujian beserta tes dan sesinya dalam satu request
POST /exams. - Periksa
GET /exams/{exam}/readinesssampaireadybernilaitrue. - Daftarkan peserta dan buat link akses lewat Pendaftaran dan Link Ujian.
- Untuk tes dengan penilaian IRT, jalankan
POST /exams/{exam}/irt-calculationssetelah peserta selesai. Nilai dikirim lewat webhookexam_result.scoreddan tersedia di API Hasil Ujian.
Aturan
- Jenis ujian. Ujian yang dibuat lewat API tidak memakai pembayaran di CBT dan bukan ujian multi-level. Ujian multi-level atau ujian dengan pembayaran di CBT yang dibuat di panel tetap dapat dibaca, tetapi hanya dapat diubah atau dihapus melalui panel. Tes jawaban manual (esai/unggah berkas) dibuat di panel; lewat API hanya nama, instruksi, dan sesinya yang dapat diubah.
- Edisi (
edition):standard(Ujian Standard): maksimal 4 tes, tanpa CAT dan tanpa proctoring kamera, layar, atau dual monitor.professional(Ujian Professional): maksimal 30 tes, dengan semua fitur.- Kredit dipotong saat peserta mulai mengerjakan tes, bukan saat ujian dibuat. Ujian professional memakai kredit professional; ujian standard memakai kredit gratis lebih dulu, lalu kredit professional. Tanpa kredit, ujian tetap dapat dibuat, tetapi peserta tidak dapat memulai tes.
- Waktu dikirim dalam ISO 8601 dengan offset, misalnya
2026-11-10T08:00:00+07:00atau2026-11-10T01:00:00Z, dan dikembalikan dalam WIB (+07:00). Waktu tanpa offset, seperti2026-11-10 08:00:00, ditolak dengan422.end_atujian paling lambat satu tahun dari sekarang. - Sesi harus berada di dalam rentang waktu ujian dan berlangsung minimal sepanjang durasi tesnya. Paket soal sesi harus milik projek, sejenis dengan tesnya (CBT/CAT untuk tes CBT dan CAT, jawaban manual untuk tes jawaban manual), dan berisi minimal satu soal; untuk tes CAT, semua soal wajib memiliki tingkat kesulitan.
- Sesi otomatis (
is_auto_assign_session, defaulttrue): peserta yang didaftarkan mendapat sesi pertama (yang paling awal dibuat) dari setiap tes. Peserta yang terdaftar sebelum sebuah tes memiliki sesi otomatis mendapat sesi tersebut saat sesi dibuat. - Urutan tes mengikuti urutan pembuatannya. Jika
is_must_be_in_orderbernilaitrue, peserta harus menyelesaikan tes sesuai urutan itu. - Peserta melihat ujian selama berada di dalam rentang waktunya dan belum diarsipkan. Tes hanya dapat dimulai di dalam jadwal sesi yang memiliki paket soal.
Yang terkunci
Format error
Kesalahan isian dikembalikan dengan status422 dalam format error yang sama dengan endpoint lain. Kunci error menunjuk field-nya, termasuk field bersarang, misalnya exam_quizzes.0.sessions.1.end_at.
409 dan field code:
Pengaturan tes
Endpoint ujian
POST /exams — Membuat ujian beserta tes dan sesinya
POST /exams — Membuat ujian beserta tes dan sesinya
Parameter
Contoh request
Contoh response
Status201. Isinya sama dengan detail ujian, termasuk exam_quizzes dan sessions beserta ID-nya. Simpan ID ujian, tes, dan sesi untuk perubahan berikutnya.PATCH /exams/{exam} — Mengubah ujian
PATCH /exams/{exam} — Mengubah ujian
POST /exams tanpa exam_quizzes. Endpoint juga menerima metode PUT.- Rentang waktu baru harus tetap mencakup semua sesi; ubah sesinya lebih dulu jika perlu.
- Mengubah
editionmenjadistandardditolak jika ujian memiliki lebih dari 4 tes atau tes yang memakai fitur professional. - Mengubah
final_score_typemenghitung ulang nilai akhir peserta. - Mengaktifkan
is_auto_assign_sessionlangsung menempatkan peserta yang belum memiliki sesi ke sesi pertama setiap tes.
Contoh request
POST /exams.DELETE /exams/{exam} — Menghapus ujian
DELETE /exams/{exam} — Menghapus ujian
409 (attempt_started) jika sudah ada peserta yang mulai mengerjakan tes. Ujian multi-level dan ujian dengan pembayaran di CBT hanya dapat dihapus melalui panel.Endpoint tes
POST /exams/{exam}/quizzes — Menambah tes
POST /exams/{exam}/quizzes — Menambah tes
exam_quizzes pada POST /exams, termasuk sessions. Tes baru ditempatkan di urutan terakhir. Peserta yang sudah terdaftar langsung mendapat tes baru ini, dan mendapat sesinya jika sesi otomatis aktif.201; respons berisi tes beserta sesinya.PATCH /exams/{exam}/quizzes/{examQuiz} — Mengubah tes
PATCH /exams/{exam}/quizzes/{examQuiz} — Mengubah tes
name, exam_type, duration_minutes, score_type, description, dan pengaturan is_*. Durasi baru tidak boleh lebih panjang dari sesi tes yang ada. Pada tes jawaban manual, hanya name dan description yang dapat diubah; field lain ditolak dengan 422. Endpoint juga menerima metode PUT.DELETE /exams/{exam}/quizzes/{examQuiz} — Menghapus tes
DELETE /exams/{exam}/quizzes/{examQuiz} — Menghapus tes
409 (participants_registered) jika sudah ada peserta terdaftar pada ujian. Sesi tes ikut terhapus.Endpoint sesi
POST /exams/{exam}/quizzes/{examQuiz}/sessions — Menambah sesi
POST /exams/{exam}/quizzes/{examQuiz}/sessions — Menambah sesi
201:PATCH /exams/{exam}/sessions/{session} — Mengubah sesi
PATCH /exams/{exam}/sessions/{session} — Mengubah sesi
409 jika ada peserta yang sedang mengerjakan pada sesi ini, dan paket soal tidak dapat diganti setelah ada peserta yang mulai mengerjakan. Untuk mengganti revisi paket soal sebelum ujian dimulai, kirim question_bank_id yang baru. Endpoint juga menerima metode PUT.DELETE /exams/{exam}/sessions/{session} — Menghapus sesi
DELETE /exams/{exam}/sessions/{session} — Menghapus sesi
409 (participants_registered) jika sudah ada peserta yang ditempatkan pada sesi ini.Kesiapan dan penilaian
GET /exams/{exam}/readiness — Memeriksa kesiapan ujian
GET /exams/{exam}/readiness — Memeriksa kesiapan ujian
ready bernilai true jika tidak ada masalah ber-severity error; warning menandai hal yang perlu diperhatikan tetapi tidak menghalangi.POST /exams/{exam}/irt-calculations — Menjalankan perhitungan IRT
POST /exams/{exam}/irt-calculations — Menjalankan perhitungan IRT
exam_result.scored. Selama perhitungan masih diantrekan atau berjalan, request berikutnya ditolak dengan 409 (calculation_running).202:GET /exams/{exam}/irt-calculations — Status perhitungan IRT
GET /exams/{exam}/irt-calculations — Status perhitungan IRT
Paket soal
GET /question-banks — Daftar paket soal
GET /question-banks — Daftar paket soal
is_locked: true dan source berisi paket serta revisi asalnya.
