ГлавнаяAPI документация

Vote API

Open Beta

Публичное API для проверки голосов игроков. Подключите его к вашему серверу, чтобы автоматически награждать игроков за голосование на FKDev.

Base URL
https://fkdev.ru
Авторизация
API токен (Bearer)
Rate limit
Без токена: 60/мин · С токеном: 10 000/день

Авторизация

Для работы с API нужен токен. Без токена доступен ограниченный режим (60 запросов/мин по IP), но для продакшена рекомендуется получить токен.

Как получить токен
  1. Зарегистрируйтесь на FKDev (или войдите через Telegram)
  2. Зайдите в Панель управления
  3. В блоке «API токены» нажмите «Создать токен»
  4. Скопируйте токен — он показывается только один раз
Передача токена
Вариант 1 — Заголовок (рекомендуется)
Authorization: Bearer fkdev_ваш_токен
Вариант 2 — Query-параметр
GET /api/vote/check?server_id=1&nickname=Steve&token=fkdev_ваш_токен
Лимиты
РежимЛимитСчитается по
Без токена60 запросов/минIP адресу
С токеном10 000 запросов/деньТокену
GET

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

GET /api/vote/check?server_id=1&nickname=Steve
Параметры
server_idобяз.ID сервера (число). Можно найти на странице сервера.
nicknameобяз.Ник Minecraft игрока (1-16 символов, латиница и цифры)
periodПериод: 1d (по умолчанию), 7d, 30d
Ответ
voted_todaybooleanГолосовал ли игрок сегодня
voted_atstring|nullДата/время голоса сегодня (ISO)
vote_countnumberКоличество голосов за указанный период
last_votestring|nullДата/время последнего голоса (ISO)
periodstringЗапрошенный период
Пример ответа
{
  "server_id": 1,
  "nickname": "Steve",
  "voted_today": true,
  "voted_at": "2025-04-24T12:30:00.000Z",
  "vote_count": 5,
  "period": "7d",
  "last_vote": "2025-04-24T12:30:00.000Z"
}
GET

Топ голосующих

GET /api/vote/check?server_id=1&top=10&period=30d
Параметры
server_idобяз.ID сервера (число)
topобяз.Количество записей (1-50)
periodПериод: 1d, 7d, 30d (по умолчанию 1d)
Ответ
top_votersarrayМассив объектов с полями:
nicknamestringНик игрока
vote_countnumberКоличество голосов за период
last_votestringДата/время последнего голоса
Пример ответа
{
  "server_id": 1,
  "period": "30d",
  "top_voters": [
    { "nickname": "Steve", "vote_count": 12, "last_vote": "2025-04-24T12:30:00Z" },
    { "nickname": "Alex", "vote_count": 8, "last_vote": "2025-04-23T18:15:00Z" }
  ]
}

Коды ответов

КодОписание
200Успешный запрос
400Неверные параметры (отсутствует server_id или nickname)
401Невалидный, отключённый или отсутствующий токен
429Превышен лимит запросов (60/мин). Заголовок Retry-After: 60
500Внутренняя ошибка сервера

Примеры использования

Java плагин (Bukkit/Spigot)
// Проверка голоса игрока
String API_TOKEN = "fkdev_ваш_токен_здесь";
URL url = new URL("https://fkdev.ru/api/vote/check?server_id=YOUR_ID&nickname=" + player.getName());
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer " + API_TOKEN);
con.setConnectTimeout(5000);

BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String response = in.lines().collect(Collectors.joining());
in.close();

JSONObject json = new JSONObject(response);
if (json.getBoolean("voted_today")) {
    player.sendMessage("§aСпасибо за голос! Получите награду!");
    // Выдача награды
}
cURL
# Проверить голос (с токеном)
curl -H "Authorization: Bearer fkdev_ваш_токен"   "https://fkdev.ru/api/vote/check?server_id=1&nickname=Steve"

# Топ голосующих за 30 дней (токен через параметр)
curl "https://fkdev.ru/api/vote/check?server_id=1&top=10&period=30d&token=fkdev_..."
JavaScript / Fetch
const API_TOKEN = "fkdev_ваш_токен";

const res = await fetch(
  "https://fkdev.ru/api/vote/check?server_id=1&nickname=Steve&period=7d",
  { headers: { "Authorization": "Bearer " + API_TOKEN } }
);
const data = await res.json();

if (data.voted_today) {
  console.log("Игрок голосовал сегодня!");
}
console.log("Голосов за 7 дней:", data.vote_count);
PHP
$token = "fkdev_ваш_токен";

$ctx = stream_context_create([
    'http' => ['header' => "Authorization: Bearer $token"]
]);
$response = file_get_contents(
    "https://fkdev.ru/api/vote/check?server_id=1&nickname=Steve",
    false, $ctx
);
$data = json_decode($response, true);

if ($data['voted_today']) {
    echo "Спасибо за голос!";
}
echo "Голосов: " . $data['vote_count'];

Важно

Токен — не передавайте токен в клиентский код (JS на сайте). Используйте его только на бэкенде вашего сервера/плагина.
CORS — API доступно с любого домена. Заголовок Access-Control-Allow-Origin: * установлен.
Cloudflare — сайт работает через Cloudflare. Rate limit без токена считается по IP.
Кеширование — ответы кешируются на 30 секунд. После голосования данные обновятся в течение 30 секунд.
Обнуление — голоса считаются за скользящее окно (1d/7d/30d), а не за календарный период.
Таймзона — все даты в ответах даны по московскому времени (UTC+3).

Как узнать server_id?

Откройте страницу вашего сервера на мониторинге. В разделе «API для проверки голосов» указан ваш server_id — он выделен оранжевым цветом.

💡 Если не можете найти ID — напишите нам, поможем.