HomeGetting startedRegistering with an HTTP keyGetting a credential without DiscordServer claim flowReport rules and the block windowVersion check and 426Authentication and server keysThe blocking modelError handlingRate limitsVersions and compatibilityPOST /v1/servers/claimPOST /v1/servers/reportPOST /v1/servers/revokePOST /plugin/v1/claimPOST /plugin/v1/reportGET /plugin/v1/versionGET /maps/{seed}GET /jobs/{seed}GET /seedsGET /stats/overviewGET /stats/protectionAPI changelog
Blocking API
POST
/api/v1/servers/report
Announces the seed of the current round. The block-window rules are identical to the plugin path: the first report opens the window, which lasts up to 1 hour for a self-claim key and up to 20 minutes for a Discord HTTP key. A self-claim key works only from the registered IP; a Discord HTTP key works from anywhere.
Request headers
| Header | Value | Description |
|---|---|---|
| Authorization | Bearer slsrv_… | The server key from self-claim or a Discord HTTP key. |
| Content-Type | application/json | UTF-8 JSON. |
| User-Agent | MyServer/1.0 | Recommended. Your implementation name and version. |
Request body
| Field | In | Type | Required | Description |
|---|---|---|---|---|
| event | body | string | required | round_start · round_end · periodic. |
| seed | body | integer | required | 1..2147483647. For round_end, the seed of that round. |
| port | body | integer | required | 1..65535. The game server port. |
| roundId | body | string | optional | 1..64 characters. |
| roundStartedAt | body | string | optional | ISO-8601 UTC. |
| elapsedSeconds | body | number | optional | 0 or more. |
Responses
| Status | Body | When |
|---|---|---|
| 200 | {"ok":true,"blockedUntil":"2026-09-15T08:05:00Z"} | Accepted. blockedUntil is when the block window for this seed ends, or null if there is none. |
| 400 | {"error":"invalid request"} | Malformed request. |
| 401 | {"error":"invalid credential"} | Unknown or revoked credential, or a report from an IP other than the registered one. Stop reporting and claim again. |
| 429 | {"error":"rate limited"} | More than 12 requests per minute for this credential, or 120 per minute from this IP. |
| 503 | {"error":"db unavailable"} | Retry shortly. |
Response fields
| Field | Type | null | Description |
|---|---|---|---|
| ok | boolean | no | Always true. |
| blockedUntil | string | yes | When the block window for this seed closes, ISO-8601 UTC. null when there is no window. This is how you tell whether a window opened. |
| exhausted | boolean | only when set | Present as true only when this seed has no block budget left. No window opened. |
Example
curl -X POST https://slmaps.com/api/v1/servers/report -H "Authorization: Bearer slsrv_..." -H "User-Agent: MyServer/1.0" -H "Content-Type: application/json" -d "{\"event\":\"round_start\",\"seed\":1848055747,\"port\":7777}"Request example
{
"event": "round_start",
"seed": 1848055747,
"port": 7777
}Response example
{
"ok": true,
"blockedUntil": "2026-09-15T08:05:00Z"
}What the plugin does
Always send round_start and round_end. round_end releases the window at once so a finished seed is not hidden any longer. There is no version field here: the minimum-version check applies to the plugin path only.
SLMAPS is the seed-map viewer for SCP: Secret Laboratory. These pages describe the public API of slmaps.com.slmaps.com ·