Status MC

API

Dane listy w JSON, dla botów Discorda, stron serwerów i własnych narzędzi.

Adres

Wszystko przez GET, odpowiedź zawsze w JSON, nagłówek CORS ustawiony.

api/public.php

Parametry

ParametrWartośćDo czego
slughost-portjeden serwer zamiast całej listy
online1tylko serwery, które odpowiadają
limit1-500ile pozycji zwrócić, sortowane po graczach
page1, 2, 3…jedna strona listy zamiast całej, z liczbą wszystkich serwerów i stron
per50, 100, 500ile serwerów na stronę, domyślnie 100
keyklucz APIgdy właściciel listy włączył klucze

Przykłady

GET api/public.php GET api/public.php?online=1&limit=10 GET api/public.php?page=2&per=100 GET api/public.php?slug=mc.hypixel.net-25565 curl -H "X-Api-Key: YOUR_API_KEY" https://example.com/api/public.php

Odpowiedź

Skrócony przykład jednego wpisu. Pole pvp to tryb gry (Survival, SkyBlock, MiniGames...), software bywa puste, gdy serwer go nie podaje.

{
  "ok": true,
  "count": 1,
  "generated": 1790457983,
  "servers": [
    {
      "slug": "mc.hypixel.net-25565",
      "name": "Hypixel",
      "host": "mc.hypixel.net",
      "port": 25565,
      "url": "https://hypixel.net",
      "country": "us",
      "pvp": "MiniGames",
      "tags": ["bedwars", "skywars", "skyblock"],
      "online": true,
      "players": 32389,
      "max": 200000,
      "peak": 46587,
      "uptime": 99.54,
      "edition": "java",
      "version": "1.8",
      "software": "",
      "motd": "Hypixel Network [1.8/26.3]\n SKYBLOCK 0.27.1",
      "icon": "api/icon.php?s=mc.hypixel.net-25565",
      "points": 31,
      "checked": 1790457939
    }
  ]
}

Sprawdzenie dowolnego serwera

Pyta serwer na żywo, także taki, którego nie ma na liście. Bez portu: 25565 dla Java, 19132 dla Bedrock.

GET api/status.php?server=mc.hypixel.net GET api/status.php?server=play.example.com:25565 GET api/status.php?host=play.example.com&port=19132&edition=bedrock
PoleZnaczenie
editionjava albo bedrock
players.online, players.max, players.peakgracze online, limit miejsc, szczyt
versionwersja gry, np. 1.21.4 albo 1.8-1.21
version_namewersja dokładnie tak, jak podaje serwer
softwareoprogramowanie serwera: Paper, Spigot, Velocity, Fabric...; bywa puste
protocolnumer protokołu Minecraft
modsliczba modów (Forge, NeoForge)
srvadres z rekordu SRV albo pusty napis
iconczy serwer ma własną ikonę
motdwiadomość dnia (MOTD) z kodami kolorów §
pingczas odpowiedzi w ms
{
  "ok": true,
  "server": {
    "host": "mc.hypixel.net",
    "port": 25565,
    "edition": "java",
    "srv": "",
    "online": true,
    "ping": 265,
    "version": "1.8",
    "version_name": "Requires MC 1.8 / 1.21",
    "software": "",
    "protocol": 767,
    "players": { "online": 32329, "max": 200000, "peak": 0 },
    "motd": "§aHypixel Network §c[1.8/26.3]",
    "icon": true,
    "mods": 0
  }
}

Szczegóły serwera z listy

Status, historia graczy, statystyki godzinowe i dzienne, zmiany MOTD.

GET api/server.php?slug=mc.hypixel.net-25565

Ikona serwera

Obrazek PNG 64x64 z ikoną serwera (bez ikony: domyślny blok).

<img src="api/icon.php?s=mc.hypixel.net-25565" width="64" height="64">

Karta podglądu linku

Obrazek PNG 1200x630 z nazwą, adresem, graczami, wersją gry, uptime i trybem gry. Strona serwera podaje go jako og:image, więc tak wygląda link na Discordzie i Facebooku. Język napisów wybierasz parametrem lang (pl, en albo pt).

<img src="api/card.php?s=mc.hypixel.net-25565&lang=en" width="600" height="315">

Nagroda za głos bez otwierania portu

Votifier wymaga otwartego portu 8192: to lista puka do serwera gry. Gdy port jest zamknięty albo serwer akurat się restartuje, głos przepada. Tu jest odwrotnie: plugin na serwerze sam pyta listę o głosy zwykłym zapytaniem HTTP, kiedy chce. Żaden port nie musi być otwarty. Oba sposoby mogą działać jednocześnie.

Uwierzytelnienie: token z panelu serwera (ten sam, którym otwierasz panel), w nagłówku X-Server-Token albo w parametrze token. Nagłówek jest lepszy: adres z tokenem trafia do logów. Gracz wpisuje nick przy głosowaniu na stronie serwera.

ZapytanieDo czego
GET api/votes.php?action=check&username=Steveczy gracz zagłosował w ostatnich 48 h i czy nagroda już wyszła
POST api/votes.php {"action":"claim","username":"Steve"}oznacza najstarszy nieodebrany głos jako nagrodzony; drugi claim tego samego głosu nic nie daje
GET api/votes.php?action=pending&limit=50kolejka głosów czekających na nagrodę (7 dni): po restarcie serwera plugin rozdaje zaległe
GET api/votes.php?action=top&days=30&limit=10ranking głosujących, np. do tablicy w grze

Okno czasu zmienisz parametrem hours (1-720, domyślnie 48): gracz głosuje wieczorem, wchodzi do gry rano i nagroda nadal czeka. Claim jest jednorazowy także przy dwóch równoczesnych wywołaniach, więc restart serwera niczego nie zdubluje. Zły token: HTTP 401.

curl -H "X-Server-Token: YOUR_SERVER_TOKEN" "https://example.com/api/votes.php?action=check&username=Steve"
{ "ok": true, "username": "Steve", "voted": true, "claimed": false, "vote_id": 812, "voted_at": "2026-09-27 08:12:40", "hours": 48 }

curl -X POST -H "X-Server-Token: YOUR_SERVER_TOKEN" -H "Content-Type: application/json" \
     -d '{"action":"claim","username":"Steve"}' https://example.com/api/votes.php
{ "ok": true, "claimed": true, "username": "Steve", "vote_id": 812, "voted_at": "2026-09-27 08:12:40" }

Zasady

Gracze

Osobny endpoint, tylko dla serwerów, które pokazują nicki graczy online.

GET api/players.php?q=notch GET api/players.php?top=1&limit=50 GET api/players.php

Pierwszy szuka graczy po fragmencie nicku (minimum 3 znaki), drugi oddaje ostatnio widzianych graczy, trzeci same liczby zbiorcze i listę serwerów, z których mamy nicki.

Widget i sygnatura

Bez pisania kodu: gotowy obrazek i ramka do wklejenia.

<img src="api/signature.php?slug=mc.hypixel.net-25565&style=1"> <iframe src="widget.php?s=mc.hypixel.net-25565" width="240" height="92" frameborder="0"></iframe>