Skip to main content
Dokümantasyon
ÖĞRENME MERKEZİ

Kapsamlı rehberler, eğitimler ve API dokümantasyonuyla içerik moderasyonunda uzmanlaşın

Hızlı Bağlantılar

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:

  1. Bir Discuse hesabı (discuse.com adresinden kaydolun)
  2. Kontrol panelinizden alınmış bir API anahtarı
  3. 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:

Discuse Ekibi tarafından yazıldı · Son güncelleme June 2026

İlgili Makaleler

İçerik Moderasyonu Nedir?

İçerik moderasyonunun temellerini ve platformunuz için neden önemli olduğunu anlayın

Kimlik Doğrulama ve API Anahtarları

İsteklerin kimliğini doğrulama ve API anahtarlarınızı güvenli şekilde yönetme

Hata ve Yanıt Kodları

HTTP durumları, kota tükenmesi 200 yanıtı ve API hatalarını doğru şekilde ele alma