Millida
Войти
Рейтинг

API голосов

Публичный API: получить список голосов и проверить, проголосовал ли игрок (по Discord или нику). Подходит для Discord-ботов.

Обновлено 16 июня 2026 г.

Публичный API голосов позволяет вашим интеграциям читать голоса сервера: получать список голосов, проверять, проголосовал ли конкретный игрок, и смотреть статистику. Чаще всего его используют, чтобы Discord-бот выдавал роль или награду тем, кто проголосовал.

Доступ только на чтение — изменить голоса через API нельзя.

Получение API-ключа

  1. Откройте карточку своего сервера и пройдите верификацию владельца.
  2. В настройках сервера откройте раздел «API-ключи» и нажмите «Создать ключ».
  3. Скопируйте ключ вида rsk_live_… — он показывается один раз. Храните его как пароль.

Ключ можно ограничить одним сервером или выдать на все ваши серверы. Скомпрометированный ключ отзовите в том же разделе и создайте новый.

Важно: не публикуйте ключ в открытом коде, репозитории или конфиге бота в публичном доступе. Если ключ утёк — отзовите его.

Базовый адрес и авторизация

Базовый адрес: https://api.millida.trade/v2/rating/api

Ключ передаётся в заголовке X-Api-Key (или Authorization: Bearer …):

curl https://api.millida.trade/v2/rating/api/stats \
  -H "X-Api-Key: rsk_live_ВАШ_КЛЮЧ"

Если ключ выдан на все серверы тенанта, к каждому запросу добавляйте параметр serverId. Для ключа, привязанного к одному серверу, этот параметр можно не указывать.

Проверка голоса игрока

Главный сценарий для Discord-бота: «проголосовал ли этот человек». Эндпоинт GET /votes/check.

Параметры:

  • discordId или nickname — кого проверяем (обязателен один из них);
  • since — за какой период: today (по умолчанию), 24h, 7d, 30d;
  • serverId — обязателен, если ключ выдан на все серверы.
curl "https://api.millida.trade/v2/rating/api/votes/check?discordId=123456789012345678&since=today" \
  -H "X-Api-Key: rsk_live_ВАШ_КЛЮЧ"

Ответ:

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

Если voted равно true — игрок отдал засчитанный голос за выбранный период. Учитываются только корректные голоса (накрутка и отклонённые голоса не считаются.)

Про проверку по Discord: голос привязывается к Discord-аккаунту, только если игрок указал его в профиле Millida. Если у части игроков Discord не привязан, проверяйте по nickname или попросите игроков привязать Discord в профиле.

Список голосов

GET /votes возвращает голоса сервера от новых к старым.

Параметры (все необязательные):

  • statusVALID (по умолчанию выводятся все), либо отклонённые;
  • discordId, nickname — фильтр по игроку;
  • from, to — диапазон дат в формате ISO;
  • limit — сколько вернуть (1–200, по умолчанию 50);
  • cursor — курсор следующей страницы из поля nextCursor.
curl "https://api.millida.trade/v2/rating/api/votes?status=VALID&limit=100" \
  -H "X-Api-Key: rsk_live_ВАШ_КЛЮЧ"

Ответ:

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

Чтобы получить следующую страницу, повторите запрос с cursor, равным nextCursor. Когда nextCursor равен null — данные закончились. IP-адреса голосующих через API не передаются.

Статистика

GET /stats отдаёт сводные счётчики по серверу:

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

Пример: Discord-бот выдаёт роль за голос

async function hasVotedToday(discordId) {
  const res = await fetch(
    `https://api.millida.trade/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;
}

Вызовите эту функцию по команде в Discord и выдайте роль, если игрок проголосовал.

Ограничения

  • API только на чтение.
  • Частота запросов ограничена — для проверки по команде этого достаточно с запасом. Не опрашивайте API в плотном цикле.
  • Ключ видит голоса только ваших серверов.