Open API

Sambungkan pengecekan kepatuhan ke sistem Anda

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.

Base URLhttps://www.byerisk.com/api/v1/intl/idBuat API KeySpesifikasi OpenAPI (JSON) →

Mulai cepat

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"}}

Polling untuk mengambil hasil

bash
curl https://www.byerisk.com/api/v1/intl/id/text/checks/cm5abc… \
  -H "Authorization: Bearer $BYERISK_API_KEY"

# status = completed:
# {
#   "success": true,
#   "data": {
#     "status": "completed",
#     "riskLevel": "high",
#     "summary": { "violation": 6, "sceneHint": 0, "custom": 0 },
#     "risks": [
#       {
#         "kind": "violation",
#         "severity": "high",
#         "matchedText": "ampuh",
#         "startIndex": 15,
#         "endIndex": 20,
#         "category": "Klaim khasiat berlebihan",
#         "legalRef": "Peraturan BPOM No. 3 Tahun 2022"
#       }
#     ]
#   }
# }

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.

DimensiDiisolasi per situs?Keterangan
API KeyYaDibuat terpisah di tiap situs; panggilan lintas situs mengembalikan 401
Saldo kredit, tingkat langgananYaSaldo situs Mandarin tidak bisa dipakai di sini, dan keanggotaan tidak membuka akses lintas situs
Riwayat pengecekan, kamus kata kustomYaKata yang sama disimpan terpisah di tiap situs dan tidak saling memicu
Kuota jumlah kata, sakelar utama kamusTidakHak tingkat akun, dibagi lintas situs
Akun itu sendiri (nomor HP, sesi login)TidakSatu 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.

EndpointNilai riskLevelArti
Pengecekan tekssafe / low / medium / highDiambil dari severity tertinggi di antara pelanggaran yang cocok
Pengecekan gambar dan videoPASS / REVIEW / REJECTSaran 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.

DimensiCakupanKeterangan
TeksKamus aturan platform + peninjauan semantikRegulasi setempat dan aturan platform; peninjauan semantik menangani risiko lintas kalimat dan menyaring positif palsu
GambarRisiko visual + pengenalan tulisan pada gambarPenilaian visual tidak bergantung pada bahasa konten
VideoGambar + audio + naskah lisanNaskah 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.

bash
curl -X POST https://www.byerisk.com/api/v1/intl/id/text/checks \
  -H "Authorization: Bearer $BYERISK_API_KEY" \
  -H "X-End-Tenant: toko-4271" \
  -H "Content-Type: application/json" \
  -d '{ "text": "…", "platform": "tiktok_id", "vertical": "general" }'
DimensiKepemilikanKeterangan
Kamus kata terlarang kustomMasing-masing tenant satuKata milik tenant A tidak akan memicu pengecekan tenant B
Riwayat pengecekan, direktori unggah materiMasing-masing tenant satuEndpoint daftar hanya mengembalikan data X-End-Tenant saat ini, tidak saling terlihat
Saldo kredit, tingkat langgananAkun utama AndaDipotong dari kolam kredit Anda; tidak perlu mengisi saldo untuk tiap tenant
Kuota panggilanPer API KeySeluruh 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.

TindakanBiaya
Pengecekan teksSesuai tarif paket, per panggilan
Penulisan ulang AISesuai tarif paket, per panggilan
Pengecekan video1 kredit / detik
Pengecekan gambar2 kredit / gambar
Pengecekan massal paket materiDihitung per sub-item sesuai tarifnya
Pengelolaan kata kustom, kueri akun, kredensial unggahGratis

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

KodeArtiCara menangani
400Parameter tidak validPerbaiki parameter sesuai pesan error
401Key tidak valid / dicabut / kedaluwarsa, atau bukan milik situs yang Anda panggilPeriksa dulu apakah pesannya menyebut situs tidak cocok, baru pertimbangkan mengganti Key
402Kredit tidak mencukupiIsi ulang lalu coba lagi
403Fitur memerlukan tingkat langganan lebih tinggiNaikkan langganan di situs ini
404Data tidak ada, bukan milik akun Anda, atau milik situs lainPeriksa id dan segmen situs
429Terkena pembatasan lajuMundur dan coba lagi sesuai Retry-After
500Kesalahan sisi serverDapat 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.

https://www.byerisk.com/api/v1/intl/id/openapi.json?lang=id-ID

Pengecekan Teks

POST/v1/intl/id/text/checks

Kirim pengecekan teks

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

FieldTipeKeterangan
textWajibstringTeks yang akan dicek, 10–5000 karakter. Yang dicek adalah konten berbahasa Indonesia itu sendiri, terpisah dari bahasa penjelasan di bawah. (panjang 10–5000)
platformWajibenumPlatform tempat konten akan diterbitkan; menentukan kumpulan aturan platform mana yang dipakai.Nilai yang tersedia: tiktok_idTikTok Indonesiashopee_idShopee IndonesiatokopediaTokopedia
verticalWajibenumIndustri konten. Menyebut industri spesifik = kumpulan aturan umum + kumpulan aturan khusus industri tersebut; general = hanya kumpulan umum.Nilai yang tersedia: generalUmumbeautyKecantikan & perawatanhealthSuplemen kesehatanfoodMakanan & minumanfashionFesyen
explainLocaleenumBahasa 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

FieldTipeKeterangan
idstringId pengecekan ini, dipakai untuk polling hasil.
objectstringTipe objek.
statusstringStatus 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"
  }'
json — respons
{
  "success": true,
  "data": {
    "id": "cms8xhc5x0006sp59vrks7zkf",
    "object": "intl_text_check",
    "status": "processing"
  }
}
GET/v1/intl/id/text/checks

Riwayat pengecekan teks

Dikembalikan berurutan dari yang terbaru, hanya berisi ringkasan (teks dipotong sampai 100 karakter). Hanya menampilkan data situs ini.

Parameter kueri

FieldTipeKeterangan
pagestringNomor halaman, mulai dari 1.Default 1
pageSizestringJumlah data per halaman, maksimum 50.Default 20

Respons200

FieldTipeKeterangan
objectstringTipe objek, selalu list.
pagenumberHalaman saat ini.
pageSizenumberJumlah data per halaman.
totalnumberTotal data yang cocok.
hasMorebooleanApakah masih ada halaman berikutnya.
dataarray<object>Data pada halaman ini.
└idstringId pengecekan.
└objectstringTipe objek.
└statusstringStatus.
└platformstringPlatform penerbitan.
└verticalobjectIndustri konten.
└previewstringRingkasan teks (dipotong sampai 100 karakter). Untuk teks lengkap, panggil endpoint detail.
└riskLevelenumKesimpulan tingkat atas.Nilai yang tersedia: safelowmediumhigh
└riskCountnumberJumlah risiko.
└fixStatusobjectStatus penulisan ulang AI.
└createdAtobjectWaktu dibuat.

