whiscey.net

Free Minecraft APIs, no key needed

Skins, server status, banners and player lookups for Java and Bedrock. They're all just URLs, so they work in websites, Discord bots, plugins and Skript.

Try:

Loading…

0
API calls so far · - today

Pick an API

Every card has a live example and a link you can copy straight into your project. Open "see all options" to play with the settings.

🎨

Skins

Get any player's skin as a picture: 3D heads, bodies, poses and more.

Player
Pick a lookwaving
Accessories0 / 6
Hold an item
Face
Extras
Live skin render preview
See all options
Every skin URL looks like /render/skin/<name>/<type>?options. Besides the picker above you can set size (16-1024), crop on poses (full, bust, face), a title on card, and a tail color on mermaid. Old Starlight Skins links work too. The full skin reference has every type and option, and /skins is a bigger playground.
📡

Server Status

Check if a server is online and how many people are playing.

Pinging mc.tulipsmp.com…
https://whiscey.net/api/status/mc.tulipsmp.com
See all options
Use host or host:port. Add ?bedrock=true for Bedrock servers. You get back JSON with online, players.online, players.max, version, motd (raw, clean and HTML), the icon and the ping. Offline servers still return 200 with "online": false. Every field →
🖼️

Banners

A live picture of any server that updates every minute.

https://whiscey.net/banner/mc.tulipsmp.com.png
See all options
800x160 with the icon, the MOTD in its real colors, the player count, version and ping. .png or .svg, ?theme=dark|light|pink, and ?bedrock=true for Bedrock. Drop it in an <img>, a Discord embed or a forum post. Banner reference →
🔎

Player Lookup

Turn a name into a UUID, skin and cape, for Java or Bedrock.

Looking up whiscey…
https://whiscey.net/api/player/whiscey
See all options
Pass a Java name, a UUID (with or without dashes), or a Bedrock name the way Floodgate shows it, like .whisceymc. You get uuid, name, edition, skin.url, skin.model (slim or wide), cape and ready-made render links. Every field →
✨

MOTD & Text

Turn color codes into HTML, or a picture of how they look in game.

