Dokumentasi · Referensi
Referensi API
Setiap endpoint `/api/v1` dengan izin, parameter, bentuk body, dan contoh panggilan — dibangkitkan dari kontrak OpenAPI yang sama dengan server.
Sebelum memanggil endpoint
- Semua permintaan memakai
Authorization: Bearer <API key>. Kunci dibuat administrator di/admin/integrasidan hanya ditampilkan sekali. - Setiap kunci terikat pada satu klien integrasi. Data klien lain dijawab
404, bukan403, agar keberadaannya tidak bocor. - Izin efektif adalah irisan izin klien dan izin kunci. Mencabut izin di klien langsung mempersempit semua kunci di bawahnya.
- Daftar memakai cursor: kirim
?cursor=darimeta.cursor. Jangan menyusun cursor sendiri.
Identitas
Informasi klien dan konfigurasi
/api/v1/mecukup API keyIdentitas integrasi
Klien, scope efektif, katalog event webhook, dan batas laju.
Respons
- 200 · Identitas klien
- 400 · Input tidak valid
- 401 · API key tidak ada atau tidak sah
- 403 · Scope tidak mencukupi atau IP ditolak
- 404 · Sumber daya tidak ditemukan
- 409 · Konflik data
- 429 · Batas laju atau kuota tercapai
Katalog
Instrumen yang tersedia
/api/v1/instrumentscatalog:readDaftar instrumen terbit
Parameter
| Field | Tipe | Keterangan |
|---|---|---|
limit (query) | integer | — |
Respons
- 200 · Katalog
- 400 · Input tidak valid
- 401 · API key tidak ada atau tidak sah
- 403 · Scope tidak mencukupi atau IP ditolak
- 404 · Sumber daya tidak ditemukan
- 409 · Konflik data
- 429 · Batas laju atau kuota tercapai
Peserta
Kelola peserta milik klien
/api/v1/participantsparticipants:readDaftar peserta
Parameter
| Field | Tipe | Keterangan |
|---|---|---|
limit (query) | integer | — |
cursor (query) | string | — |
q (query) | string | Cari nama atau email |
Respons
- 200 · Daftar peserta
- 400 · Input tidak valid
- 401 · API key tidak ada atau tidak sah
- 403 · Scope tidak mencukupi atau IP ditolak
- 404 · Sumber daya tidak ditemukan
- 409 · Konflik data
- 429 · Batas laju atau kuota tercapai
/api/v1/participantsparticipants:writeBuat peserta
Idempoten terhadap email: permintaan ulang mengembalikan peserta yang sama dengan `created: false`.
Body (wajib)
| Field | Tipe | Keterangan |
|---|---|---|
namewajib | string | — |
emailwajib | string | — |
phone | string | null | — |
city | string | null | — |
organization | string | null | — |
occupation | string | null | — |
Respons
- 200 · Peserta sudah ada (idempoten)
- 201 · Peserta dibuat
- 400 · Input tidak valid
- 401 · API key tidak ada atau tidak sah
- 403 · Scope tidak mencukupi atau IP ditolak
- 404 · Sumber daya tidak ditemukan
- 409 · Konflik data
- 429 · Batas laju atau kuota tercapai
/api/v1/participants/{participantId}participants:readDetail peserta
Parameter
| Field | Tipe | Keterangan |
|---|---|---|
participantId (path)wajib | string | — |
Respons
- 200 · Peserta
- 400 · Input tidak valid
- 401 · API key tidak ada atau tidak sah
- 403 · Scope tidak mencukupi atau IP ditolak
- 404 · Sumber daya tidak ditemukan
- 409 · Konflik data
- 429 · Batas laju atau kuota tercapai
/api/v1/participants/{participantId}participants:writePerbarui peserta
Parameter
| Field | Tipe | Keterangan |
|---|---|---|
participantId (path)wajib | string | — |
Body (wajib)
| Field | Tipe | Keterangan |
|---|---|---|
name | string | — |
phone | string | null | — |
city | string | null | — |
organization | string | null | — |
occupation | string | null | — |
active | boolean | — |
Respons
- 200 · Diperbarui
- 400 · Input tidak valid
- 401 · API key tidak ada atau tidak sah
- 403 · Scope tidak mencukupi atau IP ditolak
- 404 · Sumber daya tidak ditemukan
- 409 · Konflik data
- 429 · Batas laju atau kuota tercapai
Hasil
Hasil tes dan skala
/api/v1/resultsresults:readDaftar hasil tes
Parameter
| Field | Tipe | Keterangan |
|---|---|---|
limit (query) | integer | — |
cursor (query) | string | — |
participantId (query) | string | — |
instrumentId (query) | string | — |
Respons
- 200 · Daftar hasil
- 400 · Input tidak valid
- 401 · API key tidak ada atau tidak sah
- 403 · Scope tidak mencukupi atau IP ditolak
- 404 · Sumber daya tidak ditemukan
- 409 · Konflik data
- 429 · Batas laju atau kuota tercapai
/api/v1/results/{resultId}results:readDetail hasil dan skala
Parameter
| Field | Tipe | Keterangan |
|---|---|---|
resultId (path)wajib | string | — |
Respons
- 200 · Hasil
- 400 · Input tidak valid
- 401 · API key tidak ada atau tidak sah
- 403 · Scope tidak mencukupi atau IP ditolak
- 404 · Sumber daya tidak ditemukan
- 409 · Konflik data
- 429 · Batas laju atau kuota tercapai
Pesanan
Pesanan dan status pembayaran
/api/v1/ordersorders:readDaftar pesanan
Parameter
| Field | Tipe | Keterangan |
|---|---|---|
limit (query) | integer | — |
cursor (query) | string | — |
Respons
- 200 · Daftar pesanan
- 400 · Input tidak valid
- 401 · API key tidak ada atau tidak sah
- 403 · Scope tidak mencukupi atau IP ditolak
- 404 · Sumber daya tidak ditemukan
- 409 · Konflik data
- 429 · Batas laju atau kuota tercapai
Room
Proyek/kelompok peserta
/api/v1/roomsrooms:readDaftar room
Respons
- 200 · Daftar room
- 400 · Input tidak valid
- 401 · API key tidak ada atau tidak sah
- 403 · Scope tidak mencukupi atau IP ditolak
- 404 · Sumber daya tidak ditemukan
- 409 · Konflik data
- 429 · Batas laju atau kuota tercapai
/api/v1/roomsrooms:writeBuat room
Body (wajib)
| Field | Tipe | Keterangan |
|---|---|---|
namewajib | string | — |
description | string | null | — |
organization | string | null | — |
pacing | string (free · sequential) | — |
members | array | — |
instruments | array | — |
Respons
- 201 · Room dibuat
- 400 · Input tidak valid
- 401 · API key tidak ada atau tidak sah
- 403 · Scope tidak mencukupi atau IP ditolak
- 404 · Sumber daya tidak ditemukan
- 409 · Konflik data
- 429 · Batas laju atau kuota tercapai
/api/v1/rooms/{roomId}rooms:readDetail room
Parameter
| Field | Tipe | Keterangan |
|---|---|---|
roomId (path)wajib | string | — |
Respons
- 200 · Room
- 400 · Input tidak valid
- 401 · API key tidak ada atau tidak sah
- 403 · Scope tidak mencukupi atau IP ditolak
- 404 · Sumber daya tidak ditemukan
- 409 · Konflik data
- 429 · Batas laju atau kuota tercapai
Webhook
Endpoint notifikasi keluar
/api/v1/webhookswebhooks:manageDaftar endpoint webhook
Respons
- 200 · Endpoint
- 400 · Input tidak valid
- 401 · API key tidak ada atau tidak sah
- 403 · Scope tidak mencukupi atau IP ditolak
- 404 · Sumber daya tidak ditemukan
- 409 · Konflik data
- 429 · Batas laju atau kuota tercapai
/api/v1/webhookswebhooks:manageBuat endpoint webhook
Rahasia tanda tangan dikembalikan **sekali** pada respons ini.
Body (wajib)
| Field | Tipe | Keterangan |
|---|---|---|
urlwajib | string | HTTPS publik |
description | string | — |
eventswajib | array | — |
Respons
- 201 · Endpoint dibuat beserta secret
- 400 · Input tidak valid
- 401 · API key tidak ada atau tidak sah
- 403 · Scope tidak mencukupi atau IP ditolak
- 404 · Sumber daya tidak ditemukan
- 409 · Konflik data
- 429 · Batas laju atau kuota tercapai
/api/v1/webhooks/{endpointId}webhooks:manageDetail endpoint
Parameter
| Field | Tipe | Keterangan |
|---|---|---|
endpointId (path)wajib | string | — |
Respons
- 200 · Endpoint
- 400 · Input tidak valid
- 401 · API key tidak ada atau tidak sah
- 403 · Scope tidak mencukupi atau IP ditolak
- 404 · Sumber daya tidak ditemukan
- 409 · Konflik data
- 429 · Batas laju atau kuota tercapai
/api/v1/webhooks/{endpointId}webhooks:managePerbarui endpoint atau rotasi rahasia
Parameter
| Field | Tipe | Keterangan |
|---|---|---|
endpointId (path)wajib | string | — |
Respons
- 200 · Diperbarui
- 400 · Input tidak valid
- 401 · API key tidak ada atau tidak sah
- 403 · Scope tidak mencukupi atau IP ditolak
- 404 · Sumber daya tidak ditemukan
- 409 · Konflik data
- 429 · Batas laju atau kuota tercapai
/api/v1/webhooks/{endpointId}webhooks:manageHapus endpoint
Parameter
| Field | Tipe | Keterangan |
|---|---|---|
endpointId (path)wajib | string | — |
Respons
- 200 · Dihapus
- 400 · Input tidak valid
- 401 · API key tidak ada atau tidak sah
- 403 · Scope tidak mencukupi atau IP ditolak
- 404 · Sumber daya tidak ditemukan
- 409 · Konflik data
- 429 · Batas laju atau kuota tercapai
Pemakaian
Kuota dan kesehatan antrean
/api/v1/usagecukup API keyPemakaian API dan antrean webhook
Respons
- 200 · Pemakaian
- 400 · Input tidak valid
- 401 · API key tidak ada atau tidak sah
- 403 · Scope tidak mencukupi atau IP ditolak
- 404 · Sumber daya tidak ditemukan
- 409 · Konflik data
- 429 · Batas laju atau kuota tercapai
Izin
Minta izin sekecil yang cukup. Izin berisiko tinggi membuka data hasil atau memungkinkan perubahan data peserta.
| Izin | Risiko | Kegunaan |
|---|---|---|
catalog:readBaca katalog instrumen | low | Daftar instrumen yang terbit beserta slug, durasi, dan tingkat akses. |
participants:readBaca peserta | medium | Daftar dan detail peserta yang dibuat oleh klien ini. |
participants:writeKelola peserta | high | Membuat, memperbarui, dan menonaktifkan peserta milik klien ini. |
results:readBaca hasil tes | high | Ringkasan skor dan status hasil peserta milik klien ini. |
reports:readBaca laporan | high | Status laporan, kode verifikasi, dan tautan unduhan PDF. |
orders:readBaca pesanan | medium | Pesanan dan status pembayaran peserta milik klien ini. |
rooms:readBaca room | medium | Room/proyek yang dibuat klien ini beserta anggotanya. |
rooms:writeKelola room | high | Membuat room, menambah anggota, dan menugaskan tes. |
webhooks:manageKelola webhook | high | Membuat dan mengubah endpoint webhook milik klien ini. |
Batas pemakaian
| Batas | Bawaan | Catatan |
|---|---|---|
| Permintaan per menit | 120 | Dapat dinaikkan sampai 6000 per klien. Dihitung per klien, bukan per IP. |
| Kuota harian | Tanpa batas | Bila diaktifkan, kelebihan dijawab 429. |
| Ukuran halaman | 25 (maks 100) | Atur lewat ?limit=; nilai di atas maksimum dipotong. |
| Ukuran body | 16–64 KB | Bergantung endpoint; body lebih besar dijawab 413. |
Saat menerima 429, hormati header Retry-After dan gunakan backoff dengan jitter. Sertakan requestId dari amplop galat bila melapor.