Contoh

bash
curl "https://www.byerisk.com/api/v1/intl/id/text/checks" \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — respons
{
  "success": true,
  "data": {
    "object": "list",
    "page": 1,
    "pageSize": 20,
    "total": 128,
    "hasMore": true,
    "data": [
      {
        "id": "string",
        "object": "intl_text_check",
        "status": "string",
        "platform": "string",
        "vertical": null,
        "preview": "string",
        "riskLevel": "safe",
        "riskCount": 0,
        "fixStatus": null,
        "createdAt": null
      }
    ]
  }
}
GET/v1/intl/id/text/checks/{id}

Ambil hasil pengecekan teks

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

FieldTipeKeterangan
idWajibstring

Respons200

FieldTipeKeterangan
idstringId pengecekan.
objectstringTipe objek.
statusenumprocessing berarti pengecekan masih berjalan, coba lagi nanti; hasil final baru ada di risks ketika completed.Nilai yang tersedia: processingSedang diprosescompletedSelesaifailedGagal
platformenumPlatform penerbitan.Nilai yang tersedia: tiktok_idTikTok Indonesiashopee_idShopee IndonesiatokopediaTokopedia
verticalenumIndustri konten.Nilai yang tersedia: generalUmumbeautyKecantikan & perawatanhealthSuplemen kesehatanfoodMakanan & minumanfashionFesyen
textstringTeks asli yang dicek.
riskLevelenumKesimpulan 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
summaryobjectHitungan tiap kategori.
└violationnumberJumlah pelanggaran keras terhadap regulasi / aturan platform.
└sceneHintnumberJumlah catatan batasan skenario.
└customnumberJumlah kecocokan kamus kata kustom. Tidak dihitung ke riskLevel.
└semanticnumberJumlah label risiko semantik (peringatan menyeluruh yang tidak bisa dilokalisasi ke posisi tertentu).
risksarray<object>Risiko kepatuhan satu per satu.
└idobjectId risiko.
└kindenumJenis risiko: violation pelanggaran keras regulasi / platform (wajib diperbaiki); scene-hint catatan batasan skenario.Nilai yang tersedia: violationPelanggaran kerasscene-hintCatatan batasan skenario
└severityenumTingkat keparahan. riskLevel tingkat atas mengambil yang tertinggi di antara seluruh violation.Nilai yang tersedia: highTinggimediumSedanglowRendah
└matchedTextstringPotongan teks asli yang cocok.
└startIndexnumberIndeks 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.
└endIndexnumberIndeks akhir potongan yang cocok; juga bisa bernilai -1.
└categoryobjectKategori risiko, sudah dilokalkan sesuai explainLocale.
└suggestionobjectSaran perbaikan, sudah dilokalkan sesuai explainLocale.
└legalRefobjectRujukan pasal regulasi / aturan platform. Tidak ikut diterjemahkan oleh explainLocale — nomor dan sumber pasal harus dapat diverifikasi.
└sourceenumSumber penilaian: rule kecocokan aturan deterministik; model penilaian model; custom kata kustom.Nilai yang tersedia: rulemodelcustom
customRisksarray<object>Kecocokan kamus kata kustom. Terpisah dari risks dan tidak dihitung ke riskLevel — ini preferensi Anda sendiri, bukan penilaian kepatuhan.
└matchedTextstringPotongan teks asli yang cocok.
└startIndexnumberIndeks awal (bisa bernilai -1).
└endIndexnumberIndeks akhir (bisa bernilai -1).
└replacementobjectKata pengganti yang Anda atur untuk kata ini. Kosong berarti hanya mengingatkan, tanpa saran pengganti.
└noteobjectCatatan yang Anda tulis untuk kata ini.
semanticLabelsarray<string>Peringatan menyeluruh: model menilai ada risiko tetapi tidak dapat menunjuk potongan teks tertentu.
fixStatusobjectStatus penulisan ulang AI: null belum dipicu | processing sedang berjalan | completed selesai | failed gagal.
fixedTextobjectTeks lengkap hasil penulisan ulang AI, terisi setelah penulisan ulang selesai.
createdAtobjectWaktu dibuat (ISO 8601).
updatedAtobjectWaktu pembaruan terakhir (ISO 8601).
Kemungkinan error
404Data tidak ditemukan, bukan milik akun Anda, atau milik situs lain

Contoh

bash
curl "https://www.byerisk.com/api/v1/intl/id/text/checks/{id}" \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — respons
{
  "success": true,
  "data": {
    "id": "string",
    "object": "intl_text_check",
    "status": "processing",
    "platform": "tiktok_id",
    "vertical": "general",
    "text": "string",
    "riskLevel": "safe",
    "summary": {
      "violation": 3,
      "sceneHint": 1,
      "custom": 0,
      "semantic": 2
    },
    "risks": [
      {
        "id": null,
        "kind": "violation",
        "severity": "high",
        "matchedText": "garansi uang kembali",
        "startIndex": 42,
        "endIndex": 62,
        "category": null,
        "suggestion": null,
        "legalRef": "UU No. 8 Tahun 1999 Pasal 9",
        "source": "rule"
      }
    ],
    "customRisks": [
      {
        "matchedText": "string",
        "startIndex": 0,
        "endIndex": 0,
        "replacement": null,
        "note": null
      }
    ],
    "semanticLabels": [
      "string"
    ],
    "fixStatus": null,
    "fixedText": null,
    "createdAt": null,
    "updatedAt": null
  }
}
DELETE/v1/intl/id/text/checks/{id}

Hapus data pengecekan teks

Tidak dapat dipulihkan.

Parameter jalur

FieldTipeKeterangan
idWajibstring

Respons200

FieldTipeKeterangan
idstringId data yang dihapus.
objectstringTipe objek.
deletedbooleanSelalu true.
Kemungkinan error
404Data tidak ditemukan atau milik situs lain

Contoh

bash
curl -X DELETE https://www.byerisk.com/api/v1/intl/id/text/checks/{id} \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — respons
{
  "success": true,
  "data": {
    "id": "string",
    "object": "intl_text_check",
    "deleted": true
  }
}
POST/v1/intl/id/text/checks/{id}/fix

Picu penulisan ulang AI

Memicu penulisan ulang oleh AI untuk pengecekan yang sudah selesai. Langsung kembali, penulisan ulang berjalan di belakang layar.

Polling GET {id}; hasilnya ada di fixedText setelah selesai (fixStatus menjadi completed).

Kredit penulisan ulang dipotong terpisah dan dikembalikan otomatis bila gagal.

Parameter jalur

FieldTipeKeterangan
idWajibstring

Respons201

