Skip to main content
Dokumentasi
Pusat Pembelajaran

Kuasai moderasi konten dengan panduan lengkap, tutorial, dan dokumentasi API

Tautan Cepat

Autentikasi dan Kunci API

API Discuse mengautentikasi setiap permintaan dengan kunci API. Kirimkan kunci tersebut di header permintaan X-API-Key (atau sebagai field api_key di body JSON). Kunci diawali dengan prefiks disc_, terikat ke satu proyek, dan hanya ditampilkan secara lengkap satu kali saat dibuat. Panduan ini membahas cara mendapatkan, menggunakan, mengamankan, dan merotasinya.

Bagaimana cara kerja autentikasi Discuse?

Setiap panggilan API harus menyertakan kunci API yang valid. Discuse menggunakannya untuk:

  • Melacak penggunaan terhadap kuota proyek Anda
  • Menerapkan pembatasan laju per kunci untuk mencegah penyalahgunaan
  • Mengaitkan permintaan dengan proyek yang tepat beserta pengaturannya
  • Mengontrol akses ke sumber daya akun Anda

Mendapatkan Kunci API Anda

Langkah 1: Buat Akun

Jika belum, daftar akun Discuse di discuse.com. Anda bisa memulai dengan paket Basic gratis, yang mencakup jatah bulanan permintaan API serta akses ke pemeriksaan teks, spam, bahasa, dan gambar. Lihat halaman harga untuk mengetahui batas terbaru per paket.

Langkah 2: Akses Dashboard

Setelah masuk, buka dashboard Anda. Cari bagian "API Keys" atau "Developer" di menu navigasi.

Langkah 3: Buat Kunci Baru

Klik "Create New API Key" dan, jika perlu, berikan nama atau deskripsi untuk kunci tersebut. Ini membantu Anda mengenali tujuan setiap kunci jika Anda membuat lebih dari satu.

Kunci API baru Anda hanya akan ditampilkan satu kali. Segera salin dan simpan dengan aman - Anda tidak akan bisa melihat kunci lengkapnya lagi.

Menggunakan Kunci API Anda

Sertakan kunci API Anda di header X-API-Key pada setiap permintaan:

curl -X POST https://api.discuse.com/api/v2/check \
  -H "Content-Type: application/json" \
  -H "X-API-Key: disc_aB3dEf6GhIjKlMnOpQrStUvWxYz012345" \
  -d '{
    "content": {
      "text": "Content to analyze"
    }
  }'

Sebagai alternatif, Anda dapat mengirimkan kunci sebagai field api_key di dalam body JSON alih-alih header — header lebih disarankan agar kunci tidak pernah masuk ke log body permintaan.

Contoh JavaScript

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: 'Content to analyze' }
  })
});

Contoh Python

import requests
import os

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': 'Content to analyze'}
    }
)

Praktik Terbaik Keamanan Kunci API

Jangan Pernah Mengekspos Kunci di Kode Sisi Klien

Kunci API tidak boleh pernah disertakan dalam JavaScript yang berjalan di browser. Kode sisi klien dapat dilihat oleh siapa pun yang membuka sumber halaman Anda.

// WRONG - Don't do this!
const API_KEY = 'disc_aB3dEf6...'; // Exposed in browser

// CORRECT - Use a backend proxy
const response = await fetch('/api/moderate', {
  method: 'POST',
  body: JSON.stringify({ text: userInput })
});

Gunakan Variabel Lingkungan

Simpan kunci API di variabel lingkungan, bukan di basis kode Anda:

# .env file (add to .gitignore!)
DISCUSE_API_KEY=disc_aB3dEf6GhIjKlMnOpQrStUvWxYz012345
// Access in Node.js
const apiKey = process.env.DISCUSE_API_KEY;

Rotasi Kunci Secara Berkala

Rotasikan kunci API Anda secara berkala, terutama jika Anda mencurigai kunci tersebut mungkin telah bocor:

  1. Buat kunci API baru
  2. Perbarui aplikasi Anda agar menggunakan kunci baru
  3. Pastikan semuanya berfungsi dengan benar
  4. Cabut kunci lama

Catatan: kunci yang sudah dicabut masih dapat digunakan hingga sekitar 5 menit karena kunci yang telah divalidasi disimpan di cache. Rencanakan rotasi dengan mempertimbangkan jeda singkat tersebut, bukan mengharapkan perpindahan instan.

