API access for developers
The bedrockinfo.com API reports the live status of Minecraft Bedrock Edition servers (players, version, map, game mode) plus history and uptime. Access requires an x-api-key header; keys have a daily request quota.
Getting a key
- Sign in on the My keys page — with Google or an email address (your account is created automatically on first sign-up).
- Create a key and give it a label (e.g. the name of your app or bot).
- Copy the raw key immediately — it is only shown once.
Each key is limited to a daily request quota. Revoked keys stop working instantly.
Authentication
Send the key in the x-api-key header on every request:
x-api-key: bki_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
| 401 | missing or invalid key |
|---|---|
| 403 | key revoked, or origin not allowed for this key |
| 429 | daily quota exceeded |
Endpoints
Machine-readable spec: openapi.json (OpenAPI 3.1, no key required).
Rendered from the live spec: Bedrock Server Info APIv2.0.0
GET /v1/status
Retired — use /status
Answers `410 gone`. The v1 shape was merged into the single status shape.
This endpoint is deprecated.
Tag: Retired
Auth: apiKey (apiKey header)
curl \ -H "x-api-key: YOUR_KEY" \ "https://bedrockinfo-api.bedrockinfo.workers.dev/v1/status"
GET /v2/status
Retired — use /status
Answers `410 gone`. The v2 shape is now the only status shape, without the version prefix.
This endpoint is deprecated.
Tag: Retired
Auth: apiKey (apiKey header)
curl \ -H "x-api-key: YOUR_KEY" \ "https://bedrockinfo-api.bedrockinfo.workers.dev/v2/status"
GET /v2/preview
Retired — use /preview
Answers `410 gone`. Preview moved to an unversioned path.
This endpoint is deprecated.
Tag: Retired
Auth: apiKey (apiKey header)
curl \ -H "x-api-key: YOUR_KEY" \ "https://bedrockinfo-api.bedrockinfo.workers.dev/v2/preview"
GET /v2/featured
Retired — use /featured
Answers `410 gone`. The featured list moved to an unversioned path.
This endpoint is deprecated.
Tag: Retired
Auth: apiKey (apiKey header)
curl \ -H "x-api-key: YOUR_KEY" \ "https://bedrockinfo-api.bedrockinfo.workers.dev/v2/featured"
GET /v2/servers
Retired — use /servers
Answers `410 gone`. The directory moved to an unversioned path.
This endpoint is deprecated.
Tag: Retired
Auth: apiKey (apiKey header)
curl \ -H "x-api-key: YOUR_KEY" \ "https://bedrockinfo-api.bedrockinfo.workers.dev/v2/servers"
GET /v2/summary
Retired — use /servers
Answers `410 gone`. The network aggregate was removed with the front-page chart.
This endpoint is deprecated.
Tag: Retired
Auth: apiKey (apiKey header)
curl \ -H "x-api-key: YOUR_KEY" \ "https://bedrockinfo-api.bedrockinfo.workers.dev/v2/summary"
GET /status
Server status with history
The live ping plus (optionally) player history, uptime and geo data. This is the ONE status shape: the old `/v1/status` and `/v2/status` shapes were merged into it, and both now answer `410`. **Coming from v1 or v2?** `Port`/`IPv4Port` -> `port`, `HostName` -> `host`, `CheckTimestamp`/`CheckTimeStamp` -> `checkedAt`, `Online` -> `online`, `ServerName` -> `name`, `Players` -> `players`, `MaxPlayers` -> `maxPlayers`, `Version` -> `version`, `Protocol` -> `protocol`, `LevelName` -> `levelName`, `GameMode` -> `gameMode`, `ServerId` -> `serverId`, `ServerGuid` -> `serverGuid`, `Edition` -> `edition`, `IPAddress` -> `ip`, `IPVersion` -> `ipVersion`, `LastSeen` -> `lastSeen`, `Uptime` -> `uptime`, `History` -> `history`, `Degraded` -> `degraded`, and `Geo.country_code` -> `geo.countryCode`. History is BUCKETED TO THE HOUR (at most one point per server per hour, `players = -1` while offline), so even a 30-day request returns at most 720 points. Samples are recorded by the background scanner roughly hourly — every 6 h for servers that have been offline for a while — and a server that was never scanned simply has no history yet. Uptime is time-weighted over the samples in the requested window.
Tag: Status— Live server lookups.
Auth: apiKey (apiKey header)
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
server | query | yes | string | `host`, `host:port`, `[ipv6]` or `[ipv6]:port`. |
history | query | no | integer | Days of history to include (0 = live status only). |
curl \ -H "x-api-key: YOUR_KEY" \ "https://bedrockinfo-api.bedrockinfo.workers.dev/status?server=mco.cubecraft.net%3A19132&history=0"
GET /preview
Lightweight live status (single or batch)
Live status only — no history, no geo. Use `?servers=a,b,c` (max 12) to check several servers in one request. Called by the website for its server cards; crawler-friendly (no bot check).
Tag: Network— Aggregate and directory data.
Auth: apiKey (apiKey header)
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
server | query | no | string | |
servers | query | no | string | Comma-separated list, max 12 entries. |
curl \ -H "x-api-key: YOUR_KEY" \ "https://bedrockinfo-api.bedrockinfo.workers.dev/preview?server=mco.cubecraft.net%3A19132&servers=SERVERS"
GET /featured
Featured servers
The curated server list shown on the website home page. Cached for 10 minutes.
Tag: Network— Aggregate and directory data.
Auth: apiKey (apiKey header)
curl \ -H "x-api-key: YOUR_KEY" \ "https://bedrockinfo-api.bedrockinfo.workers.dev/featured"
GET /servers
Tracked-server directory
Paged list of every tracked server with its last player count and lifetime (time-weighted) uptime. Sort by `players`, `uptime`, `name` or `seen` — this doubles as the leaderboard.
Tag: Network— Aggregate and directory data.
Auth: apiKey (apiKey header)
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
limit | query | no | integer | |
offset | query | no | integer | |
sort | query | no | string |
curl \ -H "x-api-key: YOUR_KEY" \ "https://bedrockinfo-api.bedrockinfo.workers.dev/servers?limit=50&offset=0&sort=players"
GET /badge/{address}.svg
Embeddable SVG status badge
A small SVG you can put on your own site, forum or README: server name, online state, players and uptime. No API key (it is a public image), cached for 5 minutes, IP rate limited. Embed it as `<img src="https://api.bedrockinfo.com/badge/play.example.com.svg">`.
Tag: Network— Aggregate and directory data.
Auth: none
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
address | path | yes | string | `host`, `host:port`, `[ipv6]` or `[ipv6]:port`, with the `.svg` suffix. |
curl \ "https://bedrockinfo-api.bedrockinfo.workers.dev/badge/ADDRESS.svg"
GET /account/keys
List your API keys
Tag: Account— Key management (Supabase JWT, not an API key).
Auth: supabaseToken (JWT header)
curl \ -H "x-supabase-token: YOUR_SUPABASE_TOKEN" \ "https://bedrockinfo-api.bedrockinfo.workers.dev/account/keys"
POST /account/keys
Create an API key
The raw key is returned once and never stored — save it immediately. Maximum 5 active keys per account.
Tag: Account— Key management (Supabase JWT, not an API key).
Auth: supabaseToken (JWT header)
curl \ -X POST \ -H "x-supabase-token: YOUR_SUPABASE_TOKEN" \ "https://bedrockinfo-api.bedrockinfo.workers.dev/account/keys"
POST /account/keys/revoke
Revoke one of your keys
Tag: Account— Key management (Supabase JWT, not an API key).
Auth: supabaseToken (JWT header)
curl \ -X POST \ -H "x-supabase-token: YOUR_SUPABASE_TOKEN" \ "https://bedrockinfo-api.bedrockinfo.workers.dev/account/keys/revoke"
GET /account/keys/{hash}/usage
Usage history for one key
Tag: Account— Key management (Supabase JWT, not an API key).
Auth: supabaseToken (JWT header)
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
hash | path | yes | string |
curl \ -H "x-supabase-token: YOUR_SUPABASE_TOKEN" \ "https://bedrockinfo-api.bedrockinfo.workers.dev/account/keys/KEY_HASH/usage"
Fair use
- Responses may be cached briefly — please cache client-side too.
- The API is rate-limited per key per day; do not share keys.
- Occasional latency is normal; a server that is offline returns a 404.