FieldTipeKeterangan
idstringId pengecekan.
objectstringTipe objek.
fixStatusstringStatus penulisan ulang, bernilai processing setelah diterima.
creditCostnumberKredit yang dipakai penulisan ulang ini.
Kemungkinan error
400Data ini tidak perlu ditulis ulang (tidak ada pelanggaran), atau sudah ada penulisan ulang yang sedang berjalan
402Kredit tidak mencukupi
404Data tidak ditemukan atau milik situs lain

Contoh

bash
curl -X POST https://www.byerisk.com/api/v1/intl/id/text/checks/{id}/fix \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — respons
{
  "success": true,
  "data": {
    "id": "string",
    "object": "intl_text_check",
    "fixStatus": "processing",
    "creditCost": 2
  }
}

Pengecekan Gambar

POST/v1/intl/id/image/checks

Kirim pengecekan gambar

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

FieldTipeKeterangan
imageUrlWajibstringURL 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.
imageTitleWajibstringJudul / nama berkas gambar, untuk mengenalinya kembali di riwayat.
imageSizeWajibnumberUkuran gambar (byte). (minimal 1)
imageWidthnumberLebar gambar (piksel).
imageHeightnumberTinggi gambar (piksel).
verticalenumDeklarasi 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
explainLocaleenumBahasa 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

FieldTipeKeterangan
idstringId pengecekan.
objectstringTipe objek.
statusenumWajib diperiksa: bernilai failed bila mesin pengecekan bermasalah (kredit sudah dikembalikan otomatis, labels kosong); kasus ini tetap mengembalikan 201.Nilai yang tersedia: processingSedang diprosescompletedSelesaifailedGagal
imageobjectInformasi gambar.
└urlstringURL gambar (yang Anda kirim).
└titlestringJudul / nama berkas gambar.
└sizeBytesobjectUkuran (byte).
└widthobjectLebar (piksel).
└heightobjectTinggi (piksel).
verticalenumIndustri yang dideklarasikan saat pengiriman. Hanya pencatatan, tidak memengaruhi penilaian gambar.Nilai yang tersedia: generalUmumbeautyKecantikan & perawatanhealthSuplemen kesehatanfoodMakanan & minumanfashionFesyen
riskLevelenumKesimpulan tingkat atas. ⚠️ Bukan kumpulan nilai yang sama dengan safe/low/medium/high pada pengecekan teks.Nilai yang tersedia: PASSREVIEWREJECT
labelsarray<object>Label risiko yang cocok. Array kosong bila tidak ada risiko.
└descriptionstringLabel risiko, sudah dilokalkan sesuai explainLocale.
└riskLevelenumTingkat untuk label ini sendiri. Data lama tidak memiliki tingkat per label, sehingga bernilai null (kami tidak mengarang nilainya).Nilai yang tersedia: PASSREVIEWREJECT
createdAtobjectWaktu dibuat.
updatedAtobjectWaktu pembaruan terakhir.
Kemungkinan error
400Parameter tidak valid
402Kredit tidak mencukupi

Contoh

bash
curl -X POST https://www.byerisk.com/api/v1/intl/id/image/checks \
  -H "Authorization: Bearer $BYERISK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "imageUrl": "https://cdn.example.com/products/serum-01.jpg",
    "imageTitle": "serum-01.jpg",
    "imageSize": 254112,
    "imageWidth": 1080,
    "imageHeight": 1080,
    "vertical": "general",
    "explainLocale": "zh-CN"
  }'
json — respons
{
  "success": true,
  "data": {
    "id": "string",
    "object": "intl_image_check",
    "status": "processing",
    "image": {
      "url": "string",
      "title": "string",
      "sizeBytes": null,
      "width": null,
      "height": null
    },
    "vertical": "general",
    "riskLevel": "PASS",
    "labels": [
      {
        "description": "色情低俗",
        "riskLevel": "PASS"
      }
    ],
    "createdAt": null,
    "updatedAt": null
  }
}
GET/v1/intl/id/image/checks

Riwayat pengecekan gambar

Dikembalikan berurutan dari yang terbaru, hanya berisi ringkasan.

Parameter kueri

FieldTipeKeterangan
pagestringNomor halaman, mulai dari 1.Default 1
pageSizestringJumlah data per halaman, maksimum 50.Default 20

Respons200

FieldTipeKeterangan
objectstringTipe objek, selalu list.
pagenumberHalaman saat ini.
pageSizenumberJumlah data per halaman.
totalnumberTotal data yang cocok.
hasMorebooleanApakah masih ada halaman berikutnya.
dataarray<object>Data pada halaman ini.
└idstringId pengecekan.
└objectstringTipe objek.
└statusstringStatus.
└imageobjectURL dan judul gambar.
└verticalobjectDeklarasi industri.
└riskLevelenumKesimpulan tingkat atas.Nilai yang tersedia: PASSREVIEWREJECT
└labelsarray<string>Teks label risiko (daftar tidak memuat tingkat per label).
└createdAtobjectWaktu dibuat.

Contoh

bash
curl "https://www.byerisk.com/api/v1/intl/id/image/checks" \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — respons
{
  "success": true,
  "data": {
    "object": "list",
    "page": 1,
    "pageSize": 20,
    "total": 128,
    "hasMore": true,
    "data": [
      {
        "id": "string",
        "object": "intl_image_check",
        "status": "string",
        "image": null,
        "vertical": null,
        "riskLevel": "PASS",
        "labels": [
          "string"
        ],
        "createdAt": null
      }
    ]
  }
}
GET/v1/intl/id/image/checks/{id}

Ambil hasil pengecekan gambar

Menelusuri kembali pengecekan gambar yang sudah dikirim.

Parameter jalur

FieldTipeKeterangan
idWajibstring

Respons200

FieldTipeKeterangan
idstringId pengecekan.
objectstringTipe objek.
statusenumWajib diperiksa: bernilai failed bila mesin pengecekan bermasalah (kredit sudah dikembalikan otomatis, labels kosong); kasus ini tetap mengembalikan 201.Nilai yang tersedia: processingSedang diprosescompletedSelesaifailedGagal
imageobjectInformasi gambar.
└urlstringURL gambar (yang Anda kirim).
└titlestringJudul / nama berkas gambar.
└sizeBytesobjectUkuran (byte).
└widthobjectLebar (piksel).
└heightobjectTinggi (piksel).
verticalenumIndustri yang dideklarasikan saat pengiriman. Hanya pencatatan, tidak memengaruhi penilaian gambar.Nilai yang tersedia: generalUmumbeautyKecantikan & perawatanhealthSuplemen kesehatanfoodMakanan & minumanfashionFesyen
riskLevelenumKesimpulan tingkat atas. ⚠️ Bukan kumpulan nilai yang sama dengan safe/low/medium/high pada pengecekan teks.Nilai yang tersedia: PASSREVIEWREJECT
labelsarray<object>Label risiko yang cocok. Array kosong bila tidak ada risiko.
└descriptionstringLabel risiko, sudah dilokalkan sesuai explainLocale.
└riskLevelenumTingkat untuk label ini sendiri. Data lama tidak memiliki tingkat per label, sehingga bernilai null (kami tidak mengarang nilainya).Nilai yang tersedia: PASSREVIEWREJECT
createdAtobjectWaktu dibuat.
updatedAtobjectWaktu pembaruan terakhir.
Kemungkinan error
404Data tidak ditemukan atau milik situs lain

