SameOS ~/tools/palworld-rest-api.md

Palworld REST API: the Complete Command Reference

Published 2026-07-26 · SameOS Tools

The Palworld dedicated server ships with a REST API (commands sent as web requests - callable from a browser, script, or anything else) that lets you control the server without joining the game. Announcements, kicks, world saves, graceful shutdowns - all of it goes through this channel. Our own server's automatic backups and browser admin page run entirely on top of it. This article is the whole command set in one table.

Enabling it

Add RESTAPIEnabled=True inside OptionSettings in PalWorldSettings.ini and restart the server; the API opens on port 8212 (changeable via RESTAPIPort). Authentication is HTTP Basic (the simplest scheme - username and password sent along with the request): the username is admin and the password is your AdminPassword setting.

One warning: never expose this port directly to the internet. A single password gates everything up to shutting the server down, and the official docs forbid public exposure. Call it from the same machine (127.0.0.1) or your home network only - if you need it from outside, put an authenticated server in between, like the admin page we built in Part 3.

All 12 endpoints

Every path hangs off http://server:8212/v1/api/. GET reads, POST acts.

MethodPathWhat it doesBody (JSON)
GET /v1/api/info Server name & version -
GET /v1/api/players Online player list -
GET /v1/api/settings Read server settings -
GET /v1/api/metrics Health numbers (FPS, players, uptime) -
GET /v1/api/game-data World actor snapshot (recent addition) -
POST /v1/api/announce Broadcast a message message
POST /v1/api/kick Kick a player userid, message
POST /v1/api/ban Ban a player userid, message
POST /v1/api/unban Lift a ban userid
POST /v1/api/save Save the world -
POST /v1/api/shutdown Announced, saving shutdown waittime, message
POST /v1/api/stop Instant force stop (no save!) -

The userid is the steam_-prefixed value exactly as it appears in the players list. Always shut down with shutdown, not stop - stop cuts the process without saving, which recreates the lost-progress accident we covered in Part 2.

Try it now

# Broadcast (username admin, password = your AdminPassword)
curl -u admin:password -H "Content-Type: application/json" \
     -d '{"message": "Server restarting in 10 minutes"}' \
     http://127.0.0.1:8212/v1/api/announce

# Save, then shut down safely with a 60-second warning
curl -u admin:password -X POST http://127.0.0.1:8212/v1/api/save
curl -u admin:password -H "Content-Type: application/json" \
     -d '{"waittime": 60, "message": "Restarting shortly"}' \
     http://127.0.0.1:8212/v1/api/shutdown

Those two calls (save, then announced shutdown) are also the heart of our automatic backups. Turning the API into browser buttons is Part 3; the things REST cannot do - settings editing and power-on - are Part 4.

Part 3 - Build the browser admin page Part 2 - The save trap and safe shutdown