Skip to main content
डॉक्यूमेंटेशन
लर्निंग सेंटर

विस्तृत गाइड, ट्यूटोरियल और API डॉक्यूमेंटेशन के साथ कंटेंट मॉडरेशन में महारत हासिल करें

क्विक लिंक

त्वरित शुरुआत गाइड

Discuse के साथ सामग्री मॉडरेट करने के लिए, X-API-Key हेडर और एक JSON बॉडी के साथ https://api.discuse.com/api/v2/check पर POST भेजें, जिसमें वह टेक्स्ट, इमेज URLs या फ़ाइल URLs हों जिन्हें आप जाँचना चाहते हैं। प्रतिक्रिया हर श्रेणी का अलग-अलग विवरण और एक ही has_violations फ़्लैग लौटाती है। यह गाइड आपको पहली कॉल, प्रतिक्रिया फ़ॉर्मैट और बुनियादी एरर हैंडलिंग के बारे में बताती है — शुरू से अंत तक लगभग पाँच मिनट में।

पूर्वापेक्षाएँ

शुरू करने से पहले, सुनिश्चित करें कि आपके पास ये चीज़ें हैं:

  1. एक Discuse अकाउंट (discuse.com पर साइन अप करें)
  2. आपके डैशबोर्ड से मिली API key
  3. HTTP अनुरोध करने का कोई टूल (cURL, Postman, या आपका एप्लिकेशन कोड)

चरण 1: अपनी API key प्राप्त करें

साइन अप करने के बाद, अपने डैशबोर्ड पर जाएँ और API Keys सेक्शन खोजें। नई API key बनाने के लिए "Create New Key" पर क्लिक करें। इस key को सुरक्षित रखें - यह आपके अकाउंट और उपयोग कोटा तक पहुँच देती है।

हर Discuse key disc_ प्रीफ़िक्स से शुरू होती है, उदाहरण के लिए:

disc_aB3dEf6GhIjKlMnOpQrStUvWxYz012345-_6789

चरण 2: अपनी पहली API कॉल करें

API को टेस्ट करने का सबसे आसान तरीका टेक्स्ट विश्लेषण अनुरोध है। यहाँ 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!"
    }
  }'

चरण 3: प्रतिक्रिया को समझें

सफल अनुरोध विश्लेषण परिणामों के साथ JSON प्रतिक्रिया लौटाता है:

{
  "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 केवल तब शामिल होता है जब आपके प्रोजेक्ट सेटिंग्स में टाइमिंग सक्षम हो, और message केवल कोटा-सीमा पार होने वाली प्रतिक्रियाओं पर सेट होता है — इसलिए ऊपर दिए गए उदाहरण में दोनों को छोड़ा गया है।

प्रतिक्रिया फ़ील्ड्स की व्याख्या

Field Description
has_violations Boolean: यदि किसी सक्षम जाँच ने सामग्री को फ़्लैग किया हो तो true (यह results.hits को दर्शाता है)
cached क्या यह परिणाम कैश से दिया गया था (फिर भी कोटा में एक अनुरोध के रूप में गिना जाता है)
results.hits सभी जाँचों में समग्र hit फ़्लैग
results.sentiment 0.0 (सुरक्षित) से 1.0 (बहुत ज़हरीला) तक टॉक्सिसिटी स्कोर, साथ में is_toxic/hit निर्णय फ़्लैग
results.spamfinder स्पैम निर्णय: label, confidence, is_spam (raw) और hit (थ्रेशोल्ड के हिसाब से)
results.language पहचाना गया language कोड और confidence
usage मौजूदा बिलिंग अवधि के लिए आपकी API अनुरोध संख्या, सीमा और बचा हुआ कोटा

चरण 4: इमेज का विश्लेषण करें

किसी इमेज में NSFW सामग्री की जाँच करने के लिए, अपने अनुरोध में इमेज URL शामिल करें:

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: कई जाँचों को एक साथ मिलाएँ

आप एक ही अनुरोध में टेक्स्ट और इमेज का साथ-साथ विश्लेषण कर सकते हैं:

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

इंटीग्रेशन उदाहरण

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']}")

क्या कैशिंग मेरे कोटा में गिनी जाती है?

Discuse समान सामग्री के परिणामों को कुछ मिनटों के लिए कैश करता है। जब प्रतिक्रिया में "cached": true आता है, तो वह कैश से दी गई थी, इसलिए वह तेज़ी से लौटती है और जाँचों को दोबारा चलाने से बचती है। अनुरोध फिर भी आपके कोटा में एक API अनुरोध के रूप में गिना जाता है, लेकिन अंतर्निहित प्रति-फ़ीचर स्कैन (इमेज, एंटीवायरस) के लिए आपसे दोबारा शुल्क नहीं लिया जाता। कैशिंग मुख्य रूप से तब मदद करती है जब वही सामग्री थोड़े समय में बार-बार सबमिट की जाती है।

मैं एरर कैसे हैंडल करूँ?

सफल जाँच HTTP 200 लौटाती है। असफल key, रेट लिमिट या गलत फ़ॉर्मैट वाला अनुरोध non-2xx स्टेटस लौटाता है। ध्यान दें कि कोटा समाप्त होना HTTP एरर नहीं है: जब आपकी बिलिंग अवधि का कोटा पूरा उपयोग हो जाता है, तब भी API has_violations: false और कोटा पार होने की व्याख्या करने वाले message के साथ 200 लौटाती है — इसलिए स्टेटस कोड पर निर्भर रहने के बजाय message और usage फ़ील्ड्स जाँचें।

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

अगले कदम

अब जब आपने अपनी पहली API कॉल कर ली है, तो इन संसाधनों को देखें:

Discuse टीम द्वारा लिखा गया · अंतिम अपडेट June 2026

संबंधित लेख

Content Moderation क्या है?

Content moderation की बुनियादी बातें समझें और जानें कि यह आपके प्लेटफ़ॉर्म के लिए क्यों महत्वपूर्ण है

Authentication और API Keys

अनुरोधों को authenticate करने और अपनी API keys को सुरक्षित रूप से प्रबंधित करने का तरीका

Error और Response Codes

HTTP statuses, quota-exhausted 200 response, और API errors को सही तरीके से संभालने का तरीका