Contoh

bash
curl "https://www.byerisk.com/api/v1/intl/id/image/checks/{id}" \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — respons
{
  "success": true,
  "data": {
    "id": "string",
    "object": "intl_image_check",
    "status": "processing",
    "image": {
      "url": "string",
      "title": "string",
      "sizeBytes": null,
      "width": null,
      "height": null
    },
    "vertical": "general",
    "riskLevel": "PASS",
    "labels": [
      {
        "description": "色情低俗",
        "riskLevel": "PASS"
      }
    ],
    "createdAt": null,
    "updatedAt": null
  }
}
DELETE/v1/intl/id/image/checks/{id}

Hapus data pengecekan gambar

Penghapusan lunak, sekaligus membersihkan berkas gambar yang telah diunggah secara asinkron.

Parameter jalur

FieldTipeKeterangan
idWajibstring

Respons200

FieldTipeKeterangan
idstringId data yang dihapus.
objectstringTipe objek.
deletedbooleanSelalu true.
Kemungkinan error
404Data tidak ditemukan atau milik situs lain

Contoh

bash
curl -X DELETE https://www.byerisk.com/api/v1/intl/id/image/checks/{id} \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — respons
{
  "success": true,
  "data": {
    "id": "string",
    "object": "intl_text_check",
    "deleted": true
  }
}

Pengecekan Video

POST/v1/intl/id/video/checks

Kirim pengecekan video

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

FieldTipeKeterangan
videoUrlWajibstringURL video, wajib dapat diakses publik. Bila Anda belum punya penyimpanan objek sendiri, panggil dulu endpoint kredensial unggah langsung.
videoTitleWajibstringJudul / nama berkas video.
videoSizeWajibnumberUkuran video dalam satuan MB (bukan byte). Maksimum 1024 (1GB). (nilai 0.01–1024)
videoDurationWajibnumberDurasi video (detik). Biaya dihitung dari nilai ini (1 kredit/detik), mohon laporkan dengan jujur. (minimal 1)
videoWidthnumberLebar video (piksel).
videoHeightnumberTinggi video (piksel).
platformenumPlatform 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
verticalenumIndustri 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

FieldTipeKeterangan
idstringId pengecekan ini, dipakai untuk polling hasil.
objectstringTipe objek.
statusstringStatus 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/video/checks \
  -H "Authorization: Bearer $BYERISK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "videoUrl": "https://cdn.example.com/videos/promo-01.mp4",
    "videoTitle": "promo-01.mp4",
    "videoSize": 12.4,
    "videoDuration": 45,
    "videoWidth": 1080,
    "videoHeight": 1920,
    "platform": "tiktok_id",
    "vertical": "general"
  }'
json — respons
{
  "success": true,
  "data": {
    "id": "cms8xhc5x0006sp59vrks7zkf",
    "object": "intl_text_check",
    "status": "processing"
  }
}
GET/v1/intl/id/video/checks

Riwayat pengecekan video

Dikembalikan berurutan dari yang terbaru, hanya berisi ringkasan.

Parameter kueri

FieldTipeKeterangan
pagestringNomor halaman, mulai dari 1.Default 1
pageSizestringJumlah data per halaman, maksimum 50.Default 20
statusenumFilter berdasarkan status.Nilai yang tersedia: processingSedang diprosescompletedSelesaifailedGagal

Respons200

FieldTipeKeterangan
objectstringTipe objek, selalu list.
pagenumberHalaman saat ini.
pageSizenumberJumlah data per halaman.
totalnumberTotal data yang cocok.
hasMorebooleanApakah masih ada halaman berikutnya.
dataarray<object>Data pada halaman ini.
└idstringId pengecekan.
└objectstringTipe objek.
└statusstringStatus peninjauan video.
└videoobjectURL, judul, dan durasi video.
└verticalobjectDeklarasi industri.
└riskLevelenumKesimpulan tingkat atas.Nilai yang tersedia: PASSREVIEWREJECT
└labelsarray<string>Label risiko.
└transcriptStatusobjectStatus transkripsi lisan.
└createdAtobjectWaktu dibuat.

Contoh

bash
curl "https://www.byerisk.com/api/v1/intl/id/video/checks" \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — respons
{
  "success": true,
  "data": {
    "object": "list",
    "page": 1,
    "pageSize": 20,
    "total": 128,
    "hasMore": true,
    "data": [
      {
        "id": "string",
        "object": "intl_video_check",
        "status": "string",
        "video": null,
        "vertical": null,
        "riskLevel": "PASS",
        "labels": [
          "string"
        ],
        "transcriptStatus": null,
        "createdAt": null
      }
    ]
  }
}
GET/v1/intl/id/video/checks/{id}

Ambil hasil pengecekan video

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),

dan transcriptStatus 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

FieldTipeKeterangan
idWajibstring

Parameter kueri

FieldTipeKeterangan
explainLocaleenumBahasa penjelasan risiko. Bila tidak diisi, digunakan zh-CN.Nilai yang tersedia: zh-CNBahasa Mandarinid-IDBahasa IndonesiaDefault zh-CN

Respons200

