Skip to content

Admin API

FF1 Master provides a REST API for bulk operations and scripted actions. Paths are prefixed with /api/, authenticated with an API Token (Bearer) and authorized by scope.

Issue an API Token in the console (GET/POST /api/tokens), and include it on calls:

Authorization: Bearer <token>

Scopes take the form resource:action:

ScopeCapability
nodes:read / nodes:writeRead / write nodes
rules:read / rules:writeRead / write forwarding rules
tunnels:read / tunnels:writeRead / write tunnels
users:read / users:writeRead / write users
audit:readAudit read-only
license:readLicense read-only
*Everything (use with caution)
DomainPath
LoginPOST /api/auth/login
TokensGET/POST /api/tokens, DELETE /api/tokens/{id}
NodesGET /api/nodes, GET/PUT/DELETE /api/nodes/{id}, POST /api/nodes
Node installationPOST /api/nodes/{id}/install-ssh, POST /api/nodes/{id}/reinstall
Forwarding rulesGET/POST /api/rules, GET/PUT /api/rules/{id}, POST /api/rules/{id}/sync
TunnelsGET/POST /api/tunnels, GET/PUT/DELETE /api/tunnels/{id}
SettingsGET/PATCH /api/settings
AuditGET /api/audit-logs
DashboardGET /api/dashboard, GET /api/dashboard/traffic

Bulk operations: POST /api/nodes/batch-delete, POST /api/rules/batch-delete, etc.

List nodes:

Terminal window
curl -sS -H "Authorization: Bearer $FF1_TOKEN" \
"https://master.example.com/api/nodes"

Trigger sync after creating and pushing a forwarding rule:

Terminal window
curl -sS -X POST -H "Authorization: Bearer $FF1_TOKEN" \
"https://master.example.com/api/rules/123/sync"
  • Tokens carry broad privileges—issue them with the least scope and never leak them
  • Write operations are recorded in the audit log
  • For bulk scripts, watch your rate to avoid contending with live operations for the SQLite write lock