Post

Servers API

Manage Satisfactory servers via the FICSIT.monitor API. List, create, update, and delete server connections. Onboarding request fields and error codes.

Servers API

Overview

The Servers API provides CRUD operations for managing your Satisfactory server connections in FICSIT.monitor. All endpoints require authentication.

Base path: /api/v1/servers


Server Object

The API returns servers in this format:

1
2
3
4
5
6
7
8
9
10
{
  "id": "uuid",
  "name": "My Factory Server",
  "host": "46.224.182.211",
  "api_port": 7777,
  "frm_http_port": 8080,
  "status": "online",
  "last_seen_at": "2026-04-15T12:00:00Z",
  "created_at": "2026-04-01T00:00:00Z"
}
FieldDescription
idUUID — use this to reference the server in metric endpoints
nameDisplay name
hostIP address of the server
api_portVanilla API port (usually 7777)
frm_http_portFRM HTTP API port (usually 8080)
statusonline, offline, or degraded
last_seen_atLast time the server responded to a health check
created_atWhen this server was added to FICSIT.monitor

frm_ws_port and api_token are not included in the response.


GET /api/v1/servers

List all servers belonging to the authenticated user.

1
2
3
curl https://satisfactory-dashboard.pablohgdev.com/api/v1/servers \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"

Response (200):

1
2
3
4
5
6
7
8
9
10
11
12
[
  {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Production Server",
    "host": "46.224.182.211",
    "api_port": 7777,
    "frm_http_port": 8080,
    "status": "online",
    "last_seen_at": "2026-04-15T12:00:00Z",
    "created_at": "2026-04-01T00:00:00Z"
  }
]

POST /api/v1/servers

Add a new Satisfactory server to FICSIT.monitor. This triggers the onboarding sequence: connectivity check, authentication, and initial metrics fetch.

Request body:

1
2
3
4
5
6
7
8
{
  "name": "My Factory Server",
  "host": "YOUR_SERVER_IP",
  "api_port": 7777,
  "frm_http_port": 8080,
  "frm_ws_port": 8081,
  "admin_password": "YourAdminPassword"
}
FieldRequiredDefaultDescription
nameYesDisplay name
hostYesPublic IP of the server
api_portNo7777Vanilla HTTPS API port
frm_http_portNo8080FRM HTTP port
frm_ws_portNo8081FRM WebSocket port
admin_passwordYesServer admin password
1
2
3
4
5
6
7
8
9
10
11
12
curl -X POST https://satisfactory-dashboard.pablohgdev.com/api/v1/servers \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "name": "My Factory Server",
    "host": "YOUR_SERVER_IP",
    "api_port": 7777,
    "frm_http_port": 8080,
    "frm_ws_port": 8081,
    "admin_password": "YourAdminPassword"
  }'

Success response (201):

1
2
3
4
5
6
7
8
9
10
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "name": "My Factory Server",
  "host": "YOUR_SERVER_IP",
  "api_port": 7777,
  "frm_http_port": 8080,
  "status": "online",
  "last_seen_at": "2026-04-15T12:00:00Z",
  "created_at": "2026-04-15T12:00:00Z"
}

Onboarding Error Codes

HTTP StatusCauseFix
422InvalidAdminPasswordException — wrong admin passwordVerify the admin password set in Server Settings → Administration
502ServerUnreachableException — cannot reach host:portCheck firewall (port 7777), verify server is running
500ProvisioningFailedException — setup failed after connectingUsually FRM not accessible (port 8080 blocked or FRM not installed)

GET /api/v1/servers/{id}

Get details for a specific server.

1
2
3
curl https://satisfactory-dashboard.pablohgdev.com/api/v1/servers/SERVER_UUID \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"

Response (200): Single server object (same format as the list).

Not found (404): Server does not exist or belongs to another user.


PUT /api/v1/servers/{id}

Update server settings. Only the fields you provide are updated.

1
2
3
4
5
6
7
8
curl -X PUT https://satisfactory-dashboard.pablohgdev.com/api/v1/servers/SERVER_UUID \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "name": "Updated Server Name",
    "admin_password": "NewPassword"
  }'

Response (200): Updated server object.


DELETE /api/v1/servers/{id}

Remove a server from FICSIT.monitor. This stops polling for the server and removes it from your dashboard. Historical metric data is retained for your plan’s retention period.

1
2
3
curl -X DELETE https://satisfactory-dashboard.pablohgdev.com/api/v1/servers/SERVER_UUID \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"

Response (204): Empty body.


Finding Your Server UUID

Your server’s UUID is returned when you add it and in the GET /api/v1/servers list. It is also visible in the dashboard URL: /servers/{uuid}/dashboard.

This post is licensed under CC BY 4.0 by the author.