FieldTipeKeterangan
idstringId pengecekan.
objectstringTipe objek.
statusenumStatus 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
videoobjectInformasi video.
└urlstringURL video.
└titlestringJudul / nama berkas video.
└sizeMbobjectUkuran (MB).
└durationSecondsobjectDurasi (detik).
└widthobjectLebar (piksel).
└heightobjectTinggi (piksel).
platformenumPlatform yang dipakai untuk pengecekan naskah lisan.Nilai yang tersedia: tiktok_idTikTok Indonesiashopee_idShopee IndonesiatokopediaTokopedia
verticalenumIndustri yang dipakai untuk pengecekan naskah lisan.Nilai yang tersedia: generalUmumbeautyKecantikan & perawatanhealthSuplemen kesehatanfoodMakanan & minumanfashionFesyen
riskLevelenumKesimpulan tingkat atas (gambar + audio).Nilai yang tersedia: PASSREVIEWREJECT
labelsarray<string>Label risiko keseluruhan.
framesarray<object>Kecocokan pada gambar, dengan titik waktu per detik.
└timeSecondsnumberTitik waktu kemunculan gambar yang cocok di dalam video (detik).
└riskLevelenumTingkat untuk gambar ini.Nilai yang tersedia: PASSREVIEWREJECT
└descriptionstringKeterangan kecocokan.
└imageUrlobjectURL cuplikan gambar yang cocok. URL bertanda tangan berumur pendek dan akan kedaluwarsa — simpan sendiri bila Anda perlu menyimpannya jangka panjang.
└ocrTextobjectTulisan yang dikenali di dalam gambar.
audiosarray<object>Kecocokan pada audio, dengan titik awal dan akhir dalam detik.
└startSecondsnumberTitik awal potongan yang cocok (detik).
└endSecondsnumberTitik akhir potongan yang cocok (detik).
└riskLevelenumTingkat untuk potongan ini.Nilai yang tersedia: PASSREVIEWREJECT
└descriptionstringKeterangan kecocokan.
└textobjectTeks suara dari potongan yang cocok.
transcriptobjectTranskripsi lengkap naskah lisan.
transcriptStatusobjectStatus transkripsi lisan: null tidak diaktifkan | processing sedang ditranskripsi | completed | failed | empty tanpa jalur audio. **Selama masih processing, risiko lisan belum lengkap — lanjutkan polling.**
transcriptRisksarray<object>Pelanggaran pada naskah lisan. Diproses oleh mesin yang sama dengan pengecekan teks, dan dihitung setara dengan gambar / audio dalam kesimpulan.
└matchedTextstringPotongan naskah lisan asli yang cocok.
└severityenumTingkat keparahan.Nilai yang tersedia: highTinggimediumSedanglowRendah
└categoryobjectKategori risiko, sudah dilokalkan.
└suggestionobjectSaran perbaikan, sudah dilokalkan.
└legalRefobjectRujukan pasal, tidak ikut diterjemahkan.
└replacementobjectKalimat patuh yang bisa langsung menggantikan matchedText; kosong berarti hanya bisa dihapus.
└startSecondsnumberTitik awal kalimat tempat kecocokan berada (detik), bisa langsung dipakai untuk seek.
└endSecondsnumberTitik akhir kalimat tempat kecocokan berada (detik).
└sentenceobjectKalimat utuh tempat kecocokan berada, sebagai konteks untuk Anda.
└sourceenumSumber penilaian.Nilai yang tersedia: rulemodelcustom
createdAtobjectWaktu dibuat.
updatedAtobjectWaktu pembaruan terakhir.
Kemungkinan error
404Data tidak ditemukan atau milik situs lain

Contoh

bash
curl "https://www.byerisk.com/api/v1/intl/id/video/checks/{id}" \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — respons
{
  "success": true,
  "data": {
    "id": "string",
    "object": "intl_video_check",
    "status": "processing",
    "video": {
      "url": "string",
      "title": "string",
      "sizeMb": null,
      "durationSeconds": null,
      "width": null,
      "height": null
    },
    "platform": "tiktok_id",
    "vertical": "general",
    "riskLevel": "PASS",
    "labels": [
      "string"
    ],
    "frames": [
      {
        "timeSeconds": 12,
        "riskLevel": "PASS",
        "description": "string",
        "imageUrl": null,
        "ocrText": null
      }
    ],
    "audios": [
      {
        "startSeconds": 0,
        "endSeconds": 0,
        "riskLevel": "PASS",
        "description": "string",
        "text": null
      }
    ],
    "transcript": null,
    "transcriptStatus": null,
    "transcriptRisks": [
      {
        "matchedText": "string",
        "severity": "high",
        "category": null,
        "suggestion": null,
        "legalRef": null,
        "replacement": null,
        "startSeconds": 0,
        "endSeconds": 0,
        "sentence": null,
        "source": "rule"
      }
    ],
    "createdAt": null,
    "updatedAt": null
  }
}
DELETE/v1/intl/id/video/checks/{id}

Hapus data pengecekan video

Penghapusan lunak, sekaligus membersihkan berkas video yang telah diunggah secara asinkron.

Parameter jalur

FieldTipeKeterangan
idWajibstring

Respons200

FieldTipeKeterangan
idstringId data yang dihapus.
objectstringTipe objek.
deletedbooleanSelalu true.
Kemungkinan error
404Data tidak ditemukan atau milik situs lain

Contoh

bash
curl -X DELETE https://www.byerisk.com/api/v1/intl/id/video/checks/{id} \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — respons
{
  "success": true,
  "data": {
    "id": "string",
    "object": "intl_text_check",
    "deleted": true
  }
}

Pengecekan Massal Paket Materi

POST/v1/intl/id/batches

Kirim pengecekan massal paket materi

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

FieldTipeKeterangan
nameWajibstringNama paket materi, 1–60 karakter.
platformWajibenumPlatform penerbitan, berlaku untuk seluruh paket.Nilai yang tersedia: tiktok_idTikTok Indonesiashopee_idShopee IndonesiatokopediaTokopedia
verticalWajibenumIndustri konten, berlaku untuk seluruh paket.Nilai yang tersedia: generalUmumbeautyKecantikan & perawatanhealthSuplemen kesehatanfoodMakanan & minumanfashionFesyen
textsarray<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.
imagesarray<object>Sub-item gambar, maksimum 20.
└urlWajibstringURL gambar, dapat diakses publik.
└nameWajibstringJudul / nama berkas gambar.
└sizeWajibnumberUkuran gambar (byte).
└widthnumberLebar (piksel).
└heightnumberTinggi (piksel).
videosarray<object>Sub-item video, maksimum 10.
└urlWajibstringURL video, dapat diakses publik.
└nameWajibstringJudul / nama berkas video.
└sizeWajibnumberUkuran video dalam satuan MB (sama seperti pengecekan video tunggal, bukan byte).
└durationWajibnumberDurasi video (detik), dasar perhitungan biaya.
└widthnumberLebar (piksel).
└heightnumberTinggi (piksel).
explainLocaleenumBahasa penjelasan risiko.Nilai yang tersedia: zh-CNBahasa Mandarinid-IDBahasa IndonesiaDefault zh-CN

Respons201

FieldTipeKeterangan
idstringId pengecekan ini, dipakai untuk polling hasil.
objectstringTipe objek.
statusstringStatus 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

Contoh

bash
curl -X POST https://www.byerisk.com/api/v1/intl/id/batches \
  -H "Authorization: Bearer $BYERISK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Kampanye Ramadan · batch 1",
    "platform": "tiktok_id",
    "vertical": "beauty",
    "texts": [
      "string"
    ],
    "images": [
      {
        "url": "string",
        "name": "string",
        "size": 254112,
        "width": 0,
        "height": 0
      }
    ],
    "videos": [
      {
        "url": "string",
        "name": "string",
        "size": 12.4,
        "duration": 45,
        "width": 0,
        "height": 0
      }
    ],
    "explainLocale": "zh-CN"
  }'
