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
字符串
Teks yang akan dicek, 10–5000 karakter. Yang dicek adalah konten berbahasa Indonesia itu sendiri, terpisah dari bahasa penjelasan di bawah.(长度 10–5000)
platformWajib
枚举
Platform tempat konten akan diterbitkan; menentukan kumpulan aturan platform mana yang dipakai.Nilai yang tersedia: tiktok_idTikTok Indonesiashopee_idShopee IndonesiatokopediaTokopedia
verticalWajib
枚举
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
枚举
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
字符串
Id pengecekan ini, dipakai untuk polling hasil.
object
字符串
Tipe objek.
status
字符串
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
字符串
Id pengecekan.
object
字符串
Tipe objek.
status
枚举
processing berarti pengecekan masih berjalan, coba lagi nanti; hasil final baru ada di risks ketika completed.Nilai yang tersedia: processingSedang diprosescompletedSelesaifailedGagal
platform
枚举
Platform penerbitan.Nilai yang tersedia: tiktok_idTikTok Indonesiashopee_idShopee IndonesiatokopediaTokopedia
vertical
枚举
Industri konten.Nilai yang tersedia: generalUmumbeautyKecantikan & perawatanhealthSuplemen kesehatanfoodMakanan & minumanfashionFesyen
text
字符串
Teks asli yang dicek.
riskLevel
枚举
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
对象
Hitungan tiap kategori.
└violation
数字
Jumlah pelanggaran keras terhadap regulasi / aturan platform.
└sceneHint
数字
Jumlah catatan batasan skenario.
└custom
数字
Jumlah kecocokan kamus kata kustom. Tidak dihitung ke riskLevel.
└semantic
数字
Jumlah label risiko semantik (peringatan menyeluruh yang tidak bisa dilokalisasi ke posisi tertentu).
risks
数组<对象>
Risiko kepatuhan satu per satu.
└id
对象
Id risiko.
└kind
枚举
Jenis risiko: violation pelanggaran keras regulasi / platform (wajib diperbaiki); scene-hint catatan batasan skenario.Nilai yang tersedia: violationPelanggaran kerasscene-hintCatatan batasan skenario
└severity
枚举
Tingkat keparahan. riskLevel tingkat atas mengambil yang tertinggi di antara seluruh violation.Nilai yang tersedia: highTinggimediumSedanglowRendah
└matchedText
字符串
Potongan teks asli yang cocok.
└startIndex
数字
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
数字
Indeks akhir potongan yang cocok; juga bisa bernilai -1.
└category
对象
Kategori risiko, sudah dilokalkan sesuai explainLocale.
└suggestion
对象
Saran perbaikan, sudah dilokalkan sesuai explainLocale.
└legalRef
对象
Rujukan pasal regulasi / aturan platform. Tidak ikut diterjemahkan oleh explainLocale — nomor dan sumber pasal harus dapat diverifikasi.
└source
枚举
Sumber penilaian: rule kecocokan aturan deterministik; model penilaian model; custom kata kustom.Nilai yang tersedia: rulemodelcustom
customRisks
数组<对象>
Kecocokan kamus kata kustom. Terpisah dari risks dan tidak dihitung ke riskLevel — ini preferensi Anda sendiri, bukan penilaian kepatuhan.
└matchedText
字符串
Potongan teks asli yang cocok.
└startIndex
数字
Indeks awal (bisa bernilai -1).
└endIndex
数字
Indeks akhir (bisa bernilai -1).
└replacement
对象
Kata pengganti yang Anda atur untuk kata ini. Kosong berarti hanya mengingatkan, tanpa saran pengganti.
└note
对象
Catatan yang Anda tulis untuk kata ini.
semanticLabels
数组<字符串>
Peringatan menyeluruh: model menilai ada risiko tetapi tidak dapat menunjuk potongan teks tertentu.
fixStatus
对象
Status penulisan ulang AI: null belum dipicu | processing sedang berjalan | completed selesai | failed gagal.
fixedText
对象
Teks lengkap hasil penulisan ulang AI, terisi setelah penulisan ulang selesai.
createdAt
对象
Waktu dibuat (ISO 8601).
updatedAt
对象
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
字符串
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
字符串
Judul / nama berkas gambar, untuk mengenalinya kembali di riwayat.
imageSizeWajib
数字
Ukuran gambar (byte).(最小 1)
imageWidth
数字
Lebar gambar (piksel).
imageHeight
数字
Tinggi gambar (piksel).
vertical
枚举
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
枚举
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
字符串
Id pengecekan.
object
字符串
Tipe objek.
status
枚举
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
对象
Informasi gambar.
└url
字符串
URL gambar (yang Anda kirim).
└title
字符串
Judul / nama berkas gambar.
└sizeBytes
对象
Ukuran (byte).
└width
对象
Lebar (piksel).
└height
对象
Tinggi (piksel).
vertical
枚举
Industri yang dideklarasikan saat pengiriman. Hanya pencatatan, tidak memengaruhi penilaian gambar.Nilai yang tersedia: generalUmumbeautyKecantikan & perawatanhealthSuplemen kesehatanfoodMakanan & minumanfashionFesyen
riskLevel
枚举
Kesimpulan tingkat atas. ⚠️ Bukan kumpulan nilai yang sama dengan safe/low/medium/high pada pengecekan teks.Nilai yang tersedia: PASSREVIEWREJECT
labels
数组<对象>
Label risiko yang cocok. Array kosong bila tidak ada risiko.
└description
字符串
Label risiko, sudah dilokalkan sesuai explainLocale.
└riskLevel
枚举
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
字符串
Id pengecekan.
object
字符串
Tipe objek.
status
枚举
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
对象
Informasi gambar.
└url
字符串
URL gambar (yang Anda kirim).
└title
字符串
Judul / nama berkas gambar.
└sizeBytes
对象
Ukuran (byte).
└width
对象
Lebar (piksel).
└height
对象
Tinggi (piksel).
vertical
枚举
Industri yang dideklarasikan saat pengiriman. Hanya pencatatan, tidak memengaruhi penilaian gambar.Nilai yang tersedia: generalUmumbeautyKecantikan & perawatanhealthSuplemen kesehatanfoodMakanan & minumanfashionFesyen
riskLevel
枚举
Kesimpulan tingkat atas. ⚠️ Bukan kumpulan nilai yang sama dengan safe/low/medium/high pada pengecekan teks.Nilai yang tersedia: PASSREVIEWREJECT
labels
数组<对象>
Label risiko yang cocok. Array kosong bila tidak ada risiko.
└description
字符串
Label risiko, sudah dilokalkan sesuai explainLocale.
└riskLevel
枚举
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
字符串
URL video, wajib dapat diakses publik. Bila Anda belum punya penyimpanan objek sendiri, panggil dulu endpoint kredensial unggah langsung.
videoTitleWajib
字符串
Judul / nama berkas video.
videoSizeWajib
数字
Ukuran video dalam satuan MB (bukan byte). Maksimum 1024 (1GB).(取值 0.01–1024)
videoDurationWajib
数字
Durasi video (detik). Biaya dihitung dari nilai ini (1 kredit/detik), mohon laporkan dengan jujur.(最小 1)
videoWidth
数字
Lebar video (piksel).
videoHeight
数字
Tinggi video (piksel).
platform
枚举
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
枚举
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
字符串
Id pengecekan ini, dipakai untuk polling hasil.
object
字符串
Tipe objek.
status
字符串
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
字符串
Id pengecekan.
object
字符串
Tipe objek.
status
枚举
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
对象
Informasi video.
└url
字符串
URL video.
└title
字符串
Judul / nama berkas video.
└sizeMb
对象
Ukuran (MB).
└durationSeconds
对象
Durasi (detik).
└width
对象
Lebar (piksel).
└height
对象
Tinggi (piksel).
platform
枚举
Platform yang dipakai untuk pengecekan naskah lisan.Nilai yang tersedia: tiktok_idTikTok Indonesiashopee_idShopee IndonesiatokopediaTokopedia
vertical
枚举
Industri yang dipakai untuk pengecekan naskah lisan.Nilai yang tersedia: generalUmumbeautyKecantikan & perawatanhealthSuplemen kesehatanfoodMakanan & minumanfashionFesyen
riskLevel
枚举
Kesimpulan tingkat atas (gambar + audio).Nilai yang tersedia: PASSREVIEWREJECT
labels
数组<字符串>
Label risiko keseluruhan.
frames
数组<对象>
Kecocokan pada gambar, dengan titik waktu per detik.
└timeSeconds
数字
Titik waktu kemunculan gambar yang cocok di dalam video (detik).
└riskLevel
枚举
Tingkat untuk gambar ini.Nilai yang tersedia: PASSREVIEWREJECT
└description
字符串
Keterangan kecocokan.
└imageUrl
对象
URL cuplikan gambar yang cocok. URL bertanda tangan berumur pendek dan akan kedaluwarsa — simpan sendiri bila Anda perlu menyimpannya jangka panjang.
└ocrText
对象
Tulisan yang dikenali di dalam gambar.
audios
数组<对象>
Kecocokan pada audio, dengan titik awal dan akhir dalam detik.
└startSeconds
数字
Titik awal potongan yang cocok (detik).
└endSeconds
数字
Titik akhir potongan yang cocok (detik).
└riskLevel
枚举
Tingkat untuk potongan ini.Nilai yang tersedia: PASSREVIEWREJECT
└description
字符串
Keterangan kecocokan.
└text
对象
Teks suara dari potongan yang cocok.
transcript
对象
Transkripsi lengkap naskah lisan.
transcriptStatus
对象
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
数组<对象>
Pelanggaran pada naskah lisan. Diproses oleh mesin yang sama dengan pengecekan teks, dan dihitung setara dengan gambar / audio dalam kesimpulan.
└matchedText
字符串
Potongan naskah lisan asli yang cocok.
└severity
枚举
Tingkat keparahan.Nilai yang tersedia: highTinggimediumSedanglowRendah
└category
对象
Kategori risiko, sudah dilokalkan.
└suggestion
对象
Saran perbaikan, sudah dilokalkan.
└legalRef
对象
Rujukan pasal, tidak ikut diterjemahkan.
└replacement
对象
Kalimat patuh yang bisa langsung menggantikan matchedText; kosong berarti hanya bisa dihapus.
└startSeconds
数字
Titik awal kalimat tempat kecocokan berada (detik), bisa langsung dipakai untuk seek.
└endSeconds
数字
Titik akhir kalimat tempat kecocokan berada (detik).
└sentence
对象
Kalimat utuh tempat kecocokan berada, sebagai konteks untuk Anda.
└source
枚举
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
字符串
Nama paket materi, 1–60 karakter.
platformWajib
枚举
Platform penerbitan, berlaku untuk seluruh paket.Nilai yang tersedia: tiktok_idTikTok Indonesiashopee_idShopee IndonesiatokopediaTokopedia
verticalWajib
枚举
Industri konten, berlaku untuk seluruh paket.Nilai yang tersedia: generalUmumbeautyKecantikan & perawatanhealthSuplemen kesehatanfoodMakanan & minumanfashionFesyen
texts
数组<字符串>
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
数组<对象>
Sub-item gambar, maksimum 20.
└urlWajib
字符串
URL gambar, dapat diakses publik.
└nameWajib
字符串
Judul / nama berkas gambar.
└sizeWajib
数字
Ukuran gambar (byte).
└width
数字
Lebar (piksel).
└height
数字
Tinggi (piksel).
videos
数组<对象>
Sub-item video, maksimum 10.
└urlWajib
字符串
URL video, dapat diakses publik.
└nameWajib
字符串
Judul / nama berkas video.
└sizeWajib
数字
Ukuran video dalam satuan MB (sama seperti pengecekan video tunggal, bukan byte).
└durationWajib
数字
Durasi video (detik), dasar perhitungan biaya.
└width
数字
Lebar (piksel).
└height
数字
Tinggi (piksel).
explainLocale
枚举
Bahasa penjelasan risiko.Nilai yang tersedia: zh-CNBahasa Mandarinid-IDBahasa IndonesiaDefault zh-CN
Respons201
Field
Tipe
Keterangan
id
字符串
Id pengecekan ini, dipakai untuk polling hasil.
object
字符串
Tipe objek.
status
字符串
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
字符串
Id paket materi.
object
字符串
Tipe objek.
name
字符串
Nama paket materi.
platform
枚举
Platform penerbitan.Nilai yang tersedia: tiktok_idTikTok Indonesiashopee_idShopee IndonesiatokopediaTokopedia
vertical
枚举
Industri konten.Nilai yang tersedia: generalUmumbeautyKecantikan & perawatanhealthSuplemen kesehatanfoodMakanan & minumanfashionFesyen
status
枚举
Status paket.Nilai yang tersedia: processingSedang diprosescompletedSelesaifailedGagal
progress
对象
Progres.
└total
数字
Total sub-item.
└done
数字
Jumlah sub-item yang selesai.
└percent
数字
Persentase penyelesaian (0–100).
result
枚举
Kesimpulan paket, baru terisi setelah seluruh sub-item selesai.Nilai yang tersedia: PASSREJECT
summary
对象
Hitungan seluruh paket.
└violation
数字
Jumlah pelanggaran.
└sceneHint
数字
Jumlah catatan skenario.
items
数组<对象>
Rincian sub-item.
└id
字符串
Id sub-item (bukan id pengecekan).
└kind
枚举
Jenis sub-item. Perhatikan nilainya text, bukan script yang dipakai secara internal — konsisten dengan jalur endpoint per item.Nilai yang tersedia: textimagevideo
└checkId
字符串
Id pengecekan per item yang bersesuaian. Pakai untuk memanggil /text|image|video/checks/{id} guna mengambil detail lengkap.
└index
数字
Indeks urutan sub-item saat dikirim.
└status
枚举
Status sub-item.Nilai yang tersedia: processingSedang diprosescompletedSelesaifailedGagal
└riskLevel
对象
Kesimpulan sub-item. Untuk teks: safe/low/medium/high; untuk gambar dan video: PASS/REVIEW/REJECT.
└summary
对象
Hitungan sub-item.
└violation
数字
Jumlah pelanggaran.
└sceneHint
数字
Jumlah catatan skenario.
└text
字符串
Sub-item teks: teks asli.
└riskCount
数字
Sub-item teks: jumlah risiko.
└image
对象
Sub-item gambar: URL dan judul.
└video
对象
Sub-item video: URL, judul, dan durasi.
└labels
数组<字符串>
Sub-item gambar / video: label risiko.
└transcriptStatus
对象
Sub-item video: status transkripsi lisan.
createdAt
对象
Waktu dibuat.
finishedAt
对象
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
字符串
Id data yang dihapus.
object
字符串
Tipe objek.
deleted
布尔
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.(长度 0–100)
matchType
枚举
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
字符串
Kata pengganti. Setelah diisi, hasil kecocokan akan membawa replacement yang bisa dipakai untuk penggantian presisi sekali klik; bila dikosongkan, sistem hanya mengingatkan.(长度 0–100)
note
字符串
Catatan, hanya Anda yang bisa melihatnya.(长度 0–200)
enabled
布尔
Apakah aktif. Setelah dinonaktifkan, data tetap tersimpan tetapi tidak ikut dalam pengecekan.Default true
Respons201
Field
Tipe
Keterangan
id
字符串
Id aturan.
object
字符串
Tipe objek.
keyword
字符串
Kata yang dicek.
matchType
枚举
Cara pencocokan.Nilai yang tersedia: keywordCocok sub-stringphraseCocok batas kata
replacement
对象
Kata pengganti; kosong berarti hanya mengingatkan.
note
对象
Catatan, hanya Anda yang bisa melihatnya.
enabled
布尔
Apakah aktif.
createdAt
对象
Waktu dibuat.
updatedAt
对象
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
字符串
Tipe objek, selalu list.
data
数组<对象>
Seluruh aturan di situs ini (jumlah kamus tidak besar, tanpa halaman).
└id
字符串
Id aturan.
└object
字符串
Tipe objek.
└keyword
字符串
Kata yang dicek.
└matchType
枚举
Cara pencocokan.Nilai yang tersedia: keywordCocok sub-stringphraseCocok batas kata
└replacement
对象
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
数组<对象>
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
字符串
Kata yang akan dicek.(长度 0–100)
└replacement
字符串
Kata pengganti.(长度 0–100)
└note
字符串
Catatan.(长度 0–200)
Respons201
Field
Tipe
Keterangan
object
字符串
Tipe objek.
total
数字
Total kata yang dikirim kali ini.
imported
数字
Jumlah yang benar-benar ditulis.
skippedDuplicate
数字
Jumlah yang dilewati karena duplikat dalam batch atau sudah ada di kamus.
rejectedQuota
数字
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
字符串
Tipe objek.
used
数字
Jumlah terpakai. Kuota bersifat per akun dan dibagi lintas situs — termasuk kata yang Anda daftarkan di situs lain.
limit
数字
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
布尔
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
字符串
Tipe objek.
enabled
布尔
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