Panduan Mulai Cepat
Untuk memoderasi konten dengan Discuse, kirim POST ke https://api.discuse.com/api/v2/check dengan header X-API-Key dan body JSON yang berisi teks, URL gambar, atau URL file yang ingin Anda periksa. Respons akan mengembalikan rincian per kategori dan satu flag has_violations. Panduan ini akan memandu Anda melakukan panggilan pertama, memahami format respons, dan menangani error dasar — semuanya sekitar lima menit dari awal hingga selesai.
Prasyarat
Sebelum memulai, pastikan Anda memiliki:
- Akun Discuse (daftar di discuse.com)
- API key dari dashboard Anda
- Alat untuk membuat permintaan HTTP (cURL, Postman, atau kode aplikasi Anda)
Langkah 1: Dapatkan API Key Anda
Setelah mendaftar, buka dashboard Anda dan temukan bagian API Keys. Klik "Create New Key" untuk membuat API key baru. Simpan key ini dengan aman - key ini memberikan akses ke akun dan kuota penggunaan Anda.
Setiap key Discuse diawali dengan prefiks disc_, misalnya:
disc_aB3dEf6GhIjKlMnOpQrStUvWxYz012345-_6789
Langkah 2: Buat Panggilan API Pertama Anda
Cara paling sederhana untuk menguji API adalah dengan permintaan analisis teks. Berikut contoh dasar menggunakan cURL:
curl -X POST https://api.discuse.com/api/v2/check \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{
"content": {
"text": "Hello, this is a test message to analyze!"
}
}'
Langkah 3: Pahami Responsnya
Permintaan yang berhasil akan mengembalikan respons JSON berisi hasil analisis:
{
"has_violations": false,
"cached": false,
"results": {
"hits": false,
"sentiment": {
"is_negative": false,
"is_toxic": false,
"score": 0.03,
"toxic": 0.02,
"profanity": 0.01,
"threat": 0.00,
"insult": 0.03,
"hit": false
},
"spamfinder": {
"label": "ham",
"confidence": 0.08,
"is_spam": false,
"hit": false
},
"language": {
"language": "en",
"confidence": 0.98
}
},
"usage": {
"api_requests_used": 42,
"api_requests_limit": 1000,
"api_requests_remaining": 958
}
}
processing_time_ms hanya disertakan saat pengukuran waktu diaktifkan di pengaturan proyek Anda, dan message hanya diisi pada respons ketika kuota terlampaui — jadi keduanya tidak ditampilkan dalam contoh di atas.
Penjelasan Field Respons
| Field | Deskripsi |
|---|---|
has_violations |
Boolean: true jika ada pemeriksaan yang diaktifkan menandai konten (mencerminkan results.hits) |
cached |
Apakah hasil ini disajikan dari cache (tetap dihitung sebagai satu permintaan terhadap kuota) |
results.hits |
Flag hit keseluruhan di semua pemeriksaan |
results.sentiment |
Skor toksisitas dari 0.0 (aman) hingga 1.0 (sangat toksik), beserta flag keputusan is_toxic/hit |
results.spamfinder |
Keputusan spam: label, confidence, is_spam (mentah) dan hit (mempertimbangkan ambang batas) |
results.language |
Kode language yang terdeteksi dan confidence |
usage |
Jumlah permintaan API, batas, dan sisa kuota Anda untuk periode penagihan saat ini |
Langkah 4: Analisis Gambar
Untuk memeriksa gambar terkait konten NSFW, sertakan URL gambar dalam permintaan Anda:
curl -X POST https://api.discuse.com/api/v2/check \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{
"content": {
"image_urls": ["https://example.com/image.jpg"]
},
"settings": {
"check_images": true
}
}'
Langkah 5: Gabungkan Beberapa Pemeriksaan
Anda dapat menganalisis teks dan gambar sekaligus dalam satu permintaan:
{
"content": {
"text": "Check out this amazing photo!",
"image_urls": ["https://example.com/photo.jpg"]
},
"settings": {
"check_sentiment": true,
"check_spam": true,
"check_images": true,
"check_language": true
}
}
Contoh Integrasi
JavaScript/Node.js
async function checkContent(text) {
const response = await fetch('https://api.discuse.com/api/v2/check', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': process.env.DISCUSE_API_KEY
},
body: JSON.stringify({
content: { text }
})
});
return response.json();
}
// Usage
const result = await checkContent('Hello world!');
if (result.has_violations) {
console.log('Content flagged:', result.message);
}
Python
import requests
import os
def check_content(text):
response = requests.post(
'https://api.discuse.com/api/v2/check',
headers={
'Content-Type': 'application/json',
'X-API-Key': os.environ['DISCUSE_API_KEY']
},
json={
'content': {'text': text}
}
)
return response.json()
# Usage
result = check_content('Hello world!')
if result['has_violations']:
print(f"Content flagged: {result['message']}")
Apakah caching dihitung terhadap kuota saya?
Discuse menyimpan hasil dalam cache untuk konten yang identik selama beberapa menit. Saat respons kembali dengan "cached": true, hasil tersebut disajikan dari cache, sehingga respons lebih cepat dan pemeriksaan tidak dijalankan ulang. Permintaan tetap dihitung sebagai satu permintaan API terhadap kuota Anda, tetapi Anda tidak ditagih ulang untuk pemindaian per fitur yang mendasarinya (gambar, antivirus). Caching terutama membantu ketika konten yang sama dikirim berulang kali dalam rentang waktu singkat.
Bagaimana cara menangani error?
Pemeriksaan yang berhasil mengembalikan HTTP 200. Key yang gagal, batas laju, atau permintaan yang tidak valid akan mengembalikan status non-2xx. Perhatikan bahwa habisnya kuota bukanlah error HTTP: ketika kuota periode penagihan Anda habis, API tetap mengembalikan 200 dengan has_violations: false dan message yang menjelaskan bahwa kuota telah terlampaui — periksa field message dan usage, jangan hanya mengandalkan kode status.
try {
const response = await fetch('https://api.discuse.com/api/v2/check', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': apiKey
},
body: JSON.stringify({ content: { text } })
});
if (!response.ok) {
if (response.status === 401 || response.status === 403) {
throw new Error('Invalid or unauthorized API key');
} else if (response.status === 429) {
throw new Error('Rate limit exceeded - slow down requests');
}
throw new Error(`API error: ${response.status}`);
}
const result = await response.json();
// Quota exhaustion is returned as a 200 with a message, not an error status.
if (result.message && result.usage && result.usage.api_requests_remaining === 0) {
console.warn('Quota exceeded:', result.message);
}
return result;
} catch (error) {
console.error('Content check failed:', error);
throw error;
}
Langkah Berikutnya
Sekarang setelah Anda membuat panggilan API pertama, jelajahi sumber daya berikut:
- Autentikasi dan API Keys - Pelajari pengelolaan key yang aman
- Analisis Teks - Pelajari lebih dalam deteksi sentimen dan spam
- Deteksi NSFW pada Gambar - Lindungi platform Anda dari gambar yang tidak pantas
- Mengonfigurasi Ambang Batas - Sesuaikan sensitivitas deteksi