Gunakan Kunci Terpisah untuk Lingkungan yang Berbeda

Buat kunci API berbeda untuk development, staging, dan production:

Lingkungan Tujuan Kunci
Development Pengujian dan pengembangan lokal
Staging Pengujian pra-produksi
Production Trafik aplikasi live

Dengan begitu, Anda dapat mencabut kunci yang bocor tanpa memengaruhi lingkungan lain.

Bagaimana cara kerja pembatasan laju?

Pembatasan laju berlaku per kunci API, bukan per paket. Setiap kunci memiliki batas requests-per-minute (RPM) yang ditetapkan saat kunci dibuat; jika Anda tidak menentukannya, nilai default-nya adalah 60 permintaan per menit. Kunci yang berbeda pada akun yang sama dapat memiliki batas berbeda, sehingga Anda bisa memberikan RPM yang lebih tinggi untuk layanan dengan throughput tinggi dibandingkan integrasi sekali pakai.

Ketika sebuah kunci melampaui batas RPM-nya, permintaan akan gagal dengan status HTTP 429 Too Many Requests yang message-nya menyatakan bahwa batas laju telah terlampaui. Penghitung pembatasan laju direset dalam jendela bergulir satu menit.

Menangani batas laju

Lakukan backoff dan coba lagi pada 429 (dan pada 5xx sementara). Karena jendelanya satu menit, exponential backoff yang dimulai sekitar satu detik lalu meningkat biasanya bekerja dengan baik:

async function checkWithRetry(content, maxRetries = 3) {
  for (let attempt = 0; attempt < maxRetries; attempt++) {
    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 })
    });

    if (response.status === 429 || response.status >= 500) {
      const delay = 1000 * Math.pow(2, attempt); // 1s, 2s, 4s
      await new Promise(resolve => setTimeout(resolve, delay));
      continue;
    }

    return response.json();
  }
  throw new Error('Max retries exceeded');
}

Respons error apa saja yang bisa saya terima?

Situasi Status HTTP
Permintaan tidak valid (konten kosong, teks lebih dari 10.000 karakter, terlalu banyak URL) 400 validasi permintaan
Kunci API tidak ada atau tidak valid 401
Batas laju terlampaui untuk kunci tersebut 429
Kuota periode penagihan habis 200 dengan message dan usage (bukan status error)

Kuota yang habis memang sengaja tidak dianggap sebagai error HTTP: respons /api/v2/check tetap mengembalikan 200 dengan has_violations: false, sebuah message yang menjelaskan bahwa kuota telah habis, dan objek usage yang menampilkan api_requests_remaining: 0. Periksa field-field tersebut alih-alih mengandalkan kode status. Kegagalan autentikasi mengembalikan 401, pembatasan laju 429, dan kegagalan validasi permintaan 400. Lihat referensi Kode Error dan Respons untuk daftar lengkapnya.

Mengelola Beberapa Kunci

Untuk tim yang lebih besar atau aplikasi yang kompleks, Anda mungkin memerlukan beberapa kunci API:

Kasus Penggunaan untuk Beberapa Kunci

  1. Kunci per lingkungan: Kunci terpisah untuk dev, staging, dan production
  2. Kunci per layanan: Kunci berbeda untuk microservice yang berbeda
  3. Kunci per tim: Pisahkan penggunaan berdasarkan tim untuk penagihan internal
  4. Kunci sementara: Kunci berumur pendek untuk kontraktor atau integrasi

Praktik Terbaik Pengelolaan Kunci

  • Beri nama kunci secara deskriptif: "Production - User Service", "Staging - Backend"
  • Dokumentasikan penggunaan kunci: Simpan catatan tentang kunci mana yang digunakan di mana
  • Siapkan peringatan: Pantau pola penggunaan yang tidak biasa
  • Audit rutin: Tinjau dan bersihkan kunci yang tidak digunakan setiap kuartal

Langkah Berikutnya

Ditulis oleh Tim Discuse · Terakhir diperbarui June 2026

Artikel Terkait

Apa Itu Moderasi Konten?

Memahami dasar-dasar moderasi konten dan mengapa hal ini penting untuk platform Anda

Panduan Mulai Cepat

Mulai menggunakan Discuse API dalam waktu kurang dari 5 menit

Kode Error dan Respons

Status HTTP, respons quota-exhausted 200, dan cara menangani error API dengan benar