Skip to content
Noccela Developers Swagger UI SDK on GitHub Quickstart

HTTP API reference

Every endpoint of the Noccela Partner API v1.3, grouped as in its OpenAPI description: devices, sites, layouts, history, Push API, installation and workflows.

The HTTP API is a REST-style JSON API for reading and changing sites, layouts and devices, querying history, managing Push API subscriptions and running installation tools. Its OpenAPI description is generated from the code, so it is always complete; this page summarises it.

Conventions

Account and site. Most endpoints take Account and Site as query parameters (or account and site in the request body). Both are required, because a site ID is unique only within its account.

Device IDs. Devices are identified by their device ID, the serial number on the label. List parameters such as Devices are repeated in the query string: Devices=1234567&Devices=7654321. Leaving them out usually means “all devices you may access”, which can be a large response.

Live endpoints. A few endpoints, marked live below, read directly from the running site. Call them on the site’s node, found with GET /realtime/domain, not on api.noccela.io. Calling the wrong node, or a site that is offline, ends in a timeout.

Status codes.

Code Meaning
200 OK Data returned
204 No Content Change accepted, nothing to return
400 Bad Request The request is invalid; the body explains why where possible
403 Forbidden The token is missing, expired, or lacks the permission for this site
404 Not Found Unknown endpoint, or the requested data does not exist
5xx Server error

Error bodies use the standard ProblemDetails JSON format.

A first request. GET /info returns your app’s client ID and the sites it may access:

curl -s https://api.noccela.io/info -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Endpoints

The groups below follow the tags of the OpenAPI description. “Base station” is called beacon or sensor in endpoint names.

Device information

Method Path Purpose
GET /device Information about devices (base stations and tags); pass device IDs or leave empty for all
GET /device/initialtagstate Current state of tags, as JSON or, with CompactResponse=true, MessagePack (live)
GET /device/initialbeaconstate Current state of base stations (live)
GET /device/neighbors Base station connections and the signal characteristics of their neighbours (live)

Device modification

Method Path Purpose
POST /device/tag Change a tag’s properties, such as its name
POST /device/buzzer Make tags blink their LED and play the quiet buzzer or the loud alert
POST /device/addexternaltag Add an external tag, whose position you supply; returns its device ID (up to 1,000 per account)
POST /device/modifyexternaltag Set an external tag’s position, floor, name or button state
POST /device/removeexternaltag Remove an external tag
POST /device/reboot Reboot base stations
POST /device/radiostatus Switch the UWB radio of base stations on or off

General information

Method Path Purpose
GET /info Your app’s client ID and its permissions per site; a good connection test

History

Method Path Purpose
GET /history Stored positions and states of tags in a time span
GET /history/socialdistancing Stored proximity (contact) events between tags

GET /history needs a Start time or a Count. Start and Stop take ISO 8601 dates or times (the default span is the last 24 hours); Count returns the latest N rows per tag; IncludeProperties limits the fields returned; Timeout sets the database timeout in seconds (default 30). History stores a new row only when a tag has moved more than 0.5 m.

curl -s -G https://api.noccela.io/history \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  --data-urlencode "Account=YOUR_ACCOUNT_ID" \
  --data-urlencode "Site=YOUR_SITE_ID" \
  --data-urlencode "Devices=1234567" \
  --data-urlencode "Start=2026-10-21T06:00:00Z" \
  --data-urlencode "Stop=2026-10-21T14:00:00Z"

Event API (Push API)

Used to set up the Push API.

Method Path Purpose
POST /eventapi/endpoint Create an endpoint: your HTTPS URL that will receive events
GET /eventapi/endpoint Details of one or more endpoints; all of yours if no ID is given
DELETE /eventapi/endpoint Remove an endpoint and all its subscriptions
POST /eventapi/registerendpoint Validate an endpoint; Noccela sends it a challenge request
POST /eventapi/modifyendpoint Change an endpoint’s retry policy or secret
POST /eventapi/event Subscribe an endpoint to an event type
GET /eventapi/event List subscriptions, by subscription ID or by endpoint
DELETE /eventapi/event Remove a subscription
GET /eventapi/events Fetch the stored events of a subscription, after a given event ID

