Skip to content

REST API Overview

inSCADA has a fully RESTful architecture. Every operation on the platform — reading/writing variables, project management, alarm queries, connection control — can be performed through the REST API.

Base URL:

https://<inscada-ip>:8082/api/

All endpoints start with the /api/ prefix. The API accepts and returns data in JSON format.

The inSCADA REST API uses form-based login and JWT token authentication.

POST /login
Content-Type: multipart/form-data
username=admin&password=admin

A successful response sets ins_access_token and ins_refresh_token cookies.

Cookies obtained after login are automatically sent with subsequent requests. Alternatively, the token can also be sent via a header:

GET /api/projects
Cookie: ins_access_token=<token>; ins_refresh_token=<token>
X-Space: default_space

In the multi-workspace (multi-tenant) architecture, the X-Space header is used to specify which space the request operates in:

X-Space: default_space

The inSCADA REST API contains 91 controllers and 1100+ endpoints. Below are the main categories and key endpoints:

MethodEndpointDescription
POST/loginUser login
GET/api/auth/currentUserCurrent logged-in user info
GET/api/auth/loggedInUsersActive session list
GET/api/usersUser list
POST/api/usersCreate a new user
PUT/api/users/{id}Update a user
DELETE/api/users/{id}Delete a user
GET/api/users/{id}/rolesUser roles
MethodEndpointDescription
GET/api/spacesSpace list
GET/api/spaces/{id}Space details
POST/api/spacesCreate a new space
PUT/api/spaces/{id}Update a space
DELETE/api/spaces/{id}Delete a space
MethodEndpointDescription
GET/api/projectsProject list
GET/api/projects/{id}Project details
GET/api/projects/{id}/statusProject status
POST/api/projectsCreate a new project
PUT/api/projects/{id}Update a project
DELETE/api/projects/{id}Delete a project
POST/api/projects/cloneClone a project
MethodEndpointDescription
POST/api/connections/{id}/startStart a connection
POST/api/connections/{id}/stopStop a connection
GET/api/connections/{id}/statusConnection status
GET/api/connections/{id}/browseDevice discovery (OPC UA, OPC DA)

Each protocol has its own CRUD endpoints:

  • /api/modbus/connections, /api/dnp3/connections, /api/iec104/connections
  • /api/modbus/variables, /api/dnp3/variables
MethodEndpointDescription
GET/api/variables/{id}/valueSingle variable live value
GET/api/variables/values?projectId=X&names=a,bBulk live values
POST/api/variables/{id}/valueWrite a value to a variable
GET/api/variables/loggedValuesQuery historical data
GET/api/variables/loggedValues/statsStatistics (avg, min, max)
GET/api/variables/loggedValues/stats/hourlyHourly statistics
MethodEndpointDescription
GET/api/alarms/fired-alarmsActive alarms
GET/api/alarms/fired-alarms/allFull alarm history
POST/api/alarms/fired-alarms/acknowledgeAcknowledge an alarm
POST/api/alarms/fired-alarms/force-offForce-close an alarm
MethodEndpointDescription
GET/api/scriptsScript list
GET/api/scripts/{id}Script details
POST/api/scriptsCreate a new script
PUT/api/scripts/{id}Update a script
DELETE/api/scripts/{id}Delete a script
GET/api/scripts/{id}/statusScript execution status
POST/api/scripts/runnerRun script code (ad-hoc)
MethodEndpointDescription
GET/api/animationsAnimation list
GET/api/animations/{id}Animation details
POST/api/animationsCreate a new animation
PUT/api/animations/{id}Update an animation
PUT/api/animations/{id}/svgUpdate SVG content
POST/api/animations/{id}/cloneClone an animation
MethodEndpointDescription
GET/api/trendsTrend list
POST/api/trendsCreate a new trend
GET/api/trends/{id}/tagsTrend tags
POST/api/trends/{id}/tagsAdd a tag
MethodEndpointDescription
GET/api/custom-menusMenu list
POST/api/custom-menusCreate a new menu
PUT/api/custom-menus/{id}Update a menu
DELETE/api/custom-menus/{id}Delete a menu
MethodEndpointDescription
GET/api/reportsReport list
POST/api/reports/{id}/runRun a report
GET/api/reports/{id}/export/pdfExport as PDF
GET/api/reports/{id}/export/excelExport as Excel
MethodEndpointDescription
GET/api/versionPlatform version
GET/api/licenseLicense information
GET/api/cluster/leaderCluster leader node
GET/api/system/statusSystem status
Terminal window
curl -b cookies.txt http://localhost:8081/api/version -H "X-Space: default_space"
20260311-1-jdk11

inSCADA provides interactive API documentation with a built-in Swagger UI. It is activated in development mode (dev profile):

https://<inscada-ip>:8082/swagger-ui/

Through Swagger UI, you can discover all endpoints, view parameter descriptions, and send test requests directly.

All responses are in JSON format:

// Successful response
{
"id": 1,
"name": "Temperature",
"value": 25.4,
...
}
// Error response
{
"status": 400,
"error": "Bad Request",
"message": "Variable not found: invalid_name"
}
CodeDescription
200Success
201Created
400Bad request
401Authentication required
403Unauthorized access
404Not found
500Server error

API requests are protected by rate limiting. In case of excessive requests, a 429 Too Many Requests response is returned. Limit values can be adjusted from the system configuration.