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.

CodeMeaning
200 OKData returned
204 No ContentChange accepted, nothing to return
400 Bad RequestThe request is invalid; the body explains why where possible
403 ForbiddenThe token is missing, expired, or lacks the permission for this site
404 Not FoundUnknown endpoint, or the requested data does not exist
5xxServer 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

MethodPathPurpose
GET/deviceInformation about devices (base stations and tags); pass device IDs or leave empty for all
GET/device/initialtagstateCurrent state of tags, as JSON or, with CompactResponse=true, MessagePack (live)
GET/device/initialbeaconstateCurrent state of base stations (live)
GET/device/neighborsBase station connections and the signal characteristics of their neighbours (live)

Device modification

MethodPathPurpose
POST/device/tagChange a tag’s properties, such as its name
POST/device/buzzerMake tags blink their LED and play the quiet buzzer or the loud alert
POST/device/addexternaltagAdd an external tag, whose position you supply; returns its device ID (up to 1,000 per account)
POST/device/modifyexternaltagSet an external tag’s position, floor, name or button state
POST/device/removeexternaltagRemove an external tag
POST/device/rebootReboot base stations
POST/device/radiostatusSwitch the UWB radio of base stations on or off

General information

MethodPathPurpose
GET/infoYour app’s client ID and its permissions per site; a good connection test

History

MethodPathPurpose
GET/historyStored positions and states of tags in a time span
GET/history/socialdistancingStored 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.

MethodPathPurpose
POST/eventapi/endpointCreate an endpoint: your HTTPS URL that will receive events
GET/eventapi/endpointDetails of one or more endpoints; all of yours if no ID is given
DELETE/eventapi/endpointRemove an endpoint and all its subscriptions
POST/eventapi/registerendpointValidate an endpoint; Noccela sends it a challenge request
POST/eventapi/modifyendpointChange an endpoint’s retry policy or secret
POST/eventapi/eventSubscribe an endpoint to an event type
GET/eventapi/eventList subscriptions, by subscription ID or by endpoint
DELETE/eventapi/eventRemove a subscription
GET/eventapi/eventsFetch the stored events of a subscription, after a given event ID

Installation tool

Planning and automatic calibration of base stations.

MethodPathPurpose
POST/installationtool/sensorlocationsuggestionSuggested base station positions for an area, use case and difficulty
POST/installationtool/calibratepositionsCalibrated base station positions from their ranging data and reference points
POST/installationtool/beaconledChange a base station’s LED colour for a few seconds, to check its identity on site
GET/installationtool/gettagpointsList the site’s tag points (reference points measured with a tag)
POST/installationtool/addtagpointAdd a tag point and start collecting data for it
POST/installationtool/updatetagpointUpdate a tag point and collect data again
POST/installationtool/removetagpointRemove a tag point
POST/installationtool/maptagpointsMap tag points for calibration

Integrations

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

MethodPathPurpose
GET/integrations/listList your apps
GET/integrations/getDetails of one app
POST/integrations/createCreate an app with a name, description and permissions
POST/integrations/modifyChange an app
DELETE/integrations/deleteDelete an app
GET/integrations/secretsList an app’s client secrets (metadata, not the secrets)
POST/integrations/secretCreate a new client secret
DELETE/integrations/deletesecretDelete a client secret

Network

MethodPathPurpose
GET/network/settingsNetwork settings available for editing
POST/network/settingsChange network settings; fetch the current ones first

Real time

MethodPathPurpose
GET/realtime/domainThe node that runs a site; connect the real-time API there
GET/realtimeWebSocket entry point; see the real-time API. It answers 101 Switching Protocols and cannot be tried in Swagger UI

Site information

MethodPathPurpose
GET/siteBasic site information, including its name and location
GET/site/layoutThe site layout: walls, areas, base station positions; optionally an older version by MinorId
GET/site/layout/versionsAll layout versions, for viewing or restoring
GET/site/settingsSite settings available for editing
GET/site/availablesensorsBase stations assigned to the account but not to another site
GET/site/sensorlocationsBase station coordinates relative to the site’s origin
GET/site/blueprintInformation about the site’s floor-plan images
GET/site/fileDownload a site file, such as a floor plan, by its file ID

Site modification

MethodPathPurpose
POST/site/layoutSave a new layout: infrastructure, walls, alert areas. Replaces the whole layout
DELETE/site/layoutDelete a layout version (not the active one)
POST/site/layout/activateActivate an earlier layout version
POST/site/layout/modifyChange a layout version’s properties
POST/site/layout/fillpolygonFill a polygon with smaller, non-overlapping polygons
POST/site/settingsChange site settings; fetch the current ones first
POST/site/sensorlocationsSet base station coordinates; base stations missing from the request are removed
POST/site/reloadReload the site in the cloud so that changes such as layout edits take effect
POST/site/usecaseanddifficultySet the site’s use case and environment difficulty
POST/site/createCreate a site (needs the account’s “all sites” permission)
DELETE/site/removeRemove 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

MethodPathPurpose
GET/workflow/getworkflowsThe workflows defined on a site
GET/workflow/getworkflowresultsResults of a workflow
POST/workflow/externaltriggerTrigger 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