Real-time Minecraft API

Build Minecraft
Server Monitors

MCStatusAPI provides real-time server data via lightning-fast REST endpoints and a live WebSocket feed. Get player counts, MOTDs, icons, and more — instantly.

REST https://mc.fizzystudio.xyz/status/v1/:address
WSS wss://mc.fizzystudio.xyz/ws/v2

Real-time

WebSocket pushes data as it changes — no polling required.

Secure

API key authentication with per-key rate limiting and heartbeats.

🎨

Rich Data

Styled MOTD in clean, raw, and HTML formats plus Base64 icons.

📦

Versioned

Stable v1 REST API alongside the new v2 WebSocket system.

Quick Start

Start querying server status in seconds — no auth required for the REST API on the basic plan.

1

Make a REST Request

Send a GET request to the status endpoint with any Minecraft server address.

GET https://mc.fizzystudio.xyz/status/v1/mc.hypixel.net
2

Connect to WebSocket (v2)

For real-time updates, connect using your API key and subscribe to a server.

const ws = new WebSocket(
  'wss://mc.fizzystudio.xyz/ws/v2?api_key=YOUR_KEY'
);

ws.onopen = () => {
  ws.send(JSON.stringify({
    type: 'subscribe',
    server: 'mc.hypixel.net'
  }));
};

ws.onmessage = ({ data }) => {
  const msg = JSON.parse(data);
  console.log(msg); // Full server status
};
3

Display the Icon

The icon field in the response is a fully formed Base64 data URI.

// msg.icon is already a full data URI:
img.src = msg.icon;
// → data:image/png;base64,iVBORw0K...

Authentication

The REST API (v1) is publicly accessible for the basic plan. The WebSocket v2 feed requires an API Key for access.

🔑 Via Query Parameter

wss://mc.fizzystudio.xyz/ws/v2?api_key=YOUR_API_KEY

📋 Via Authorization Header

Authorization: Bearer YOUR_API_KEY
⚠️

If authentication fails, the connection is immediately rejected with an INVALID_API_KEY error code before any data is transmitted.

Server Status

Returns detailed real-time information about a Minecraft server. Supports both hostnames and IP:port combinations.

GET /status/v1/:address alias: /status/:address

Path Parameters

Parameter Type Required Description
address string Yes Server hostname or IP, optionally with port (e.g., play.hypixel.net or 127.0.0.1:25565)

Response Fields

Field Type Description
online boolean Whether the server is reachable
ip string The hostname you queried
numericIp string Resolved numeric IP address
port number The port used (after SRV resolution)
motd.raw string MOTD with raw Minecraft § color codes
motd.clean string Plain text MOTD, stripped of all formatting
motd.html string MOTD as pre-rendered HTML with inline color styles
players.online number Current online player count
players.max number Maximum player capacity
version string Server version string (e.g., "1.21")
protocol number Minecraft protocol version number
software string | null Server software/brand (e.g., "BungeeCord", "Spigot")
icon string | null Server favicon as a Base64 data URI string
eula_blocked boolean true if the server has been blocked by Mojang

Example Response

{
  "online": true,
  "ip": "mc.hypixel.net",
  "numericIp": "172.65.196.2",
  "port": 25565,
  "motd": {
    "raw": "§f                §aHypixel Network §c[1.8/1.21]",
    "clean": "                Hypixel Network [1.8/1.21]",
    "html": "<span><span style=\"color:#55FF55\">Hypixel Network</span>...</span>"
  },
  "players": {
    "online": 45210,
    "max": 200000
  },
  "version": "Requires MC 1.8 / 1.21",
  "protocol": 47,
  "software": "BungeeCord",
  "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...",
  "eula_blocked": false
}

Server Icon

Returns the server's favicon as a raw PNG image. Useful for displaying server icons in <img> tags without handling Base64 yourself.

GET /icon/v1/:address alias: /icon/:address
Response Content-Type: image/png

Usage in HTML

<!-- Direct image URL -->
<img src="https://mc.fizzystudio.xyz/icon/v1/mc.hypixel.net"
     alt="Hypixel Icon" width="64" height="64">

<!-- Or using the Base64 from the /status endpoint -->
<img src="${msg.icon}" alt="Server Icon">

