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.
https://mc.fizzystudio.xyz/status/v1/:address
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.
Make a REST Request
Send a GET request to the status endpoint with any Minecraft server address.
https://mc.fizzystudio.xyz/status/v1/mc.hypixel.net
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
};
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.
/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.
/icon/v1/:address
alias: /icon/:address
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://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.
{
"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
}
{
"type": "server_offline",
"server": "mc.hypixel.net",
"timestamp": 1678567300
}
{"type":"pong"}
to keep the connection alive.
// Received from server:
{"type": "ping"}
// You must send back:
ws.send(JSON.stringify({ type: "pong" }));
{"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.
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.
The Minecraft server is offline, or the address is unreachable. The response body will contain a
human-readable message field.
You have exceeded your daily request limit for the current plan. Upgrade your plan or wait until the limit resets at midnight UTC.
The API is in maintenance mode. Try again later.
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. |