Hızlı Başlangıç Kılavuzu
Discuse ile içerik moderasyonu yapmak için, denetlenmesini istediğiniz metni, görsel URL’lerini veya dosya URL’lerini içeren bir JSON gövdesi ve X-API-Key başlığıyla https://api.discuse.com/api/v2/check adresine bir POST gönderin. Yanıt, kategori bazında bir döküm ve tek bir has_violations bayrağı döndürür. Bu kılavuz, ilk çağrıyı, yanıt formatını ve temel hata yönetimini baştan sona yaklaşık beş dakikada anlatır.
Ön Koşullar
Başlamadan önce şunlara sahip olduğunuzdan emin olun:
- Bir Discuse hesabı (discuse.com adresinden kaydolun)
- Kontrol panelinizden alınmış bir API anahtarı
- HTTP istekleri göndermek için bir araç (cURL, Postman veya uygulama kodunuz)
1. Adım: API Anahtarınızı Alın
Kaydolduktan sonra kontrol panelinize gidin ve API Keys bölümünü bulun. Yeni bir API anahtarı oluşturmak için "Create New Key" düğmesine tıklayın. Bu anahtarı güvende tutun; hesabınıza ve kullanım kotanıza erişim sağlar.
Her Discuse anahtarı disc_ ön ekiyle başlar, örneğin:
disc_aB3dEf6GhIjKlMnOpQrStUvWxYz012345-_6789
2. Adım: İlk API Çağrınızı Yapın
API’yi test etmenin en basit yolu bir metin analizi isteği göndermektir. Aşağıda cURL kullanılan temel bir örnek yer alır:
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!"
}
}'
3. Adım: Yanıtı Anlayın
Başarılı bir istek, analiz sonuçlarını içeren bir JSON yanıtı döndürür:
{
"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 yalnızca proje ayarlarınızda zamanlama etkinleştirildiğinde dahil edilir; message ise yalnızca kota aşımı yanıtlarında ayarlanır — bu yüzden yukarıdaki örnekte ikisi de yer almaz.
Yanıt Alanlarının Açıklaması
| Field | Description |
|---|---|
has_violations |
Boolean: Etkinleştirilmiş kontrollerden herhangi biri içeriği işaretlediyse true olur (results.hits ile aynı değeri yansıtır) |
cached |
Bu sonucun önbellekten sunulup sunulmadığı (yine de kotadan bir istek düşülür) |
results.hits |
Tüm kontroller genelinde genel eşleşme bayrağı |
results.sentiment |
0.0 (güvenli) ile 1.0 (çok toksik) arasında toksisite skorları, ayrıca is_toxic/hit karar bayrakları |
results.spamfinder |
Spam kararı: label, confidence, is_spam (ham değer) ve hit (eşik değerini dikkate alan sonuç) |
results.language |
Algılanan language kodu ve confidence |
usage |
Geçerli faturalandırma dönemi için API istek sayınız, limitiniz ve kalan kotanız |
4. Adım: Bir Görseli Analiz Edin
Bir görseli NSFW içerik açısından kontrol etmek için isteğinize görsel URL’sini ekleyin:
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
}
}'
5. Adım: Birden Fazla Kontrolü Birleştirin
Metinleri ve görselleri tek bir istekte birlikte analiz edebilirsiniz:
{
"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
}
}
Entegrasyon Örnekleri
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']}")
Önbelleğe alma kotamdan düşer mi?
Discuse, aynı içerik için sonuçları birkaç dakika boyunca önbelleğe alır. Bir yanıt "cached": true ile döndüğünde, önbellekten sunulmuş demektir; bu nedenle daha hızlı döner ve kontrollerin yeniden çalıştırılmasını atlar. İstek yine de kotanızdan bir API isteği olarak düşülür, ancak alttaki özellik bazlı taramalar (görsel, antivirüs) için yeniden ücretlendirilmezsiniz. Önbelleğe alma, özellikle aynı içerik kısa bir zaman aralığında tekrar tekrar gönderildiğinde fayda sağlar.
Hataları nasıl yönetirim?
Başarılı bir kontrol HTTP 200 döndürür. Geçersiz anahtar, hız sınırı veya hatalı biçimlendirilmiş istek 2xx olmayan bir durum kodu döndürür. Kota tükenmesinin bir HTTP hatası olmadığını unutmayın: faturalandırma dönemi kotanız tükendiğinde API yine 200 döndürür; has_violations: false ve kotanın aşıldığını açıklayan bir message içerir — durum koduna güvenmek yerine message ve usage alanlarını kontrol edin.
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;
}
Sonraki Adımlar
İlk API çağrınızı yaptığınıza göre şimdi şu kaynakları keşfedin:
- Kimlik Doğrulama ve API Anahtarları - Güvenli anahtar yönetimi hakkında bilgi edinin
- Metin Analizi - Duygu analizi ve spam algılamayı ayrıntılı inceleyin
- Görsel NSFW Algılama - Platformunuzu uygunsuz görsellerden koruyun
- Eşikleri Yapılandırma - Algılama hassasiyetini ince ayarlayın