Open API situs Indonesia membuka pengecekan kepatuhan teks / video / gambar untuk platform lokal, beserta kamus kata terlarang kustom, penulisan ulang AI, dan pengecekan massal paket materi, lewat satu set REST API. Mesin pengecekan dan akun kreditnya sama dengan versi web — hasil yang Anda lihat di web persis sama dengan yang dikembalikan API.
Tiga langkah. Seluruh pengecekan memakai satu pola: kirim untuk mendapat id, lalu polling hasilnya.
1
Buat API Key
Buat di halaman «Akses API» pada dashboard. Key berformat brsk_live_… dan hanya ditampilkan sekali saat dibuat — segera simpan ke pengelola kredensial Anda.
2
Sertakan header autentikasi
Tambahkan Authorization: Bearer brsk_live_… pada setiap permintaan. Perhatikan bahwa ini berbeda dari token sesi login web dan tidak bisa saling menggantikan.
3
Kirim pengecekan, lalu polling hasilnya
Pengiriman langsung mengembalikan id dan pengecekan berjalan di belakang layar. Polling endpoint GET sampai status menjadi completed. Teks biasanya 3–15 detik, video kira-kira setengah durasi videonya.
Kirim satu pengecekan teks
bash
curl -X POST https://www.byerisk.com/api/v1/intl/id/text/checks \
-H "Authorization: Bearer $BYERISK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Serum ini 100% ampuh memutihkan wajah dalam 3 hari, garansi uang kembali!",
"platform": "tiktok_id",
"vertical": "beauty",
"explainLocale": "id-ID"
}'
# → {"success":true,"data":{"id":"cm5abc…","status":"processing"}}
Format respons memakai amplop seragam.Sukses berupa { "success": true, "data": … }, gagal berupa { "success": false, "error": "…" }. Tabel field «Respons» pada dokumentasi endpoint di bawah menjelaskan isi dari data.
Situs dan Key
Ini hal terpenting yang perlu diketahui sebelum integrasi: satu API Key hanya milik satu situs. Key yang dibuat di konsol situs Indonesia hanya bisa memanggil endpoint di bawah /v1/intl/id/. Memakainya untuk memanggil /v1/ milik situs Mandarin akan mengembalikan 401, begitu pula sebaliknya.
Mengapa Key terikat pada satu situs.Keduanya bukan produk yang sama: rute, enum platform, kamus aturan, tingkat keanggotaan, dan akun kredit semuanya terpisah. Satu Key yang bisa memanggil semuanya berarti «kredit siapa yang dipotong dan aturan mana yang dipakai» harus ditebak dari isi permintaan, dan kedua tebakan yang salah sama-sama tidak menghasilkan error — mengecek teks berbahasa Indonesia dengan kumpulan aturan Mandarin hasilnya nyaris selalu lolos, atau kredit terpotong dari akun situs lain. Pengikatan situs menahan kedua kasus itu sejak langkah pertama.
Dimensi
Diisolasi per situs?
Keterangan
API Key
Ya
Dibuat terpisah di tiap situs; panggilan lintas situs mengembalikan 401
Saldo kredit, tingkat langganan
Ya
Saldo situs Mandarin tidak bisa dipakai di sini, dan keanggotaan tidak membuka akses lintas situs
Riwayat pengecekan, kamus kata kustom
Ya
Kata yang sama disimpan terpisah di tiap situs dan tidak saling memicu
Kuota jumlah kata, sakelar utama kamus
Tidak
Hak tingkat akun, dibagi lintas situs
Akun itu sendiri (nomor HP, sesi login)
Tidak
Satu akun ByeRisk yang sama bisa berbisnis di beberapa situs sekaligus
Kesimpulan risiko
Ini bagian yang paling sering salah diintegrasikan: riskLevel pada pengecekan teks dan pada gambar / video bukan enum yang sama. Keduanya berasal dari jalur penilaian yang berbeda dan tidak punya rumus konversi — tanganilah per endpoint, jangan menulis satu enum riskLevel yang menyatukan keduanya.
Endpoint
Nilai riskLevel
Arti
Pengecekan teks
safe / low / medium / high
Diambil dari severity tertinggi di antara pelanggaran yang cocok
Pengecekan gambar dan video
PASS / REVIEW / REJECT
Saran penanganan dari peninjauan konten
Dua dimensi pada tiap risiko
kind
Jenis risiko
violation adalah pelanggaran keras regulasi / platform yang wajib diperbaiki; scene-hint adalah catatan batasan skenario. Hanya violation yang dihitung ke riskLevel.
severity
Tingkat keparahan
Tiga tingkat: high / medium / low. riskLevel tingkat atas mengambil yang tertinggi di antara seluruh violation.
customRisks
Kecocokan kata kustom
Kata yang Anda atur sendiri, dikelompokkan terpisah dan tidak dihitung ke riskLevel. Itu preferensi, bukan penilaian kepatuhan.
Mengapa kata kustom dipisahkan.Nama kompetitor atau istilah yang dilarang secara internal adalah preferensi bisnis Anda. Mencampurnya dengan «melanggar regulasi setempat» dalam satu daftar membuat sistem hilir Anda tidak bisa membedakan «wajib diblokir» dari «sekadar diingatkan». Karena itu keduanya dikembalikan terpisah di customRisks, dan yang sudah diberi kata pengganti akan membawa replacement untuk penggantian presisi.
Rujukan pasal tidak ikut diterjemahkan.Penjelasan risiko dan saran perbaikan mengikuti explainLocale (bahasa Mandarin atau Indonesia), tetapi nomor dan sumber pasal di legalRef selalu dipertahankan apa adanya — rujukan harus dapat diverifikasi.
Cakupan pengecekan
Ketiga dimensi memiliki jalur penilaiannya masing-masing. Berbeda dari situs Mandarin, di sini tidak disediakan parameter untuk memangkas dimensi pengecekan — dimensi untuk gambar dan audio terikat pada konfigurasi kebijakan di sisi akun, sehingga mengirim parameter dimensi tidak akan mengubah kebijakan yang benar-benar dijalankan; itu hanya sakelar semu.
Dimensi
Cakupan
Keterangan
Teks
Kamus aturan platform + peninjauan semantik
Regulasi setempat dan aturan platform; peninjauan semantik menangani risiko lintas kalimat dan menyaring positif palsu
Gambar
Risiko visual + pengenalan tulisan pada gambar
Penilaian visual tidak bergantung pada bahasa konten
Video
Gambar + audio + naskah lisan
Naskah lisan ditranskripsi lalu diproses mesin yang sama dengan pengecekan teks
Pengecekan gambar tidak menilai kepatuhan komersial.Yang dinilai adalah risiko pada visualnya sendiri, bukan verifikasi klaim khasiat atau tanda sertifikasi yang menuntut pemahaman atas tulisan di dalam gambar. Untuk risiko semacam itu, kirimkan teksnya secara terpisah ke pengecekan teks — kami lebih memilih menyatakan batasnya di dokumentasi daripada membuat Anda mengira lolosnya pengecekan gambar berarti seluruh materi sudah patuh.
Syarat berhenti polling video ada dua.status sudah final, dan transcriptStatus bukan lagi processing. Transkripsi lisan biasanya selesai lebih lambat daripada peninjauan gambar; hanya melihat status akan membuat Anda tidak pernah mendapat transcriptRisks.
Integrasi multi-tenant
Bila Anda mengintegrasikan pengecekan kepatuhan ke sistem Anda lalu menyediakannya untuk beberapa pelanggan Anda sendiri, tambahkan header X-End-Tenant berisi nomor tenant di sistem Anda, dan kami akan membuka satu domain terisolasi untuk tiap nomor tenant. Anda tidak perlu mengajukan API Key terpisah untuk tiap pelanggan.
Kata milik tenant A tidak akan memicu pengecekan tenant B
Riwayat pengecekan, direktori unggah materi
Masing-masing tenant satu
Endpoint daftar hanya mengembalikan data X-End-Tenant saat ini, tidak saling terlihat
Saldo kredit, tingkat langganan
Akun utama Anda
Dipotong dari kolam kredit Anda; tidak perlu mengisi saldo untuk tiap tenant
Kuota panggilan
Per API Key
Seluruh tenant berbagi kuota satu Key; buat beberapa Key bila butuh konkurensi lebih tinggi
Kirimkan identitas tenant yang stabil.Nomor tenant dibuat otomatis saat pertama kali muncul, tidak perlu didaftarkan lebih dulu, dengan nilai 1–64 karakter huruf, angka, _ . : -. Namun bila yang dikirim adalah nilai yang berubah tiap permintaan (misalnya keliru mengirim id permintaan), batas jumlah domain untuk satu Key akan cepat habis dan mulai menghasilkan error. Bila header ini tidak dikirim, seluruh data berada dalam satu domain milik Anda sendiri, persis seperti saat fitur ini tidak dipakai.
Biaya dan pembatasan laju
API dan versi web memakai kolam kredit yang sama untuk situs ini, dengan tarif yang sama. Sebelum integrasi, Anda bisa memanggil GET /v1/intl/id/account untuk mengecek saldo dan pemakaian bulan ini.
Tindakan
Biaya
Pengecekan teks
Sesuai tarif paket, per panggilan
Penulisan ulang AI
Sesuai tarif paket, per panggilan
Pengecekan video
1 kredit / detik
Pengecekan gambar
2 kredit / gambar
Pengecekan massal paket materi
Dihitung per sub-item sesuai tarifnya
Pengelolaan kata kustom, kueri akun, kredensial unggah
Gratis
Pembatasan laju dihitung per API Key: kelompok pengiriman 60 kali/menit, kelompok kueri 600 kali/menit, kelompok konfigurasi 120 kali/menit. Tiap kelompok dihitung terpisah, setiap respons membawa X-RateLimit-Remaining, dan melewati batas mengembalikan 429 beserta Retry-After.
Dua ambang langganan.Membuat API Key maupun pengecekan massal paket materi sama-sama memerlukan paket Flagship atau lebih tinggi di situs ini. Keanggotaan diisolasi per situs — langganan di situs Mandarin tidak membuka akses di sini. Key yang sudah pernah dibuat tidak terpengaruh oleh perubahan ambang ini dan tetap bisa dipakai.
Kode error
Kode
Arti
Cara menangani
400
Parameter tidak valid
Perbaiki parameter sesuai pesan error
401
Key tidak valid / dicabut / kedaluwarsa, atau bukan milik situs yang Anda panggil
Periksa dulu apakah pesannya menyebut situs tidak cocok, baru pertimbangkan mengganti Key
402
Kredit tidak mencukupi
Isi ulang lalu coba lagi
403
Fitur memerlukan tingkat langganan lebih tinggi
Naikkan langganan di situs ini
404
Data tidak ada, bukan milik akun Anda, atau milik situs lain
Periksa id dan segmen situs
429
Terkena pembatasan laju
Mundur dan coba lagi sesuai Retry-After
500
Kesalahan sisi server
Dapat dicoba ulang; hubungi kami bila terus gagal
Untuk AI Agent
Salah satu tujuan desain API ini adalah agar AI agent bisa membacanya sendiri dan memanggilnya — spesifikasinya mengikuti standar OpenAPI 3.0, dengan parameter masuk, keluaran, nilai enum, dan makna error tertulis di dalamnya, tanpa perlu dokumen adaptasi tambahan.
Berikan alamat spesifikasi kepada agent Anda (Claude, GPT, Coze, Dify, dan lainnya mendukung impor tool dari OpenAPI), pasangkan dengan satu API Key, dan agent dapat menjalankan siklus «cek → baca risiko → perbaiki teks → cek ulang» secara mandiri:
Prompt
Baca spesifikasi OpenAPI di https://www.byerisk.com/api/v1/intl/id/openapi.json?lang=id-ID,
lalu gunakan API Key saya untuk memanggil ByeRisk situs Indonesia.
Cek apakah teks jualan berbahasa Indonesia berikut sudah patuh,
uraikan satu per satu risiko yang wajib diperbaiki, dan berikan saran penulisan ulangnya.
Alamat spesifikasi membawa parameter lang yang mengikuti bahasa antarmuka Anda saat ini — versi mana yang Anda berikan kepada agent, itulah bahasa penjelasan yang dibacanya. Spesifikasi terbuka untuk umum tanpa autentikasi.
Kirim satu teks untuk dicek kepatuhannya. Langsung mengembalikan id, pengecekan berjalan asinkron di belakang layar.
Setelah mendapat id, polling GET {id} sampai status menjadi completed atau failed (biasanya 3–15 detik).
Yang dicek adalah konten dalam bahasa setempat; bahasa penjelasan risiko ditentukan oleh explainLocale — keduanya tidak saling memengaruhi.
Kredit dipotong saat pengiriman; jika gagal masuk antrean, kredit dikembalikan penuh secara otomatis.
Body permintaan
Field
Tipe
Keterangan
textWajib
string
Teks yang akan dicek, 10–5000 karakter. Yang dicek adalah konten berbahasa Indonesia itu sendiri, terpisah dari bahasa penjelasan di bawah. (panjang 10–5000)
platformWajib
enum
Platform tempat konten akan diterbitkan; menentukan kumpulan aturan platform mana yang dipakai.Nilai yang tersedia: tiktok_idTikTok Indonesiashopee_idShopee IndonesiatokopediaTokopedia
verticalWajib
enum
Industri konten. Menyebut industri spesifik = kumpulan aturan umum + kumpulan aturan khusus industri tersebut; general = hanya kumpulan umum.Nilai yang tersedia: generalUmumbeautyKecantikan & perawatanhealthSuplemen kesehatanfoodMakanan & minumanfashionFesyen
explainLocale
enum
Bahasa untuk penjelasan risiko dan saran perbaikan. Ortogonal terhadap bahasa konten yang dicek — yang dicek selalu teks berbahasa Indonesia, parameter ini hanya menentukan bahasa yang kami pakai untuk menjelaskan hasilnya kepada Anda. Bila tidak diisi, digunakan zh-CN.Nilai yang tersedia: zh-CNBahasa Mandarinid-IDBahasa IndonesiaDefault zh-CN
Respons201
Field
Tipe
Keterangan
id
string
Id pengecekan ini, dipakai untuk polling hasil.
object
string
Tipe objek.
status
string
Status saat ini. Tepat setelah dikirim nilainya processing.
Kemungkinan error
402Kredit tidak mencukupi
Contoh
bash
curl -X POST https://www.byerisk.com/api/v1/intl/id/text/checks \
-H "Authorization: Bearer $BYERISK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Serum ini 100% ampuh memutihkan wajah dalam 3 hari, sudah bersertifikat BPOM, garansi uang kembali!",
"platform": "tiktok_id",
"vertical": "beauty",
"explainLocale": "zh-CN"
}'
Saat status masih processing, pengecekan belum selesai — coba lagi nanti; hasil final baru ada di risks ketika completed.
Risiko dipisah menjadi dua lapis yang tidak boleh dicampur:
- risks — risiko kepatuhan. kind=violation adalah pelanggaran keras, kind=scene-hint adalah catatan batasan skenario.
- customRisks — kata terlarang yang Anda atur sendiri, tidak dihitung ke riskLevel; jika Anda mengisi kata pengganti, akan disertakan replacement.
Parameter jalur
Field
Tipe
Keterangan
idWajib
string
Respons200
Field
Tipe
Keterangan
id
string
Id pengecekan.
object
string
Tipe objek.
status
enum
processing berarti pengecekan masih berjalan, coba lagi nanti; hasil final baru ada di risks ketika completed.Nilai yang tersedia: processingSedang diprosescompletedSelesaifailedGagal
platform
enum
Platform penerbitan.Nilai yang tersedia: tiktok_idTikTok Indonesiashopee_idShopee IndonesiatokopediaTokopedia
vertical
enum
Industri konten.Nilai yang tersedia: generalUmumbeautyKecantikan & perawatanhealthSuplemen kesehatanfoodMakanan & minumanfashionFesyen
text
string
Teks asli yang dicek.
riskLevel
enum
Kesimpulan tingkat atas, diambil dari severity tertinggi di antara risiko violation. ⚠️ Bukan kumpulan nilai yang sama dengan PASS / REVIEW / REJECT pada pengecekan gambar / video.Nilai yang tersedia: safelowmediumhigh
summary
object
Hitungan tiap kategori.
└violation
number
Jumlah pelanggaran keras terhadap regulasi / aturan platform.
└sceneHint
number
Jumlah catatan batasan skenario.
└custom
number
Jumlah kecocokan kamus kata kustom. Tidak dihitung ke riskLevel.
└semantic
number
Jumlah label risiko semantik (peringatan menyeluruh yang tidak bisa dilokalisasi ke posisi tertentu).
risks
array<object>
Risiko kepatuhan satu per satu.
└id
object
Id risiko.
└kind
enum
Jenis risiko: violation pelanggaran keras regulasi / platform (wajib diperbaiki); scene-hint catatan batasan skenario.Nilai yang tersedia: violationPelanggaran kerasscene-hintCatatan batasan skenario
└severity
enum
Tingkat keparahan. riskLevel tingkat atas mengambil yang tertinggi di antara seluruh violation.Nilai yang tersedia: highTinggimediumSedanglowRendah
└matchedText
string
Potongan teks asli yang cocok.
└startIndex
number
Indeks awal potongan yang cocok pada teks asli. **Bernilai -1 bila kecocokan semantik tidak bisa dilokalisasi** (bukan null) — dalam kasus ini cari sendiri matchedText di teks asli, atau tampilkan saja sebagai peringatan menyeluruh.
└endIndex
number
Indeks akhir potongan yang cocok; juga bisa bernilai -1.
└category
object
Kategori risiko, sudah dilokalkan sesuai explainLocale.
└suggestion
object
Saran perbaikan, sudah dilokalkan sesuai explainLocale.
└legalRef
object
Rujukan pasal regulasi / aturan platform. Tidak ikut diterjemahkan oleh explainLocale — nomor dan sumber pasal harus dapat diverifikasi.
└source
enum
Sumber penilaian: rule kecocokan aturan deterministik; model penilaian model; custom kata kustom.Nilai yang tersedia: rulemodelcustom
customRisks
array<object>
Kecocokan kamus kata kustom. Terpisah dari risks dan tidak dihitung ke riskLevel — ini preferensi Anda sendiri, bukan penilaian kepatuhan.
└matchedText
string
Potongan teks asli yang cocok.
└startIndex
number
Indeks awal (bisa bernilai -1).
└endIndex
number
Indeks akhir (bisa bernilai -1).
└replacement
object
Kata pengganti yang Anda atur untuk kata ini. Kosong berarti hanya mengingatkan, tanpa saran pengganti.
└note
object
Catatan yang Anda tulis untuk kata ini.
semanticLabels
array<string>
Peringatan menyeluruh: model menilai ada risiko tetapi tidak dapat menunjuk potongan teks tertentu.
fixStatus
object
Status penulisan ulang AI: null belum dipicu | processing sedang berjalan | completed selesai | failed gagal.
fixedText
object
Teks lengkap hasil penulisan ulang AI, terisi setelah penulisan ulang selesai.
createdAt
object
Waktu dibuat (ISO 8601).
updatedAt
object
Waktu pembaruan terakhir (ISO 8601).
Kemungkinan error
404Data tidak ditemukan, bukan milik akun Anda, atau milik situs lain
Kirim URL gambar yang dapat diakses publik untuk dicek kepatuhannya.
Pengecekan gambar bersifat sinkron: saat endpoint ini merespons, hasilnya sudah siap dan body respons adalah hasil lengkapnya —
tidak perlu polling. (GET {id} tetap tersedia untuk penelusuran ulang.)
**Selalu periksa status**: normalnya completed; bila mesin pengecekan bermasalah nilainya failed (kredit sudah dikembalikan otomatis,
labels kosong). Kasus ini tetap mengembalikan 201, bukan 5xx — datanya sendiri berhasil dibuat.
Biaya: 2 kredit per gambar.
Body permintaan
Field
Tipe
Keterangan
imageUrlWajib
string
URL gambar, wajib dapat diakses publik (layanan pengecekan kami harus bisa mengunduhnya langsung). Bila Anda belum punya penyimpanan objek sendiri, panggil dulu POST /v1/intl/{country}/uploads/policy untuk mengambil kredensial unggah langsung.
imageTitleWajib
string
Judul / nama berkas gambar, untuk mengenalinya kembali di riwayat.
imageSizeWajib
number
Ukuran gambar (byte). (minimal 1)
imageWidth
number
Lebar gambar (piksel).
imageHeight
number
Tinggi gambar (piksel).
vertical
enum
Deklarasi industri konten. Tidak memengaruhi penilaian gambar kali ini (kebijakan penilaian gambar terikat pada konfigurasi sisi akun, lepas dari industri), hanya dipakai untuk pencatatan dan tampilan riwayat. Isi apa adanya, boleh dikosongkan.Nilai yang tersedia: generalUmumbeautyKecantikan & perawatanhealthSuplemen kesehatanfoodMakanan & minumanfashionFesyen
explainLocale
enum
Bahasa untuk label risiko. Sama seperti pengecekan teks, terpisah dari bahasa tulisan di dalam gambar.Nilai yang tersedia: zh-CNBahasa Mandarinid-IDBahasa IndonesiaDefault zh-CN
Respons201
Field
Tipe
Keterangan
id
string
Id pengecekan.
object
string
Tipe objek.
status
enum
Wajib diperiksa: bernilai failed bila mesin pengecekan bermasalah (kredit sudah dikembalikan otomatis, labels kosong); kasus ini tetap mengembalikan 201.Nilai yang tersedia: processingSedang diprosescompletedSelesaifailedGagal
image
object
Informasi gambar.
└url
string
URL gambar (yang Anda kirim).
└title
string
Judul / nama berkas gambar.
└sizeBytes
object
Ukuran (byte).
└width
object
Lebar (piksel).
└height
object
Tinggi (piksel).
vertical
enum
Industri yang dideklarasikan saat pengiriman. Hanya pencatatan, tidak memengaruhi penilaian gambar.Nilai yang tersedia: generalUmumbeautyKecantikan & perawatanhealthSuplemen kesehatanfoodMakanan & minumanfashionFesyen
riskLevel
enum
Kesimpulan tingkat atas. ⚠️ Bukan kumpulan nilai yang sama dengan safe/low/medium/high pada pengecekan teks.Nilai yang tersedia: PASSREVIEWREJECT
labels
array<object>
Label risiko yang cocok. Array kosong bila tidak ada risiko.
└description
string
Label risiko, sudah dilokalkan sesuai explainLocale.
└riskLevel
enum
Tingkat untuk label ini sendiri. Data lama tidak memiliki tingkat per label, sehingga bernilai null (kami tidak mengarang nilainya).Nilai yang tersedia: PASSREVIEWREJECT
Menelusuri kembali pengecekan gambar yang sudah dikirim.
Parameter jalur
Field
Tipe
Keterangan
idWajib
string
Respons200
Field
Tipe
Keterangan
id
string
Id pengecekan.
object
string
Tipe objek.
status
enum
Wajib diperiksa: bernilai failed bila mesin pengecekan bermasalah (kredit sudah dikembalikan otomatis, labels kosong); kasus ini tetap mengembalikan 201.Nilai yang tersedia: processingSedang diprosescompletedSelesaifailedGagal
image
object
Informasi gambar.
└url
string
URL gambar (yang Anda kirim).
└title
string
Judul / nama berkas gambar.
└sizeBytes
object
Ukuran (byte).
└width
object
Lebar (piksel).
└height
object
Tinggi (piksel).
vertical
enum
Industri yang dideklarasikan saat pengiriman. Hanya pencatatan, tidak memengaruhi penilaian gambar.Nilai yang tersedia: generalUmumbeautyKecantikan & perawatanhealthSuplemen kesehatanfoodMakanan & minumanfashionFesyen
riskLevel
enum
Kesimpulan tingkat atas. ⚠️ Bukan kumpulan nilai yang sama dengan safe/low/medium/high pada pengecekan teks.Nilai yang tersedia: PASSREVIEWREJECT
labels
array<object>
Label risiko yang cocok. Array kosong bila tidak ada risiko.
└description
string
Label risiko, sudah dilokalkan sesuai explainLocale.
└riskLevel
enum
Tingkat untuk label ini sendiri. Data lama tidak memiliki tingkat per label, sehingga bernilai null (kami tidak mengarang nilainya).Nilai yang tersedia: PASSREVIEWREJECT
Kirim URL video yang dapat diakses publik untuk dicek kepatuhannya. Langsung mengembalikan id, pengecekan berjalan asinkron.
Polling GET {id}; durasi pengecekan kira-kira setengah durasi video (minimal 30 detik), disarankan polling setiap 5–10 detik.
Pengecekan mencakup tiga dimensi: gambar (frames), audio (audios), dan naskah lisan (transcriptRisks,
setelah ditranskripsi diproses oleh mesin yang sama dengan pengecekan teks).
Biaya: 1 kredit per detik durasi video, dipotong saat pengiriman. Mohon laporkan videoDuration dengan jujur.
Body permintaan
Field
Tipe
Keterangan
videoUrlWajib
string
URL video, wajib dapat diakses publik. Bila Anda belum punya penyimpanan objek sendiri, panggil dulu endpoint kredensial unggah langsung.
videoTitleWajib
string
Judul / nama berkas video.
videoSizeWajib
number
Ukuran video dalam satuan MB (bukan byte). Maksimum 1024 (1GB). (nilai 0.01–1024)
videoDurationWajib
number
Durasi video (detik). Biaya dihitung dari nilai ini (1 kredit/detik), mohon laporkan dengan jujur. (minimal 1)
videoWidth
number
Lebar video (piksel).
videoHeight
number
Tinggi video (piksel).
platform
enum
Platform penerbitan. Hanya menentukan kumpulan aturan platform untuk naskah lisan; bila tidak diisi, dipakai platform default situs ini.Nilai yang tersedia: tiktok_idTikTok Indonesiashopee_idShopee IndonesiatokopediaTokopedia
vertical
enum
Industri konten. Hanya menentukan kumpulan aturan industri untuk naskah lisan: menyebut industri spesifik = kumpulan umum + kumpulan industri tersebut; tidak diisi atau general = dilonggarkan ke seluruh kumpulan industri (lebih baik melapor berlebih). Penilaian gambar dan audio tidak terkait dengannya.Nilai yang tersedia: generalUmumbeautyKecantikan & perawatanhealthSuplemen kesehatanfoodMakanan & minumanfashionFesyen
Respons201
Field
Tipe
Keterangan
id
string
Id pengecekan ini, dipakai untuk polling hasil.
object
string
Tipe objek.
status
string
Status saat ini. Tepat setelah dikirim nilainya processing.
Setiap pemanggilan sekaligus mendorong satu putaran polling ke mesin pengecekan, jadi cukup polling endpoint ini — tidak perlu endpoint status terpisah.
⚠️ Syarat berhenti polling ada dua: status sudah final (completed / failed),
dantranscriptStatus bukan lagi processing. Transkripsi lisan biasanya selesai lebih lambat daripada peninjauan gambar;
hanya melihat status akan membuat Anda berhenti saat transkripsi masih berjalan dan tidak pernah mendapat transcriptRisks.
explainLocale menentukan bahasa penjelasan risiko lisan. Parameter ini ada di sisi baca, bukan sisi kirim —
hasilnya keluar asinkron, sehingga pilihan bahasa saat pengiriman tidak sampai ke saat data disimpan.
Parameter jalur
Field
Tipe
Keterangan
idWajib
string
Parameter kueri
Field
Tipe
Keterangan
explainLocale
enum
Bahasa penjelasan risiko. Bila tidak diisi, digunakan zh-CN.Nilai yang tersedia: zh-CNBahasa Mandarinid-IDBahasa IndonesiaDefault zh-CN
Respons200
Field
Tipe
Keterangan
id
string
Id pengecekan.
object
string
Tipe objek.
status
enum
Status peninjauan video. ⚠️ Ini bukan satu-satunya syarat berhenti polling — perhatikan juga transcriptStatus, karena transkripsi lisan biasanya selesai lebih lambat daripada peninjauan gambar.Nilai yang tersedia: processingSedang diprosescompletedSelesaifailedGagal
video
object
Informasi video.
└url
string
URL video.
└title
string
Judul / nama berkas video.
└sizeMb
object
Ukuran (MB).
└durationSeconds
object
Durasi (detik).
└width
object
Lebar (piksel).
└height
object
Tinggi (piksel).
platform
enum
Platform yang dipakai untuk pengecekan naskah lisan.Nilai yang tersedia: tiktok_idTikTok Indonesiashopee_idShopee IndonesiatokopediaTokopedia
vertical
enum
Industri yang dipakai untuk pengecekan naskah lisan.Nilai yang tersedia: generalUmumbeautyKecantikan & perawatanhealthSuplemen kesehatanfoodMakanan & minumanfashionFesyen
riskLevel
enum
Kesimpulan tingkat atas (gambar + audio).Nilai yang tersedia: PASSREVIEWREJECT
labels
array<string>
Label risiko keseluruhan.
frames
array<object>
Kecocokan pada gambar, dengan titik waktu per detik.
└timeSeconds
number
Titik waktu kemunculan gambar yang cocok di dalam video (detik).
└riskLevel
enum
Tingkat untuk gambar ini.Nilai yang tersedia: PASSREVIEWREJECT
└description
string
Keterangan kecocokan.
└imageUrl
object
URL cuplikan gambar yang cocok. URL bertanda tangan berumur pendek dan akan kedaluwarsa — simpan sendiri bila Anda perlu menyimpannya jangka panjang.
└ocrText
object
Tulisan yang dikenali di dalam gambar.
audios
array<object>
Kecocokan pada audio, dengan titik awal dan akhir dalam detik.
└startSeconds
number
Titik awal potongan yang cocok (detik).
└endSeconds
number
Titik akhir potongan yang cocok (detik).
└riskLevel
enum
Tingkat untuk potongan ini.Nilai yang tersedia: PASSREVIEWREJECT
└description
string
Keterangan kecocokan.
└text
object
Teks suara dari potongan yang cocok.
transcript
object
Transkripsi lengkap naskah lisan.
transcriptStatus
object
Status transkripsi lisan: null tidak diaktifkan | processing sedang ditranskripsi | completed | failed | empty tanpa jalur audio. **Selama masih processing, risiko lisan belum lengkap — lanjutkan polling.**
transcriptRisks
array<object>
Pelanggaran pada naskah lisan. Diproses oleh mesin yang sama dengan pengecekan teks, dan dihitung setara dengan gambar / audio dalam kesimpulan.
└matchedText
string
Potongan naskah lisan asli yang cocok.
└severity
enum
Tingkat keparahan.Nilai yang tersedia: highTinggimediumSedanglowRendah
└category
object
Kategori risiko, sudah dilokalkan.
└suggestion
object
Saran perbaikan, sudah dilokalkan.
└legalRef
object
Rujukan pasal, tidak ikut diterjemahkan.
└replacement
object
Kalimat patuh yang bisa langsung menggantikan matchedText; kosong berarti hanya bisa dihapus.
└startSeconds
number
Titik awal kalimat tempat kecocokan berada (detik), bisa langsung dipakai untuk seek.
└endSeconds
number
Titik akhir kalimat tempat kecocokan berada (detik).
└sentence
object
Kalimat utuh tempat kecocokan berada, sebagai konteks untuk Anda.
└source
enum
Sumber penilaian.Nilai yang tersedia: rulemodelcustom
Kirim beberapa teks + gambar + video sekaligus, dicek bersama dan disimpulkan secara agregat.
Maksimum 10 teks, 20 gambar, 10 video, total ≤40 item per paket.
Langsung mengembalikan id, seluruh sub-item dicek paralel di belakang layar. Polling GET {id} untuk melihat progres:
progress.done / progress.total adalah tingkat penyelesaian; setelah semua selesai, result memberi kesimpulan paket (PASS / REJECT).
Setiap sub-item membawa checkId yang bisa dipakai memanggil endpoint per item untuk detail lengkap.
Biaya: dihitung per sub-item sesuai tarifnya (teks per item, gambar per lembar, video per detik). Bila kredit tidak cukup, seluruh paket ditolak saat pengiriman.
Body permintaan
Field
Tipe
Keterangan
nameWajib
string
Nama paket materi, 1–60 karakter.
platformWajib
enum
Platform penerbitan, berlaku untuk seluruh paket.Nilai yang tersedia: tiktok_idTikTok Indonesiashopee_idShopee IndonesiatokopediaTokopedia
verticalWajib
enum
Industri konten, berlaku untuk seluruh paket.Nilai yang tersedia: generalUmumbeautyKecantikan & perawatanhealthSuplemen kesehatanfoodMakanan & minumanfashionFesyen
texts
array<string>
Sub-item teks, maksimum 10. Teks yang kurang dari 10 karakter akan dibuang, bukan membuat seluruh paket gagal — bila sepuluh teks dikirim sekaligus lalu semuanya ditolak gara-gara satu teks terlalu pendek, sementara pesan error tidak menyebut yang mana, itu bukan kontrak yang baik.
images
array<object>
Sub-item gambar, maksimum 20.
└urlWajib
string
URL gambar, dapat diakses publik.
└nameWajib
string
Judul / nama berkas gambar.
└sizeWajib
number
Ukuran gambar (byte).
└width
number
Lebar (piksel).
└height
number
Tinggi (piksel).
videos
array<object>
Sub-item video, maksimum 10.
└urlWajib
string
URL video, dapat diakses publik.
└nameWajib
string
Judul / nama berkas video.
└sizeWajib
number
Ukuran video dalam satuan MB (sama seperti pengecekan video tunggal, bukan byte).
└durationWajib
number
Durasi video (detik), dasar perhitungan biaya.
└width
number
Lebar (piksel).
└height
number
Tinggi (piksel).
explainLocale
enum
Bahasa penjelasan risiko.Nilai yang tersedia: zh-CNBahasa Mandarinid-IDBahasa IndonesiaDefault zh-CN
Respons201
Field
Tipe
Keterangan
id
string
Id pengecekan ini, dipakai untuk polling hasil.
object
string
Tipe objek.
status
string
Status saat ini. Tepat setelah dikirim nilainya processing.
Kemungkinan error
400Paket materi kosong, atau melebihi batas jumlah item
402Kredit tidak cukup untuk menutup biaya seluruh paket
403Pengecekan massal memerlukan langganan Flagship atau lebih tinggi
Dikembalikan berurutan dari yang terbaru, lengkap dengan progres dan kesimpulan tiap paket. Sekaligus mendorong status sebagian paket yang masih berjalan.
Parameter kueri
Field
Tipe
Keterangan
page
string
Nomor halaman, mulai dari 1.Default 1
pageSize
string
Jumlah data per halaman, maksimum 50.Default 20
explainLocale
enum
Bahasa penjelasan risiko (daftar ini sekaligus mendorong status sub-item, sehingga penyimpanan bisa terjadi saat ini).Nilai yang tersedia: zh-CNBahasa Mandarinid-IDBahasa IndonesiaDefault zh-CN
Setiap pemanggilan sekaligus menyegarkan status sub-item, jadi cukup polling endpoint ini. items[].checkId dipakai untuk mengambil detail lengkap per item.
Parameter jalur
Field
Tipe
Keterangan
idWajib
string
Parameter kueri
Field
Tipe
Keterangan
explainLocale
enum
Bahasa penjelasan risiko. Bila tidak diisi, digunakan zh-CN.Nilai yang tersedia: zh-CNBahasa Mandarinid-IDBahasa IndonesiaDefault zh-CN
Respons200
Field
Tipe
Keterangan
id
string
Id paket materi.
object
string
Tipe objek.
name
string
Nama paket materi.
platform
enum
Platform penerbitan.Nilai yang tersedia: tiktok_idTikTok Indonesiashopee_idShopee IndonesiatokopediaTokopedia
vertical
enum
Industri konten.Nilai yang tersedia: generalUmumbeautyKecantikan & perawatanhealthSuplemen kesehatanfoodMakanan & minumanfashionFesyen
status
enum
Status paket.Nilai yang tersedia: processingSedang diprosescompletedSelesaifailedGagal
progress
object
Progres.
└total
number
Total sub-item.
└done
number
Jumlah sub-item yang selesai.
└percent
number
Persentase penyelesaian (0–100).
result
enum
Kesimpulan paket, baru terisi setelah seluruh sub-item selesai.Nilai yang tersedia: PASSREJECT
summary
object
Hitungan seluruh paket.
└violation
number
Jumlah pelanggaran.
└sceneHint
number
Jumlah catatan skenario.
items
array<object>
Rincian sub-item.
└id
string
Id sub-item (bukan id pengecekan).
└kind
enum
Jenis sub-item. Perhatikan nilainya text, bukan script yang dipakai secara internal — konsisten dengan jalur endpoint per item.Nilai yang tersedia: textimagevideo
└checkId
string
Id pengecekan per item yang bersesuaian. Pakai untuk memanggil /text|image|video/checks/{id} guna mengambil detail lengkap.
└index
number
Indeks urutan sub-item saat dikirim.
└status
enum
Status sub-item.Nilai yang tersedia: processingSedang diprosescompletedSelesaifailedGagal
└riskLevel
object
Kesimpulan sub-item. Untuk teks: safe/low/medium/high; untuk gambar dan video: PASS/REVIEW/REJECT.
└summary
object
Hitungan sub-item.
└violation
number
Jumlah pelanggaran.
└sceneHint
number
Jumlah catatan skenario.
└text
string
Sub-item teks: teks asli.
└riskCount
number
Sub-item teks: jumlah risiko.
└image
object
Sub-item gambar: URL dan judul.
└video
object
Sub-item video: URL, judul, dan durasi.
└labels
array<string>
Sub-item gambar / video: label risiko.
└transcriptStatus
object
Sub-item video: status transkripsi lisan.
createdAt
object
Waktu dibuat.
finishedAt
object
Waktu selesai.
Kemungkinan error
404Paket materi tidak ditemukan atau milik situs lain
Menghapus paket materi beserta seluruh data pengecekan sub-itemnya secara lunak, sekaligus membersihkan berkas gambar / video yang telah diunggah secara asinkron.
Parameter jalur
Field
Tipe
Keterangan
idWajib
string
Respons200
Field
Tipe
Keterangan
id
string
Id data yang dihapus.
object
string
Tipe objek.
deleted
boolean
Selalu true.
Kemungkinan error
404Paket materi tidak ditemukan atau milik situs lain
Kata yang akan dicek. Untuk situs Indonesia, isilah kata berbahasa Indonesia — yang dicek adalah teks berbahasa Indonesia, kata berbahasa Mandarin tidak akan pernah cocok. (panjang 0–100)
matchType
enum
Cara pencocokan: keyword = pencocokan sub-string (default, muncul di posisi mana pun tetap dihitung); phrase = pencocokan batas kata. Untuk bahasa yang dipisah spasi seperti bahasa Indonesia, disarankan memakai phrase — pencocokan sub-string membuat kata pendek salah mengenai kata yang lebih panjang.Nilai yang tersedia: keywordCocok sub-stringphraseCocok batas kataDefault keyword
replacement
string
Kata pengganti. Setelah diisi, hasil kecocokan akan membawa replacement yang bisa dipakai untuk penggantian presisi sekali klik; bila dikosongkan, sistem hanya mengingatkan. (panjang 0–100)
note
string
Catatan, hanya Anda yang bisa melihatnya. (panjang 0–200)
enabled
boolean
Apakah aktif. Setelah dinonaktifkan, data tetap tersimpan tetapi tidak ikut dalam pengecekan.Default true
Respons201
Field
Tipe
Keterangan
id
string
Id aturan.
object
string
Tipe objek.
keyword
string
Kata yang dicek.
matchType
enum
Cara pencocokan.Nilai yang tersedia: keywordCocok sub-stringphraseCocok batas kata
replacement
object
Kata pengganti; kosong berarti hanya mengingatkan.
note
object
Catatan, hanya Anda yang bisa melihatnya.
enabled
boolean
Apakah aktif.
createdAt
object
Waktu dibuat.
updatedAt
object
Waktu pembaruan terakhir.
Kemungkinan error
400Kata ini sudah ada di situs ini, atau kuota kamus paket Anda sudah penuh
403Kata terlarang kustom adalah fitur berbayar; langganan Anda saat ini belum mencakupnya
Tampilkan seluruh kata terlarang kustom di situs ini
Berurutan dari yang terbaru, tanpa halaman. Hanya mengembalikan kata milik situs ini — kata yang sama disimpan terpisah di tiap situs dan tidak saling memicu.
Respons200
Field
Tipe
Keterangan
object
string
Tipe objek, selalu list.
data
array<object>
Seluruh aturan di situs ini (jumlah kamus tidak besar, tanpa halaman).
└id
string
Id aturan.
└object
string
Tipe objek.
└keyword
string
Kata yang dicek.
└matchType
enum
Cara pencocokan.Nilai yang tersedia: keywordCocok sub-stringphraseCocok batas kata
└replacement
object
Kata pengganti; kosong berarti hanya mengingatkan.
Maksimum 2000 kata per panggilan. Ramah idempotensi: duplikat dalam batch maupun kata yang sudah ada akan dilewati, bukan menghasilkan error;
respons memberi tiga hitungan terpisah imported / skippedDuplicate / rejectedQuota.
Bagian yang melebihi kuota ditolak, sedangkan bagian yang diterima tetap ditulis.
Body permintaan
Field
Tipe
Keterangan
itemsWajib
array<object>
Daftar kata yang akan diimpor, maksimum 2000 per panggilan. Duplikat dalam batch maupun kata yang sudah ada akan dilewati otomatis (dihitung terpisah dalam respons), tanpa menghasilkan error.
└keywordWajib
string
Kata yang akan dicek. (panjang 0–100)
└replacement
string
Kata pengganti. (panjang 0–100)
└note
string
Catatan. (panjang 0–200)
Respons201
Field
Tipe
Keterangan
object
string
Tipe objek.
total
number
Total kata yang dikirim kali ini.
imported
number
Jumlah yang benar-benar ditulis.
skippedDuplicate
number
Jumlah yang dilewati karena duplikat dalam batch atau sudah ada di kamus.
rejectedQuota
number
Jumlah yang ditolak karena melebihi kuota paket.
Kemungkinan error
403Kata terlarang kustom adalah fitur berbayar; langganan Anda saat ini belum mencakupnya
Mengembalikan jumlah terpakai dan batas paket. ⚠️ **used bersifat per akun** (termasuk kata yang Anda daftarkan di situs lain), sedangkan isPaid adalah status langganan situs ini — keanggotaan diisolasi per situs, kuota kamus tidak.
Respons200
Field
Tipe
Keterangan
object
string
Tipe objek.
used
number
Jumlah terpakai. Kuota bersifat per akun dan dibagi lintas situs — termasuk kata yang Anda daftarkan di situs lain.
limit
number
Batas kamus pada paket Anda saat ini. Paket gratis bernilai 0.
Ortogonal terhadap enabled tiap aturan: bila sakelar utama dimatikan, enabled per aturan tidak berlaku.
Body permintaan
Field
Tipe
Keterangan
enabledWajib
boolean
Sakelar utama tingkat akun. Setelah dimatikan, seluruh kata kustom tidak ikut dalam pengecekan (data tetap tersimpan), ortogonal terhadap enabled tiap aturan. Sakelar ini sendiri tidak dipisah per situs negara: ia menjawab pertanyaan «apakah akun ini memakai kamus kata kustom».
Respons200
Field
Tipe
Keterangan
object
string
Tipe objek.
enabled
boolean
Sakelar utama tingkat akun. Saat dimatikan, seluruh kata kustom tidak ikut dalam pengecekan (data tetap tersimpan).
Kemungkinan error
403Kata terlarang kustom adalah fitur berbayar; langganan Anda saat ini belum mencakupnya