json — respons
{
  "success": true,
  "data": {
    "id": "cms8xhc5x0006sp59vrks7zkf",
    "object": "intl_text_check",
    "status": "processing"
  }
}
GET/v1/intl/id/batches

Daftar paket materi

Dikembalikan berurutan dari yang terbaru, lengkap dengan progres dan kesimpulan tiap paket. Sekaligus mendorong status sebagian paket yang masih berjalan.

Parameter kueri

FieldTipeKeterangan
pagestringNomor halaman, mulai dari 1.Default 1
pageSizestringJumlah data per halaman, maksimum 50.Default 20
explainLocaleenumBahasa 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

Respons200

FieldTipeKeterangan
objectstringTipe objek, selalu list.
pagenumberHalaman saat ini.
pageSizenumberJumlah data per halaman.
totalnumberTotal data yang cocok.
hasMorebooleanApakah masih ada halaman berikutnya.
dataarray<object>Data pada halaman ini.
└idstringId paket materi.
└objectstringTipe objek.
└namestringNama paket materi.
└statusstringStatus paket.
└countsobjectJumlah sub-item per jenis.
└textsnumberJumlah sub-item teks.
└imagesnumberJumlah sub-item gambar.
└videosnumberJumlah sub-item video.
└progressobjectProgres.
└totalnumberTotal sub-item.
└donenumberJumlah sub-item yang selesai.
└percentnumberPersentase penyelesaian (0–100).
└resultobjectKesimpulan paket.
└summaryobjectHitungan seluruh paket.
└violationnumberJumlah pelanggaran.
└sceneHintnumberJumlah catatan skenario.
└createdAtobjectWaktu dibuat.
└finishedAtobjectWaktu selesai.

Contoh

bash
curl "https://www.byerisk.com/api/v1/intl/id/batches" \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — respons
{
  "success": true,
  "data": {
    "object": "list",
    "page": 1,
    "pageSize": 20,
    "total": 128,
    "hasMore": true,
    "data": [
      {
        "id": "string",
        "object": "intl_batch",
        "name": "string",
        "status": "string",
        "counts": {
          "texts": 0,
          "images": 0,
          "videos": 0
        },
        "progress": {
          "total": 12,
          "done": 9,
          "percent": 75
        },
        "result": null,
        "summary": {
          "violation": 0,
          "sceneHint": 0
        },
        "createdAt": null,
        "finishedAt": null
      }
    ]
  }
}
GET/v1/intl/id/batches/{id}

Ambil progres dan hasil paket materi

Setiap pemanggilan sekaligus menyegarkan status sub-item, jadi cukup polling endpoint ini. items[].checkId dipakai untuk mengambil detail lengkap per item.

Parameter jalur

FieldTipeKeterangan
idWajibstring

Parameter kueri

FieldTipeKeterangan
explainLocaleenumBahasa penjelasan risiko. Bila tidak diisi, digunakan zh-CN.Nilai yang tersedia: zh-CNBahasa Mandarinid-IDBahasa IndonesiaDefault zh-CN

Respons200

FieldTipeKeterangan
idstringId paket materi.
objectstringTipe objek.
namestringNama paket materi.
platformenumPlatform penerbitan.Nilai yang tersedia: tiktok_idTikTok Indonesiashopee_idShopee IndonesiatokopediaTokopedia
verticalenumIndustri konten.Nilai yang tersedia: generalUmumbeautyKecantikan & perawatanhealthSuplemen kesehatanfoodMakanan & minumanfashionFesyen
statusenumStatus paket.Nilai yang tersedia: processingSedang diprosescompletedSelesaifailedGagal
progressobjectProgres.
└totalnumberTotal sub-item.
└donenumberJumlah sub-item yang selesai.
└percentnumberPersentase penyelesaian (0–100).
resultenumKesimpulan paket, baru terisi setelah seluruh sub-item selesai.Nilai yang tersedia: PASSREJECT
summaryobjectHitungan seluruh paket.
└violationnumberJumlah pelanggaran.
└sceneHintnumberJumlah catatan skenario.
itemsarray<object>Rincian sub-item.
└idstringId sub-item (bukan id pengecekan).
└kindenumJenis sub-item. Perhatikan nilainya text, bukan script yang dipakai secara internal — konsisten dengan jalur endpoint per item.Nilai yang tersedia: textimagevideo
└checkIdstringId pengecekan per item yang bersesuaian. Pakai untuk memanggil /text|image|video/checks/{id} guna mengambil detail lengkap.
└indexnumberIndeks urutan sub-item saat dikirim.
└statusenumStatus sub-item.Nilai yang tersedia: processingSedang diprosescompletedSelesaifailedGagal
└riskLevelobjectKesimpulan sub-item. Untuk teks: safe/low/medium/high; untuk gambar dan video: PASS/REVIEW/REJECT.
└summaryobjectHitungan sub-item.
└violationnumberJumlah pelanggaran.
└sceneHintnumberJumlah catatan skenario.
└textstringSub-item teks: teks asli.
└riskCountnumberSub-item teks: jumlah risiko.
└imageobjectSub-item gambar: URL dan judul.
└videoobjectSub-item video: URL, judul, dan durasi.
└labelsarray<string>Sub-item gambar / video: label risiko.
└transcriptStatusobjectSub-item video: status transkripsi lisan.
createdAtobjectWaktu dibuat.
finishedAtobjectWaktu selesai.
Kemungkinan error
404Paket materi tidak ditemukan atau milik situs lain

Contoh

bash
curl "https://www.byerisk.com/api/v1/intl/id/batches/{id}" \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — respons
{
  "success": true,
  "data": {
    "id": "string",
    "object": "intl_batch",
    "name": "string",
    "platform": "tiktok_id",
    "vertical": "general",
    "status": "processing",
    "progress": {
      "total": 12,
      "done": 9,
      "percent": 75
    },
    "result": "PASS",
    "summary": {
      "violation": 0,
      "sceneHint": 0
    },
    "items": [
      {
        "id": "string",
        "kind": "text",
        "checkId": "string",
        "index": 0,
        "status": "processing",
        "riskLevel": null,
        "summary": {
          "violation": 0,
          "sceneHint": 0
        },
        "text": "string",
        "riskCount": 0,
        "image": null,
        "video": null,
        "labels": [
          "string"
        ],
        "transcriptStatus": null
      }
    ],
    "createdAt": null,
    "finishedAt": null
  }
}
DELETE/v1/intl/id/batches/{id}

Hapus paket materi

Menghapus paket materi beserta seluruh data pengecekan sub-itemnya secara lunak, sekaligus membersihkan berkas gambar / video yang telah diunggah secara asinkron.

Parameter jalur

FieldTipeKeterangan
idWajibstring

Respons200

