Prerequisites

You will need a clientId and clientSecret issued for your tenant. Contact support@sanicus-connect.com if you do not have credentials.

Step 1 — Obtain a Bearer token

Call the auth-server token endpoint with your client credentials. Each client is pre-provisioned with an associated user account — no username parameter is required. Replace {server} with your environment hostname (e.g. services, service-test, or a regional server name).
curl -X POST "https://{server}.sanicus-connect.com/api/auth/token" \
  -H "Content-Type: application/json" \
  -d '{
    "clientId": "your-client-id",
    "clientSecret": "your-client-secret"
  }'
Response
{
  "accessToken": "eyJhbGciOiJSUzI1NiJ9...",
  "tokenType": "Bearer",
  "expiresIn": 3600
}
Save the accessToken — it is valid for 1 hour.
export TOKEN="eyJhbGciOiJSUzI1NiJ9..."

Step 2 — Make an API call

Use the token in the Authorization header for every request. Start with listing the tenants your client has access to:
curl -X GET "https://{server}.sanicus-connect.com/acct-manager/tenant/list" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json"
A successful response returns a paged list of tenants:
{
  "pagingData": {
    "pageIndex": 0,
    "pageSize": 20,
    "recordCount": 1
  },
  "tenants": [
    {
      "uuid": "tenant-uuid",
      "name": "Acme Facilities",
      "uuidOrg": "org-uuid",
      "deleted": false,
      "createdAt": "2025-01-15T09:00:00Z"
    }
  ]
}

Step 3 — Explore the APIs

Account Manager

Users, organisations, and tenant management.

IoT Manager

Sensor data, dashboards, and insights.

Staff Manager

Cleaner management and shift operations.

Report Service

On-demand and scheduled reports.

Tokens expire after 1 hour. Re-call POST /api/auth/token with your client credentials to obtain a fresh token — there is no refresh token mechanism.