Installation tool

Planning and automatic calibration of base stations.

Method Path Purpose
POST /installationtool/sensorlocationsuggestion Suggested base station positions for an area, use case and difficulty
POST /installationtool/calibratepositions Calibrated base station positions from their ranging data and reference points
POST /installationtool/beaconled Change a base station’s LED colour for a few seconds, to check its identity on site
GET /installationtool/gettagpoints List the site’s tag points (reference points measured with a tag)
POST /installationtool/addtagpoint Add a tag point and start collecting data for it
POST /installationtool/updatetagpoint Update a tag point and collect data again
POST /installationtool/removetagpoint Remove a tag point
POST /installationtool/maptagpoints Map tag points for calibration

Integrations

Manage apps and their credentials programmatically, as in the partner portal.

Method Path Purpose
GET /integrations/list List your apps
GET /integrations/get Details of one app
POST /integrations/create Create an app with a name, description and permissions
POST /integrations/modify Change an app
DELETE /integrations/delete Delete an app
GET /integrations/secrets List an app’s client secrets (metadata, not the secrets)
POST /integrations/secret Create a new client secret
DELETE /integrations/deletesecret Delete a client secret

Network

Method Path Purpose
GET /network/settings Network settings available for editing
POST /network/settings Change network settings; fetch the current ones first

Real time

Method Path Purpose
GET /realtime/domain The node that runs a site; connect the real-time API there
GET /realtime WebSocket entry point; see the real-time API. It answers 101 Switching Protocols and cannot be tried in Swagger UI

Site information

Method Path Purpose
GET /site Basic site information, including its name and location
GET /site/layout The site layout: walls, areas, base station positions; optionally an older version by MinorId
GET /site/layout/versions All layout versions, for viewing or restoring
GET /site/settings Site settings available for editing
GET /site/availablesensors Base stations assigned to the account but not to another site
GET /site/sensorlocations Base station coordinates relative to the site’s origin
GET /site/blueprint Information about the site’s floor-plan images
GET /site/file Download a site file, such as a floor plan, by its file ID

Site modification

Method Path Purpose
POST /site/layout Save a new layout: infrastructure, walls, alert areas. Replaces the whole layout
DELETE /site/layout Delete a layout version (not the active one)
POST /site/layout/activate Activate an earlier layout version
POST /site/layout/modify Change a layout version’s properties
POST /site/layout/fillpolygon Fill a polygon with smaller, non-overlapping polygons
POST /site/settings Change site settings; fetch the current ones first
POST /site/sensorlocations Set base station coordinates; base stations missing from the request are removed
POST /site/reload Reload the site in the cloud so that changes such as layout edits take effect
POST /site/usecaseanddifficulty Set the site’s use case and environment difficulty
POST /site/create Create a site (needs the account’s “all sites” permission)
DELETE /site/remove Remove a site (needs the account’s “all sites” permission)

Some changes, such as layout edits and base station positions, take effect only after a reload. If you make several changes, reload once at the end.

Workflows

Method Path Purpose
GET /workflow/getworkflows The workflows defined on a site
GET /workflow/getworkflowresults Results of a workflow
POST /workflow/externaltrigger Trigger workflow steps whose condition is “external trigger”, for all or selected tags

Generate a client

Noccela does not ship HTTP client libraries; generate one from the OpenAPI description instead, so it always matches the API version you target. For example, with OpenAPI Generator:

npx @openapitools/openapi-generator-cli generate \
  -i https://api.noccela.io/swagger/v1/swagger.json \
  -g typescript-fetch \
  -o ./noccela-client

Generators exist for most languages: Python, Java, C#, Go and others.

Try it in Swagger UI

Open Swagger UI, select Authorize, and enter your client ID and secret. You do not need to tick the global scope; every client has it. Then choose an endpoint, select Try it out, fill in the parameters and select Execute.

Last updated 22 October 2026