Discover

Get Started

Developers

Industries

Get Your API Key

Before your application can communicate with INNORIX, it must be authenticated. Exacoola uses an Access Token (JWT) issued after login for authentication.

  • Login (POST /api/auth/login) — Sign in with your account to receive an Access Token and Refresh Token.
  • Generate API Key (POST /api/auth/generate-key) — Generate a long-lived API key for Command Automation triggers. Use it in the x-api-key header.

Include the following headers with all authenticated API requests.

http
1
2
Authorization: Bearer <ACCESS_TOKEN> x-workspace-id: <WORKSPACE_ID>

Login

POST /api/auth/login — User login

bash
1
2
3
4
5
6
curl -X POST https://exacoola.innorix.com/api/auth/login \ -H "Content-Type: application/json" \ -d '{ "email": "<YOUR_EMAIL>", "password": "<YOUR_PASSWORD>" }'

Response:

json
1
2
3
4
5
6
7
8
9
10
11
12
{ "status_code": 200, "message": "success", "data": { "user": { "email": "user@example.com", "name": "User Name", "accessToken": "<ACCESS_TOKEN>", "refreshToken": "<REFRESH_TOKEN>" } } }

Use data.user.accessToken in the Authorization: Bearer header for subsequent requests. When the Access Token expires, request a new token using GET /api/auth/get-token or POST /api/auth/refresh-token.

Generate an API Key (For Command Automation)

POST /api/auth/generate-key — Generate an API key for the authenticated user

bash
1
2
curl -X POST https://exacoola.innorix.com/api/auth/generate-key \ -H "Authorization: Bearer <ACCESS_TOKEN>"

Response:

json
1
2
3
4
5
6
7
{ "status_code": 200, "message": "success", "data": { "apiKey": "a3f2c1..." } }

Use the generated apiKey in the x-api-key header when sending Command Automation trigger requests. Revoke the key using DELETE /api/auth/revoke-key.

Token Refresh & Session Management

When the Access Token expires, use the Refresh Token to obtain a new Access Token.

POST /api/auth/refresh-token — Refresh session tokens

bash
1
2
curl -X POST https://exacoola.innorix.com/api/auth/refresh-token \ -H "X-Refresh-Token: <REFRESH_TOKEN>"

Response:

json
1
2
3
4
5
6
7
8
9
10
11
{ "status_code": 200, "message": "success", "data": { "accessToken": "<NEW_ACCESS_TOKEN>", "refreshToken": "<NEW_REFRESH_TOKEN>", "userId": "usr_abc123", "email": "user@example.com", "userName": "User Name" } }

Additional session management endpoints:

PurposeMethod · Endpoint
Get a new Access TokenGET /api/auth/get-token
LogoutGET /api/auth/logout
Revoke an API KeyDELETE /api/auth/revoke-key (body: { "apiKey": "a3f2c1..." })