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/plugin/v1/report
Announces the seed of the current round. The first report opens a block window; while it lasts the seed is neither collected nor viewable on SLMAPS. A window lasts at most 1 hour.
Request headers
| Header | Value | Description |
|---|---|---|
| Authorization | Bearer slsrv_… | Server credential from claim. |
| Content-Type | application/json | UTF-8 JSON. |
Request body
| Field | In | Type | Required | Description |
|---|---|---|---|---|
| event | body | string | required | round_start · round_end · periodic. round_start and round_end are always sent. |
| 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. |
| pluginVersion | body | string | optional | 1..32 characters. Used for the minimum-version check. |
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. Informational. |
| 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. |
| 426 | {"error":"plugin_outdated","minimum":"1.2.0","downloadUrl":"https://…"} | pluginVersion is below the minimum. Point the operator at downloadUrl. |
| 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/plugin/v1/report -H "Authorization: Bearer slsrv_..." -H "User-Agent: MyServer/1.0" -H "Content-Type: application/json" -d "{\"event\":\"round_start\",\"seed\":1848055747,\"port\":7777,\"pluginVersion\":\"1.2.2\"}"Request example
{
"event": "round_start",
"seed": 1848055747,
"port": 7777,
"pluginVersion": "1.2.2"
}Response example
{
"ok": true,
"blockedUntil": "2026-09-15T08:05:00Z"
}What the plugin does
round_start and round_end are always sent. periodic uses a 60-second default interval; 0 disables it. On 401 the plugin stops reporting and asks the operator to re-claim. 429, 503 and network errors are retried with a growing interval.
SLMAPS is the seed-map viewer for SCP: Secret Laboratory. These pages describe the public API of slmaps.com.slmaps.com ·