FieldTipeKeterangan
idstringId data yang dihapus.
objectstringTipe objek.
deletedbooleanSelalu true.
Kemungkinan error
404Paket materi tidak ditemukan atau milik situs lain

Contoh

bash
curl -X DELETE https://www.byerisk.com/api/v1/intl/id/batches/{id} \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — respons
{
  "success": true,
  "data": {
    "id": "string",
    "object": "intl_text_check",
    "deleted": true
  }
}

Kata Terlarang Kustom

POST/v1/intl/id/custom-rules

Tambah satu kata terlarang kustom

Body permintaan

FieldTipeKeterangan
keywordWajibstringKata 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)
matchTypeenumCara 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
replacementstringKata pengganti. Setelah diisi, hasil kecocokan akan membawa replacement yang bisa dipakai untuk penggantian presisi sekali klik; bila dikosongkan, sistem hanya mengingatkan. (panjang 0–100)
notestringCatatan, hanya Anda yang bisa melihatnya. (panjang 0–200)
enabledbooleanApakah aktif. Setelah dinonaktifkan, data tetap tersimpan tetapi tidak ikut dalam pengecekan.Default true

Respons201

FieldTipeKeterangan
idstringId aturan.
objectstringTipe objek.
keywordstringKata yang dicek.
matchTypeenumCara pencocokan.Nilai yang tersedia: keywordCocok sub-stringphraseCocok batas kata
replacementobjectKata pengganti; kosong berarti hanya mengingatkan.
noteobjectCatatan, hanya Anda yang bisa melihatnya.
enabledbooleanApakah aktif.
createdAtobjectWaktu dibuat.
updatedAtobjectWaktu 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

Contoh

bash
curl -X POST https://www.byerisk.com/api/v1/intl/id/custom-rules \
  -H "Authorization: Bearer $BYERISK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "keyword": "garansi uang kembali",
    "matchType": "keyword",
    "replacement": "kebijakan pengembalian berlaku",
    "note": "string",
    "enabled": false
  }'
json — respons
{
  "success": true,
  "data": {
    "id": "string",
    "object": "intl_custom_rule",
    "keyword": "garansi uang kembali",
    "matchType": "keyword",
    "replacement": null,
    "note": null,
    "enabled": false,
    "createdAt": null,
    "updatedAt": null
  }
}
GET/v1/intl/id/custom-rules

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

FieldTipeKeterangan
objectstringTipe objek, selalu list.
dataarray<object>Seluruh aturan di situs ini (jumlah kamus tidak besar, tanpa halaman).
└idstringId aturan.
└objectstringTipe objek.
└keywordstringKata yang dicek.
└matchTypeenumCara pencocokan.Nilai yang tersedia: keywordCocok sub-stringphraseCocok batas kata
└replacementobjectKata pengganti; kosong berarti hanya mengingatkan.
└noteobjectCatatan, hanya Anda yang bisa melihatnya.
└enabledbooleanApakah aktif.
└createdAtobjectWaktu dibuat.
└updatedAtobjectWaktu pembaruan terakhir.
totalnumberTotal aturan.

Contoh

bash
curl "https://www.byerisk.com/api/v1/intl/id/custom-rules" \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — respons
{
  "success": true,
  "data": {
    "object": "list",
    "data": [
      {
        "id": "string",
        "object": "intl_custom_rule",
        "keyword": "garansi uang kembali",
        "matchType": "keyword",
        "replacement": null,
        "note": null,
        "enabled": false,
        "createdAt": null,
        "updatedAt": null
      }
    ],
    "total": 0
  }
}
PATCH/v1/intl/id/custom-rules/{id}

Ubah kata terlarang kustom

Hanya memperbarui field yang dikirim.

Parameter jalur

FieldTipeKeterangan
idWajibstring

Body permintaan

FieldTipeKeterangan
keywordstringKata yang akan dicek. (panjang 0–100)
replacementstringKata pengganti. (panjang 0–100)
notestringCatatan. (panjang 0–200)
enabledbooleanApakah aktif.

Respons200

FieldTipeKeterangan
idstringId aturan.
objectstringTipe objek.
keywordstringKata yang dicek.
matchTypeenumCara pencocokan.Nilai yang tersedia: keywordCocok sub-stringphraseCocok batas kata
replacementobjectKata pengganti; kosong berarti hanya mengingatkan.
noteobjectCatatan, hanya Anda yang bisa melihatnya.
enabledbooleanApakah aktif.
createdAtobjectWaktu dibuat.
updatedAtobjectWaktu pembaruan terakhir.
Kemungkinan error
404Aturan tidak ditemukan atau milik situs lain

Contoh

bash
curl -X PATCH https://www.byerisk.com/api/v1/intl/id/custom-rules/{id} \
  -H "Authorization: Bearer $BYERISK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "keyword": "string",
    "replacement": "string",
    "note": "string",
    "enabled": false
  }'
json — respons
{
  "success": true,
  "data": {
    "id": "string",
    "object": "intl_custom_rule",
    "keyword": "garansi uang kembali",
    "matchType": "keyword",
    "replacement": null,
    "note": null,
    "enabled": false,
    "createdAt": null,
    "updatedAt": null
  }
}
DELETE/v1/intl/id/custom-rules/{id}

Hapus kata terlarang kustom

Penghapusan permanen, tidak dapat dipulihkan.

Parameter jalur

FieldTipeKeterangan
idWajibstring

Respons200

FieldTipeKeterangan
idstringId data yang dihapus.
objectstringTipe objek.
deletedbooleanSelalu true.
Kemungkinan error
404Aturan tidak ditemukan atau milik situs lain

Contoh

bash
curl -X DELETE https://www.byerisk.com/api/v1/intl/id/custom-rules/{id} \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — respons
{
  "success": true,
  "data": {
    "id": "string",
    "object": "intl_text_check",
    "deleted": true
  }
}
POST/v1/intl/id/custom-rules/bulk-import

Impor massal kata terlarang

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

FieldTipeKeterangan
itemsWajibarray<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.
└keywordWajibstringKata yang akan dicek. (panjang 0–100)
└replacementstringKata pengganti. (panjang 0–100)
└notestringCatatan. (panjang 0–200)

Respons201

FieldTipeKeterangan
objectstringTipe objek.
totalnumberTotal kata yang dikirim kali ini.
importednumberJumlah yang benar-benar ditulis.
skippedDuplicatenumberJumlah yang dilewati karena duplikat dalam batch atau sudah ada di kamus.
rejectedQuotanumberJumlah yang ditolak karena melebihi kuota paket.
Kemungkinan error
403Kata terlarang kustom adalah fitur berbayar; langganan Anda saat ini belum mencakupnya

Contoh

bash
curl -X POST https://www.byerisk.com/api/v1/intl/id/custom-rules/bulk-import \
  -H "Authorization: Bearer $BYERISK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
      {
        "keyword": "string",
        "replacement": "string",
        "note": "string"
      }
    ]
  }'
