Assets
Devices and sensors
List devices in your organization. Paginate with cursor / nextCursor. Device-first filters: tag (repeatable, AND), unassigned, country, model.
Authorization
ApiKeyAuth Bearer token with your API key. Example: Bearer sk_live_xxx
In: header
Query Parameters
Max items per page
Last asset's id from the previous page: the same value returned as nextCursor (pass verbatim).
Optional filter by sensor product line (alias: model-name).
Deprecated alias for model query param.
Filter by customer tag. Repeat for AND, e.g. tag=Sweden&tag=Freezer. Alias: tags.
When true, only assets with no tags.
ISO country code from SIM/MCC (e.g. SE). Combined with tag filters.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/assets"{
"items": [
{
"id": "asset-123",
"recType": "asset",
"name": "Unit 0042",
"serialNumber": "DEVICE-123456789012",
"status": "online",
"signalStrength": "good",
"batteryStatus": "ok",
"model": "TS10-THT",
"tags": [
"Sweden",
"DC"
],
"lastReadingAt": "2026-03-17T10:00:00.000Z"
}
],
"totalItems": 1,
"nextCursor": "asset-123"
}{
"success": false,
"message": "Invalid or inactive API key"
}{
"success": false,
"message": "Invalid or inactive API key"
}{
"success": false,
"message": "Invalid or inactive API key"
}{
"success": false,
"message": "Invalid or inactive API key"
}Register a device (unique serialNumber among active assets). For integrator accounts, serialNumber and optional name are enough.
Authorization
ApiKeyAuth Bearer token with your API key. Example: Bearer sk_live_xxx
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Register a device in your org. Cellular / integrator: omit buildingId when the org has a default building; use waterType automatic and floor 0 for a flat device list. Full REST (property): set buildingId (and optionally spaceId or floor) for building/room placement.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/assets" \ -H "Content-Type: application/json" \ -d '{ "serialNumber": "DEVICE-123456789012", "name": "Unit 0042", "waterType": "automatic", "floor": 0, "model": "TS10-THT", "tags": [ "Sweden", "DC", "LastMile" ] }'{
"id": "string"
}{
"success": false,
"message": "Invalid or inactive API key"
}{
"success": false,
"message": "Invalid or inactive API key"
}{
"success": false,
"message": "Invalid or inactive API key"
}Device-first. Set, add, or remove tags on many serial numbers. Catalog parents are not copied onto the asset.
Authorization
ApiKeyAuth Bearer token with your API key. Example: Bearer sk_live_xxx
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/assets/bulk-assign-tags" \ -H "Content-Type: application/json" \ -d '{ "serialNumbers": [ "282C0242F300", "282C0242F301" ], "tags": [ "Sweden", "DC" ], "mode": "add" }'{
"updated": 0,
"missing": [
"string"
]
}Device-first tag catalog: parentId hierarchy and optional place per tag. Asset assignment is still tags on each asset.
Authorization
ApiKeyAuth Bearer token with your API key. Example: Bearer sk_live_xxx
In: header
Response Body
application/json
curl -X GET "https://example.com/asset-tags"{
"tags": [
{
"id": "terminal a",
"tag": "Terminal A",
"parentId": "stockholm",
"place": {
"lat": 59.33,
"lng": 18.06,
"address": "Stockholm"
}
}
]
}Create a tag in the catalog. Optional parentId (existing catalog id, max depth 3) and place (lat, lng, address).
Authorization
ApiKeyAuth Bearer token with your API key. Example: Bearer sk_live_xxx
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/asset-tags" \ -H "Content-Type: application/json" \ -d '{ "tag": "Terminal A", "parentId": "stockholm", "place": { "lat": 59.33, "lng": 18.06, "address": "Stockholm" } }'{
"id": "terminal a",
"tag": "Terminal A",
"parentId": "stockholm",
"place": {
"lat": 59.33,
"lng": 18.06,
"address": "Stockholm"
}
}Authorization
ApiKeyAuth Bearer token with your API key. Example: Bearer sk_live_xxx
In: header
Path Parameters
Catalog id (lowercase tag name). Display name also accepted.
Response Body
application/json
curl -X GET "https://example.com/asset-tags/string"{
"id": "terminal a",
"tag": "Terminal A",
"parentId": "stockholm",
"place": {
"lat": 59.33,
"lng": 18.06,
"address": "Stockholm"
}
}Set parentId (null = root; must be an existing catalog id) and/or place (null clears coordinates).
Authorization
ApiKeyAuth Bearer token with your API key. Example: Bearer sk_live_xxx
In: header
Path Parameters
Catalog id (lowercase tag name). Display name also accepted.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X PATCH "https://example.com/asset-tags/string" \ -H "Content-Type: application/json" \ -d '{}'{
"id": "terminal a",
"tag": "Terminal A",
"parentId": "stockholm",
"place": {
"lat": 59.33,
"lng": 18.06,
"address": "Stockholm"
}
}Removes the tag from the catalog and from all assets in the organization.
Authorization
ApiKeyAuth Bearer token with your API key. Example: Bearer sk_live_xxx
In: header
Path Parameters
Catalog id (lowercase tag name). Display name also accepted.
Response Body
application/json
curl -X DELETE "https://example.com/asset-tags/string"{
"updated": 0
}Retrieve one device by asset ID. Same API key as config profiles.
Authorization
ApiKeyAuth Bearer token with your API key. Example: Bearer sk_live_xxx
In: header
Path Parameters
Response Body
application/json
application/json
curl -X GET "https://example.com/assets/string"{
"id": "asset-123",
"recType": "asset",
"name": "Unit 0042",
"serialNumber": "DEVICE-123456789012",
"status": "online",
"signalStrength": "good",
"batteryStatus": "ok",
"model": "TS10-THT",
"tags": [
"Sweden",
"DC"
],
"lastReadingAt": "2026-03-17T10:00:00.000Z"
}{
"success": false,
"message": "Invalid or inactive API key"
}Silence notifications (any org). Device-first also: name and tags. Alerts are still created and visible in the platform and via GET /alerts.
Authorization
ApiKeyAuth Bearer token with your API key. Example: Bearer sk_live_xxx
In: header
Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
PATCH /assets/{assetId}. Silence notifications on any org. Device-first also accepts name and tags.
Response Body
application/json
application/json
application/json
curl -X PATCH "https://example.com/assets/string" \ -H "Content-Type: application/json" \ -d '{ "tags": [ "Sweden", "DC" ], "notificationsSilenced": true, "notificationsSilencedUntil": "2026-09-29T12:00:00Z" }'{
"id": "asset-1AbcDeF2GhiJkL",
"recType": "asset",
"name": "Kirurgavd. Handfat",
"serialNumber": "DEMO-SN-019",
"model": "TS10-THT",
"status": "online",
"signalStrength": "good",
"batteryStatus": "ok",
"tags": [
"Sweden",
"DC"
],
"organizationId": "org_abc123",
"buildingId": "bld_xyz",
"spaceId": "space_101",
"lastWaterTemperature": 56.8,
"lastAmbientTemperature": 21.2,
"lastRelativeHumidity": 45.2,
"lastReadingAt": "2024-05-21T10:30:00.000Z",
"nextTransmissionAt": "2024-05-21T12:30:00.000Z",
"createdAt": "2024-01-15T08:00:00.000Z",
"updatedAt": "2024-05-21T10:35:00.000Z"
}{
"success": false,
"message": "Invalid or inactive API key"
}{
"success": false,
"message": "Invalid or inactive API key"
}Remove a device from your org (soft-delete: status → archived, assignments cleared). It disappears from list/get; measurement history is kept. No public restore — contact support if needed. Same API key as config profiles.
Authorization
ApiKeyAuth Bearer token with your API key. Example: Bearer sk_live_xxx
In: header
Path Parameters
Response Body
application/json
application/json
curl -X DELETE "https://example.com/assets/string"{
"deleted": true
}{
"success": false,
"message": "Invalid or inactive API key"
}Replace the physical device for an asset: set a new serial number and append the previous one to replacement history. All existing data (history, config, alerts) is kept. Cellular API organizations may use their API key here without the API integrations add-on (same key as config profiles).
Authorization
ApiKeyAuth Bearer token with your API key. Example: Bearer sk_live_xxx
In: header
Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/assets/string/replace-hardware" \ -H "Content-Type: application/json" \ -d '{ "newSerialNumber": "DEVICE-987654321098" }'{
"success": true,
"serialNumber": "string"
}{
"success": false,
"message": "Invalid or inactive API key"
}{
"success": false,
"message": "Invalid or inactive API key"
}{
"success": false,
"message": "Invalid or inactive API key"
}Download the ILAC / laboratory calibration PDF for a registered asset (when Tempivo has uploaded one for that serial). Serial STOREVIEW001 always returns a bundled two-page sample PDF if no uploaded file exists.
Authorization
ApiKeyAuth Bearer token with your API key. Example: Bearer sk_live_xxx
In: header
Path Parameters
Response Body
application/pdf
application/json
curl -X GET "https://example.com/assets/string/calibration-certificate""string"{
"success": false,
"message": "Invalid or inactive API key"
}How is this guide?