API documentation

For websites that work with this panel, e.g. a map vote or a players-online counter. Ask an admin of this panel for a key.

1. Get a key

An admin of this panel adds your site on Settings → API and gives you its key (it starts with rr_).

2. Know the server

Each server has an API ID (e.g. eu-main) shown on the panel's Manage Servers page. It never changes.

3. Call it from your server

Never from JavaScript in a browser - anyone could copy the key from there.

Base URL

base url
https://rerust.rustplayers.com/api/v1

HTTPS only. All answers are JSON, times are UTC (ISO 8601).

Send the key with every request

header
Authorization: Bearer rr_YOUR_SITE_KEY

X-Api-Key: rr_… works too. A key only sees the servers its site was given.

Errors and limits

401Missing, wrong or disabled key.
404Unknown server (or one your key may not use), unknown list, or a map that isn't a ready map of that list.
422The request body is wrong (e.g. no map number).
429Too many requests: 60 per minute per key; after 20 wrong keys an address waits 10 minutes.

Every error answer has a message that explains it:

json
{ "message": "Map 99 is not a ready map of the normal list of this server (it may have been used, expired or removed - fetch the list again)." }
GET /servers - Playing now

For a "playing now" counter on your site. Every server in the answer has players (players on it right now) and the answer has players_total (all servers of your key together). Only the fields for this are shown below - the full answer is under Map votes.

request
curl -H "Authorization: Bearer rr_YOUR_SITE_KEY" \
     https://rerust.rustplayers.com/api/v1/servers
response (shortened)
{
  "players_total": 112,
  "servers": [
    { "slug": "eu-main", "hostname": "EU Main | Monthly | 2x", "status": "online", "players": 87 },
    { "slug": "eu-solo", "hostname": "EU Solo | Weekly", "status": "online", "players": 25 },
    { "slug": "us-east", "hostname": "US East | 2x", "status": "stopped", "players": 0 }
  ]
}

A server that isn't online always counts 0. The panel refreshes the numbers about every 10 seconds, so asking once a minute is plenty - cache the answer on your site rather than calling the API on every page view.

Servers that use RustMaps keep two lists of ready maps: normal (used by regular wipes) and staged (made for Facepunch's forced wipe). Your site reads a list, lets players vote and sends the winner - the next wipe of that list uses it. You can change or clear the winner until the wipe. Without a winner, or when the voted map was used, expired or removed, the wipe picks a map the usual way.

The normal list fills up some days before a regular wipe; the staged list only in the last 1-3 days before the forced wipe. Open your vote when the list has maps, and fetch it again just before you send the winner.

GET /servers - Your servers

The servers this key may use, with their status, players online, the next wipe of each list and the current winners. name is the name in the panel, hostname the name in Rust's server browser.

request
curl -H "Authorization: Bearer rr_YOUR_SITE_KEY" \
     https://rerust.rustplayers.com/api/v1/servers
response
{
  "site": "Vote website",
  "players_total": 87,
  "servers": [
    {
      "slug": "eu-main",
      "name": "EU Main",
      "hostname": "EU Main | Monthly | 2x",
      "status": "online",
      "players": 87,
      "rustmaps": { "generating": true, "in_use": true },
      "next_wipe": {
        "normal": "2026-10-16T18:00:00+00:00",
        "staged": "2026-11-05T19:00:00+00:00"
      },
      "voted_map_id": { "normal": 12, "staged": null }
    }
  ]
}

players / players_total: see Players online above. rustmaps.in_use = the server takes its maps from these lists (otherwise a vote has no effect). next_wipe.staged is null when the panel doesn't handle forced wipes.

GET /servers/{api-id}/maps/{list} - The maps of a list

The maps players can vote on right now. {list} is normal (regular wipes) or staged (Facepunch's forced wipe).

request
curl -H "Authorization: Bearer rr_YOUR_SITE_KEY" \
     https://rerust.rustplayers.com/api/v1/servers/eu-main/maps/normal
response
{
  "server": "eu-main",
  "list": "normal",
  "next_wipe": "2026-10-16T18:00:00+00:00",
  "voted_map_id": null,
  "generating": 1,
  "queued": 1,
  "maps": [
    {
      "id": 12,
      "map_id": "0123456789abcdef0123456789abcdef",
      "size": 3500,
      "seed": 123456789,
      "thumbnail_url": "https://content.rustmaps.com/maps/.../thumbnail.webp",
      "image_url": "https://content.rustmaps.com/maps/.../map_raw_normalized.png",
      "icon_url": "https://content.rustmaps.com/maps/.../map_icons.png",
      "page_url": "https://rustmaps.com/map/0123456789abcdef0123456789abcdef",
      "monuments": { "count": 23, "names": { "Airfield": 1, "Harbor": 2 } },
      "created_at": "2026-10-12T08:00:00+00:00",
      "expires_at": "2026-11-11T08:00:00+00:00",
      "voted": false,
      "voted_at": null
    }
  ]
}

Show thumbnail_url or icon_url (with monument icons) and link page_url. Vote with id. generating = maps still being made, queued = maps waiting for their turn (RustMaps only makes a few at once).

PUT /servers/{api-id}/maps/{list}/vote - Send the winner

The next wipe of that list uses this map. Sending another map replaces the winner.

request
curl -X PUT -H "Authorization: Bearer rr_YOUR_SITE_KEY" \
     -H "Content-Type: application/json" \
     -d '{"map": 12}' \
     https://rerust.rustplayers.com/api/v1/servers/eu-main/maps/normal/vote
response
{
  "message": "Voted map set.",
  "map": { "id": 12, "voted": true, "voted_at": "2026-10-14T20:00:00+00:00" }
}

The panel's admins get a message for every vote.

DELETE /servers/{api-id}/maps/{list}/vote - Clear the winner

No winner any more - the wipe picks a map the usual way.

request
curl -X DELETE -H "Authorization: Bearer rr_YOUR_SITE_KEY" \
     https://rerust.rustplayers.com/api/v1/servers/eu-main/maps/normal/vote
response
{ "message": "Voted map cleared." }