json — respons
{
  "success": true,
  "data": {
    "object": "intl_custom_rule_import_result",
    "total": 0,
    "imported": 0,
    "skippedDuplicate": 0,
    "rejectedQuota": 0
  }
}
GET/v1/intl/id/custom-rules/quota

Cek kuota kamus

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

FieldTipeKeterangan
objectstringTipe objek.
usednumberJumlah terpakai. Kuota bersifat per akun dan dibagi lintas situs — termasuk kata yang Anda daftarkan di situs lain.
limitnumberBatas kamus pada paket Anda saat ini. Paket gratis bernilai 0.
isPaidbooleanApakah langganan situs ini sedang berbayar.

Contoh

bash
curl "https://www.byerisk.com/api/v1/intl/id/custom-rules/quota" \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — respons
{
  "success": true,
  "data": {
    "object": "intl_custom_rule_quota",
    "used": 12,
    "limit": 500,
    "isPaid": true
  }
}
GET/v1/intl/id/custom-rules/settings

Cek status sakelar utama

Saat dimatikan, seluruh kata kustom tidak ikut dalam pengecekan (data tetap tersimpan). Sakelar ini per akun, tidak dipisah per situs.

Respons200

FieldTipeKeterangan
objectstringTipe objek.
enabledbooleanSakelar utama tingkat akun. Saat dimatikan, seluruh kata kustom tidak ikut dalam pengecekan (data tetap tersimpan).

Contoh

bash
curl "https://www.byerisk.com/api/v1/intl/id/custom-rules/settings" \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — respons
{
  "success": true,
  "data": {
    "object": "intl_custom_rule_settings",
    "enabled": false
  }
}
PATCH/v1/intl/id/custom-rules/settings

Ubah sakelar utama

Ortogonal terhadap enabled tiap aturan: bila sakelar utama dimatikan, enabled per aturan tidak berlaku.

Body permintaan

FieldTipeKeterangan
enabledWajibbooleanSakelar 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

FieldTipeKeterangan
objectstringTipe objek.
enabledbooleanSakelar 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

Contoh

bash
curl -X PATCH https://www.byerisk.com/api/v1/intl/id/custom-rules/settings \
  -H "Authorization: Bearer $BYERISK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "enabled": false
  }'
json — respons
{
  "success": true,
  "data": {
    "object": "intl_custom_rule_settings",
    "enabled": false
  }
}

Akun

GET/v1/intl/id/account

Cek saldo dan pemakaian akun

Mengembalikan saldo kredit, paket langganan, dan jumlah pemakaian tiap jenis pengecekan bulan ini untuk situs ini.

⚠️ Kredit dan langganan diisolasi per situs: saldo di sini tidak mencakup kredit Anda di situs lain, begitu pula sebaliknya.

Disarankan memanggilnya sekali sebelum integrasi untuk memastikan kuota — kalau tidak, Anda baru tahu kredit kurang saat tertabrak 402.

Statistik pemakaian mencakup semua kanal (web, API), bukan hanya panggilan API.

Respons200

FieldTipeKeterangan
objectstringTipe objek.
countrystringSitus tempat panggilan ini berlangsung.
creditsobjectSaldo kredit situs ini. Kredit diisolasi per situs; saldo situs Mandarin tidak termasuk di sini.
└totalnumberTotal kredit yang tersedia di situs ini.
└subscriptionnumberBagian dari bonus langganan.
└activitynumberBagian dari bonus kegiatan.
└boosternumberBagian dari paket tambahan kredit.
└expiringSoonobjectBagian yang akan kedaluwarsa dalam 7 hari; null bila tidak ada.
subscriptionobjectTingkat langganan di situs ini.
usageThisMonthobjectJumlah tiap jenis pengecekan di situs ini bulan ini (bulan kalender), mencakup seluruh kanal web maupun API.

Contoh

bash
curl "https://www.byerisk.com/api/v1/intl/id/account" \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — respons
{
  "success": true,
  "data": {
    "object": "intl_account",
    "country": "id",
    "credits": {
      "total": 8420,
      "subscription": 0,
      "activity": 0,
      "booster": 0,
      "expiringSoon": null
    },
    "subscription": null,
    "usageThisMonth": null
  }
}

Unggah Materi

POST/v1/intl/id/uploads/policy

Ambil kredensial unggah materi

Endpoint ini hanya diperlukan bila Anda belum punya penyimpanan materi yang dapat diakses publik.

Bila materi sudah ada di penyimpanan objek atau CDN Anda sendiri, langsung isikan URL-nya ke endpoint pengecekan dan lewati langkah ini.

Mengembalikan satu kredensial POST Policy untuk unggah langsung lewat form standar:

bash
curl -X POST "$host" \
  -F "key=$dir<nama-berkas-Anda>" \
  -F "policy=$policy" \
  -F "OSSAccessKeyId=$accessKeyId" \
  -F "signature=$signature" \
  -F "file=@./promo-01.mp4"

Setelah unggah berhasil, alamat materi adalah {cdnHost}/{key}; isikan ke videoUrl / imageUrl pada endpoint pengecekan.

Kredensial kedaluwarsa dalam 5 menit dan hanya mengizinkan penulisan ke prefiks direktori khusus akun Anda di situs ini.

Body permintaan

FieldTipeKeterangan
kindWajibenumJenis materi, menentukan batas ukuran: video maksimum 1GB, image maksimum 10MB.Nilai yang tersedia: videoimage

Respons201

FieldTipeKeterangan
objectstringTipe objek.
kindenumJenis materi.Nilai yang tersedia: videoimage
hoststringAlamat tujuan unggah langsung (form di-POST ke sini).
cdnHoststringDomain akses materi setelah unggah berhasil; alamat materi = {cdnHost}/{key}.
dirstringPrefiks direktori yang boleh ditulisi. key wajib diawali dengannya, kalau tidak akan ditolak.
policystringKebijakan unggah (base64).
accessKeyIdstringAccessKeyId untuk unggah langsung.
signaturestringTanda tangan kebijakan.
maxSizeBytesnumberBatas ukuran untuk jenis materi ini (byte).
expiresAtstringWaktu kedaluwarsa kredensial (ISO 8601), hangus setelah 5 menit.

Contoh

bash
curl -X POST https://www.byerisk.com/api/v1/intl/id/uploads/policy \
  -H "Authorization: Bearer $BYERISK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "kind": "video"
  }'
json — respons
{
  "success": true,
  "data": {
    "object": "intl_upload_policy",
    "kind": "video",
    "host": "string",
    "cdnHost": "string",
    "dir": "string",
    "policy": "string",
    "accessKeyId": "string",
    "signature": "string",
    "maxSizeBytes": 0,
    "expiresAt": "string"
  }
}