MOTD preview
See all options
Reads & and § codes, hex (&#ff66cc), and MiniMessage tags like <gradient> and <rainbow>. /api/motd?text= gives you JSON (HTML, plain text, § codes and a chat component), /render/motd.png?text= gives you the picture. MOTD reference → or the MOTD editor.
🌈

RGB Gradients

Make gradient text for names, items and MOTDs in every format.

Open the gradient tool →

Full reference

Everything, in detail. Tap a section to open it.

Rules for every API keys, rate limits, caching, CORS
ThingHow it works
Base URLhttps://whiscey.net
KeyNone. The skin renderer accepts an optional x-skin-key header for whiscey's own plugins, but nobody needs one.
MethodsGET and HEAD. OPTIONS answers CORS preflights.
CORSAccess-Control-Allow-Origin: * on every response, so fetch() works from any site.
Rate limit120 requests a minute per IP across status, banner, player and MOTD. Over that you get 429 with a Retry-After header (seconds). Skin renders are cached for 6 hours and have no per-IP limit; please don't loop through thousands of new names.
CachingServer status and banners: 60 seconds per address. Players: 1 hour (15 minutes for names that don't exist). Skin renders: 6 hours (15 minutes for default Steve/Alex skins). MOTD formatting: 1 day.
FormatJSON is UTF-8 and pretty-printed. Images are PNG (banners can also be SVG; the wave render is GIF).
PrivacyNo IPs or names are stored. Call counts are kept per API and per kind of client (a site's hostname, or "python", "discord" and so on).
Errors what each status code means

Errors come back as JSON: {"error": "what went wrong"}.

CodeWhen
400The address, name or text isn't valid (bad hostname, port out of range, empty ?text=, text over 2000 characters).
403The server address is private or local (localhost, 127.x, 10.x, 192.168.x, 172.16-31.x, link-local, or a domain or SRV record that points at one).
404No such player, or an unknown endpoint or render type.
405Anything other than GET, HEAD or OPTIONS.
429Rate limit reached. Wait for Retry-After seconds.
503Mojang or GeyserMC didn't answer. Try again in a minute.

An offline server is not an error: the status API returns 200 with "online": false.

🎨 Skin renders types, options, poses, accessories, emotes
GET https://whiscey.net/render/skin/<name>/<type>?size=256

3D renders of any skin as PNG. Unknown players get Steve or Alex instead of an error image; only text that can't be a player name returns 404. Response headers x-skin-source (java, bedrock or default) and x-skin-model (slim or classic) say what was drawn. Doc page: Minecraft Skin API.

Render types

TypeWhat you getDefault size
head3D head with the hat layer256 square
face, avatarFlat 2D face with the hat layer256 square
bust3D head, shoulders and chest256 square
default3D full body at an angle512 tall
full3D full body from the front512 tall
skinThe raw skin PNG (64x64, or Steve/Alex)as stored
mojavatarUpper body from above at an angle, cropped square256 square
<pose>A posed full body, see poses512 tall
stickerFull body with a white sticker outline512 tall
chibiBig-head chibi body512 tall
plushiePlushie-style body512 tall
mermaidPixel mermaid icon with a tail320 tall
cardProfile card with the head, name and an optional title600 wide (max 1200)
wave.gifAnimated waving GIF (/render/skin/<name>/wave.gif)256 (max 512)
bakerPreset: body in a chef hat holding a spatula512 tall
tulipPreset: sitting cross-legged holding a tulip512 tall
sunflowerPreset: sitting holding a big sunflower512 tall
furryPreset: waving with fox ears, a fluffy tail and a plushie512 tall

Render options

OptionTypeDefaultNotes
sizeintegersee typeHeight for tall renders (64-1024), side for square ones (16-1024).
overlaybooleantruefalse hides the outer layer (hat, jacket, sleeves, pants).
flipbooleanfalseTurn the body the other way.
cropstringfullPoses only: full, bust or face.
emotestringnoneA face expression, see emotes.
acclistnoneUp to 6 accessories, comma separated (?acc=crown,wings). Also accessories=.
holdstringnoneAn item in the hand, see items.
stickerbooleanfalseAdd the sticker outline to any render.
titlestringnonecard only, up to 40 characters.
tailhex colorfrom skinmermaid only, like ?tail=ff7eb3.
sparklesbooleantruemermaid only.
tailstylestringnormalmermaid only: flat for a flat tail.

Poses

Use the pose as the type: /render/skin/<name>/waving.

readingrunningwalkingwavingsittingsleepingdancingcheerhuggingcrossedrelaxedsit_on_edgeheart_handspeacelying_down_stomachhug_plushiecrisscrosspointing

Aliases also work: wave, sit, run, walk, read, sleep, dance, hug, relax, point, heart, lying, cross_legged, arms_crossed and a few more.

Accessories and held items

acc= crownhalocatearsbunnyearsflowercrownbowpartyhatglassessunglassesheadphoneswingsheartchefhatfoxearsfluffytail

Presets in acc=: baker (chef hat + spatula) and furry (fox ears, fluffy tail, plushie).

hold= spatulatulipplushiesunflower

Emotes

blushhearteyeshappycryangrywinksleepyshockstareyestongue

Aliases: love, smile, sad, mad, tired, surprised, blep, stars.

Starlight Skins links

Starlight Skins shut down. Its link style works here by swapping the domain: /render/<pose>/<name>/<crop>, for example /render/head/Notch/full, /render/default/Notch/bust, /render/mojavatar/Notch/full, /render/reading/Notch/full.

📡 Server status parameters and response fields
GET https://whiscey.net/api/status/<address>

Pings a Minecraft server and returns its status. Doc page: Minecraft Server Status API.

ParameterTypeDefaultNotes
<address>pathrequiredhost or host:port. Hostnames or public IPv4. Without a port, Java uses the _minecraft._tcp SRV record if there is one, then 25565.
bedrockbooleanfalsetrue for a Bedrock server (default port 19132).

Java servers are pinged directly from Cloudflare with the normal server list ping. If that fails (some hosts block Cloudflare, and Cloudflare Spectrum servers like Hypixel can't be reached from a Worker), the API asks mcstatus.io, then mcsrvstat.us, then minetools.eu. Bedrock always goes through them, since Workers can't send UDP. source tells you which one answered.

Response fields

FieldTypeNotes
onlinebooleanWhether the server answered.
addressstringThe address you asked for, cleaned up.
host, portstring, numberHost asked for, and the port actually used (after SRV).
editionstringjava or bedrock.
srv_recordstring | nullThe SRV target (host:port) if the domain has one.
players.online, players.maxnumberPlayer count and slots.
players.samplearrayUp to 20 {name, id} the server chose to show. Many servers hide it or fill it with text.
versionstringVersion name without color codes, like Paper 1.21.4.
version_rawstringThe version name as sent, codes included.
protocolnumber | nullProtocol number. Proxies like Velocity often echo the client's.
motd.rawstringThe MOTD with § codes (hex as §x§r§r§g§g§b§b), lines split by \n.
motd.cleanstringPlain text.
motd.htmlstringHTML with inline-styled <span>s and <br>. Obfuscated text gets class="mc-obfuscated".
iconstring | nullThe 64x64 server icon as a data:image/png;base64, URL.
latency_msnumber | nullTime from Cloudflare to the server's reply. Null when a fallback answered.
secure_chat, moddedboolean | nullFrom the direct ping when the server says.
gamemodestringBedrock only, when the server reports it.
sourcestring | nullping, mcstatus.io, mcsrvstat.us or minetools.eu.
cached_at, cache_secondsstring, numberWhen this result was fetched (ISO time) and how long it's kept (60).
errorstringOnly when offline because the name doesn't resolve.
{
  "online": true,
  "address": "mc.furrysmp.com",
  "host": "mc.furrysmp.com",
  "port": 25565,
  "edition": "java",
  "srv_record": null,
  "players": { "online": 33, "max": 267, "sample": [{ "name": "Stahlflugel", "id": "19b46f54-e957-45bd-873d-7c64d2267858" }] },
  "version": "UniverseSpigot 26.2",
  "version_raw": "UniverseSpigot 26.2",
  "protocol": 775,
  "icon": "data:image/png;base64,iVBORw0KGgo...",
  "latency_ms": 81,
  "secure_chat": null,
  "modded": null,
  "motd": {
    "raw": "§dFurrySMP\n§6Pumpkin Hunt & Trick-or-Treating!",
    "clean": "FurrySMP\nPumpkin Hunt & Trick-or-Treating!",
    "html": "<span style=\"color:#ff55ff\">FurrySMP</span><br>..."
  },
  "source": "ping",
  "cached_at": "2026-10-11T23:04:00.000Z",
  "cache_seconds": 60
}
🔎 Player lookup fields, Java and Bedrock names
GET https://whiscey.net/api/player/<name | uuid | .bedrock_name>

Returns a player's UUID, name, skin, cape and links to every render. Doc page: Minecraft Player API.

FieldTypeNotes
editionstringjava or bedrock.
namestringJava username with correct capitals, or the Xbox gamertag.
uuid, uuid_rawstringWith and without dashes. Bedrock players get their Floodgate UUID.
floodgate_name, xuidstringBedrock only: the in-game Floodgate name and the Xbox user ID.
skin.urlstring | nullThe texture on textures.minecraft.net. Null when the player uses a default skin.
skin.modelstringslim (Alex arms) or wide (Steve arms).
skin.defaultbooleanTrue when there's no custom skin.
capeobject | null{ "url": ... } for Java players with a cape.
rendersobjectReady links: head, face, bust, body, front, skin.
cached_atstringWhen it was looked up.
{
  "edition": "bedrock",
  "name": "whisceymc",
  "floodgate_name": ".whisceymc",
  "xuid": "2535430147830519",
  "uuid": "00000000-0000-0000-0009-01f5d55072f7",
  "uuid_raw": "0000000000000000000901f5d55072f7",
  "skin": { "url": "https://textures.minecraft.net/texture/7c3dceb0...", "model": "wide", "default": false },
  "cape": null,
  "renders": { "head": "https://whiscey.net/render/skin/.whisceymc/head", "...": "..." },
  "cached_at": "2026-10-11T23:04:09.733Z"
}

Java and Bedrock names

  • Java: a username (Notch, 1-25 letters, numbers and _) or a UUID with or without dashes.
  • Bedrock: the name the way Floodgate shows it, with a dot in front and underscores for spaces: .whisceymc is the gamertag "whisceymc". The player needs to have joined any Geyser server once so GeyserMC knows them.
  • Floodgate UUIDs (00000000-0000-0000-xxxx-xxxxxxxxxxxx) are read as Bedrock players; the last 16 hex digits are the XUID.

The same Bedrock rules apply to skin renders: /render/skin/.whisceymc/head.

✨ MOTD formatter parameters and supported codes
GET https://whiscey.net/api/motd?text=<text>
GET https://whiscey.net/render/motd.png?text=<text>

Turns text with color codes into HTML, plain text, § codes and a chat component, or draws it like the game does. Doc page and live editor: Minecraft MOTD Formatter.

ParameterTypeDefaultNotes
textstringrequiredUp to 2000 characters. New lines as a real line break or \n. URL-encode it (& is %26, # is %23).
ampbooleantruefalse to leave & alone and only read §.
minibooleantruefalse to leave <tags> alone.
scaleinteger2PNG only: pixel size, 1-4.
bgbooleantruePNG only: false for a see-through background.

JSON fields: html, plain, legacy (§ codes), component (a chat component you can send with tellraw or Adventure), image (the PNG link).

Supported codes

CodeMeaning
&0-&9, &a-&fThe 16 colors (also with §)
&l &o &n &m &kBold, italic, underline, strikethrough, obfuscated
&rReset
&#RRGGBBHex color (EssentialsX, CMI and most plugins)
&x&R&R&G&G&B&BHex color, Spigot/Bungee style
<#RRGGBB>Hex color, MiniMessage style
<red> <gold> ...Named colors, closed with </red>
<color:#hex>Hex or named color
<bold> <b> <italic> <i> <underlined> <u> <strikethrough> <st> <obfuscated> <obf>Decorations
<gradient:#a:#b[:#c...]>Color gradient across the text
<rainbow>Rainbow across the text
<reset> <newline> <br>Reset, line break

RGB gradients

Need gradient text for a name, an item or a MOTD? The RGB gradient generator makes it in every format (&#, §x, MiniMessage), and you can check the result with the MOTD formatter.

📈 Stats API public call counts
GET https://whiscey.net/api/stats
GET https://whiscey.net/api/stats/<status|banner|player|motd|skins>

Public call counts: { "total": n, "today": n } per API (today is UTC), plus all. Cached 15 seconds, not rate limited. It's what powers the counter at the top of this page.

Code examples

Copy, paste, swap in your own server or player.

<!-- live banner, updates every minute -->
<img src="https://whiscey.net/banner/play.example.com.png?theme=dark" alt="Server status" width="800" height="160">

<!-- player head -->
<img src="https://whiscey.net/render/skin/Notch/head?size=64" alt="Notch">

<!-- a Bedrock player waving with a crown -->
<img src="https://whiscey.net/render/skin/.whisceymc/waving?acc=crown" alt="whisceymc">

FAQ

Is there a free Minecraft API with no key?

Yes. Every whiscey.net Minecraft API is free and needs no key or account: skin renders, server status, server banners, player lookup and the MOTD formatter. There's no paid tier.

How do I get a Minecraft server's player count from an API?

Request https://whiscey.net/api/status/<address>. The JSON has players.online and players.max. Results are cached for 60 seconds.

How do I get a player's skin or head as an image?

Use https://whiscey.net/render/skin/<name>/head for a 3D head, /default for a full body, or a pose like /waving. It works in any img tag, Discord embed or plugin.

What is the rate limit?

120 requests per minute per IP address across the server status, banner, player and MOTD APIs. Going over returns HTTP 429 with a Retry-After header. Skin renders are cached for 6 hours and have no per-IP limit.

Do the APIs work with Bedrock?

Yes. Add ?bedrock=true to the status and banner APIs for Bedrock servers. For players, use the Floodgate name: a dot in front and underscores for spaces, like .whisceymc.

Can I call the APIs from a browser?

Yes. Every endpoint sends Access-Control-Allow-Origin: *, so fetch() works from any website.

Why does my server show offline?

The API couldn't reach it directly or through mcstatus.io, mcsrvstat.us and minetools.eu. Check the address and port, and that the server has enable-status=true. Results are cached for 60 seconds, so a server that just started can take a minute to show up. Private and local addresses are always refused.

How often do banners update?

Every 60 seconds. Discord caches images longer, so add something like ?t=<minute> to the URL to force a fresh one.

Can I use it in a commercial project?

Yes. A link back to whiscey.net/api is appreciated but not required.