Real-time Updates

Connect once and receive live server data the moment anything changes. No polling, no delays — pure event-driven updates.

WSS wss://mc.fizzystudio.xyz/ws/v2

Client Messages

Type Payload Description
subscribe {"type": "subscribe", "server": "mc.hypixel.net"} Subscribe to real-time updates for a server
unsubscribe {"type": "unsubscribe", "server": "mc.hypixel.net"} Stop receiving updates for a server
pong {"type": "pong"} Heartbeat reply (required to keep connection alive)

Connection Limits

Limit Default Description
Connections per key 3 Max simultaneous connections from one API key
Subscriptions per connection 10 Max servers monitored per connection
Messages per minute 60 Max inbound messages from client per minute
Heartbeat interval 30s Server sends a ping every 30 seconds
Idle timeout 5 min Connection dropped if idle for 5 minutes

Events

All server→client messages are JSON objects with a type field. Events fire the instant data changes.

status_update Fired when the server comes online, or any detail changes (players, MOTD, version, icon).
{
  "type": "status_update",
  "server": "mc.hypixel.net",
  "online": true,
  "players": {
    "online": 22765,
    "max": 200000,
    "list": []
  },
  "motd": {
    "clean": "Hypixel Network [1.8/1.21] — BUILD BATTLE PLATINUM PALETTE",
    "raw": "§f§aHypixel Network §c[1.8/1.21]...",
    "html": "<span style=\"color:#55FF55\">Hypixel Network</span>..."
  },
  "version": {
    "name": "Requires MC 1.8 / 1.21",
    "protocol": 47
  },
  "icon": "data:image/png;base64,iVBORw0KGgoAAAA...",
  "software": "BungeeCord",
  "eula_blocked": false,
  "latency": 1500,
  "timestamp": 1678567200
}
server_offline Fired when the server becomes unreachable after polling.
{
  "type": "server_offline",
  "server": "mc.hypixel.net",
  "timestamp": 1678567300
}
ping Heartbeat from the server. You MUST reply with {"type":"pong"} to keep the connection alive.
// Received from server:
{"type": "ping"}

// You must send back:
ws.send(JSON.stringify({ type: "pong" }));
subscribed Confirms your subscription was accepted.
{"type": "subscribed", "server": "mc.hypixel.net"}

WebSocket Error Codes

Errors are sent as JSON before the connection is closed.

Code Description Action
INVALID_API_KEY Key not found in database Check the key; re-generate if needed
RATE_LIMIT_EXCEEDED Too many connections or messages Reduce active connections or message frequency
INVALID_SERVER Server address is missing, empty, or too long Provide a valid hostname or IP:port
INVALID_JSON Message body is not valid JSON Ensure you always send valid JSON strings
UNKNOWN_TYPE Unrecognized message type Use only: subscribe, unsubscribe, pong

Plans & Limits

API rate limits are enforced per IP address for REST and per API key for WebSocket. Limits reset every 24 hours.

i

Enterprise customers can request unlimited access (limit set to -1). Contact your server administrator to upgrade your plan.

HTTP Error Codes

Standard HTTP status codes are used for REST API responses.

400 Bad Request

The Minecraft server is offline, or the address is unreachable. The response body will contain a human-readable message field.

429 Too Many Requests

You have exceeded your daily request limit for the current plan. Upgrade your plan or wait until the limit resets at midnight UTC.

503 Service Unavailable

The API is in maintenance mode. Try again later.

500 Internal Server Error

An unexpected error occurred on the server side. If this persists, contact your administrator with the timestamp of your request.

Minecraft-Specific Notes

Issue Description
SRV Records Automatically resolved. Servers like hypixel.net redirect to a non-standard port via SRV DNS records — our API handles this transparently.
EULA Blocked If eula_blocked: true, the server's IP has been blocked by Mojang for ToS violations. The status may still show online.
Network Timeouts If a server takes longer than the configured timeout to respond, it is marked as offline. Recommend retrying with a port appended (e.g., :25565).
Bedrock Edition Bedrock servers are not currently supported. Only Java Edition servers on TCP port 25565 (or SRV-redirected equivalents) are queried.