Skip to content
Rating

API vote

API publik: dapatkan daftar vote dan periksa apakah seorang pemain sudah vote (berdasarkan Discord atau nickname). Cocok untuk bot Discord.

Diperbarui 13 Oktober 2026

API suara publik memungkinkan integrasi Anda membaca suara sebuah server: mengambil daftar suara, memeriksa apakah pemain tertentu sudah memilih, dan melihat statistik. Paling sering digunakan agar bot Discord memberikan rank atau hadiah kepada pemain yang sudah memilih.

Akses bersifat hanya-baca — Anda tidak dapat mengubah suara melalui API.

Mendapatkan kunci API

  1. Buka halaman server Anda dan selesaikan verifikasi pemilik.
  2. Di pengaturan server, buka bagian “API keys” dan klik “Create key”.
  3. Salin kunci yang terlihat seperti rsk_live_… — kunci ini ditampilkan sekali saja. Simpan seperti Anda menyimpan kata sandi.

Anda dapat membatasi kunci untuk satu server saja atau menerbitkannya untuk semua server Anda. Cabut kunci yang bocor di bagian yang sama lalu buat kunci baru.

Penting: jangan publikasikan kunci di kode sumber terbuka, repositori, atau konfigurasi bot yang dapat diakses publik. Jika kunci bocor, cabut kunci tersebut.

Base URL dan otorisasi

Base URL: https://api.millida.net/v2/rating/api

Kunci dikirim melalui header X-Api-Key (atau Authorization: Bearer …):

curl https://api.millida.net/v2/rating/api/stats \
  -H "X-Api-Key: rsk_live_YOUR_KEY"

Jika kunci diterbitkan untuk semua server tenant, tambahkan parameter serverId pada setiap permintaan. Untuk kunci yang terikat pada satu server, parameter ini boleh dihilangkan.

Memeriksa suara pemain

Skenario utama untuk bot Discord: “apakah orang ini sudah memilih”. Endpoint-nya adalah GET /votes/check.

Parameter:

  • discordId atau nickname — siapa yang Anda periksa (salah satu wajib diisi);
  • since — periode: today (default, sejak awal hari dalam UTC) atau jumlah jam atau hari — 24h, 7d, 30d;
  • serverId — wajib jika kunci diterbitkan untuk semua server.
curl "https://api.millida.net/v2/rating/api/votes/check?discordId=123456789012345678&since=today" \
  -H "X-Api-Key: rsk_live_YOUR_KEY"

Respons:

{
  "voted": true,
  "serverId": "srv…",
  "voteId": "clx…",
  "votedAt": "2026-06-16T10:12:00.000Z",
  "discordId": "123456789012345678",
  "nickname": "Steve",
  "since": "2026-06-16T00:00:00.000Z"
}

Jika voted bernilai true, pemain tersebut memberikan suara yang dihitung untuk periode yang dipilih. Hanya suara valid yang dihitung (kecurangan bot dan suara yang ditolak tidak dihitung.)

Tentang pemeriksaan berdasarkan Discord: suara terhubung ke akun Discord hanya jika pemain mencantumkannya di profil Millida mereka. Jika sebagian pemain belum menautkan Discord, periksa berdasarkan nickname atau minta pemain menautkan Discord di profil mereka.

Daftar suara

GET /votes mengembalikan suara server dari yang terbaru hingga terlama.

Parameter (semua opsional):

  • status — VALID, HELD, REJECTED_FRAUD, REJECTED_RATE_LIMIT, REJECTED_NO_PLAY_HISTORY, atau ALL (semua dikembalikan secara default);
  • discordId, nickname — filter berdasarkan pemain;
  • from, to — rentang tanggal dalam format ISO;
  • limit — berapa banyak yang dikembalikan (1–200, default 50);
  • cursor — kursor halaman berikutnya dari kolom nextCursor.
curl "https://api.millida.net/v2/rating/api/votes?status=VALID&limit=100" \
  -H "X-Api-Key: rsk_live_YOUR_KEY"

Respons:

{
  "votes": [
    {
      "id": "clx…",
      "serverId": "srv…",
      "discordId": "123456789012345678",
      "nickname": "Steve",
      "status": "VALID",
      "votedAt": "2026-06-16T10:12:00.000Z"
    }
  ],
  "nextCursor": "eyJ…"
}

Untuk mendapatkan halaman berikutnya, ulangi permintaan dengan cursor diisi nextCursor. Jika nextCursor bernilai null, tidak ada data lagi. Alamat IP pemilih tidak diteruskan melalui API.

Statistik

GET /stats mengembalikan penghitung ringkasan untuk server:

{
  "serverId": "srv…",
  "validToday": 42,
  "valid24h": 50,
  "valid30d": 1280,
  "totalValid": 9001,
  "totalAll": 9500
}

Contoh: bot Discord memberikan role karena memilih

async function hasVotedToday(discordId) {
  const res = await fetch(
    `https://api.millida.net/v2/rating/api/votes/check?discordId=${discordId}&since=today`,
    { headers: { "X-Api-Key": process.env.MILLIDA_RATING_KEY } },
  );
  const data = await res.json();
  return data.voted === true;
}

Panggil fungsi ini dengan perintah Discord dan berikan role jika pemain sudah memilih.

Batasan

  • API bersifat hanya-baca.
  • Laju permintaan dibatasi — itu lebih dari cukup untuk pemeriksaan saat perintah dijalankan. Jangan melakukan polling API dalam loop ketat.
  • Sebuah kunci hanya melihat suara dari server Anda.