ColdLatch

Guides

Send temperature readings to ColdLatch over HTTPS

Published 8 October 2026. For developers and integrators. 4 minute read.

Short answer: give each logger a key in ColdLatch, then POST its readings as JSON to /api/v1/ingest/readings with that key in the Authorization header. A reading sent this way is stored and checked exactly like one that arrives over MQTT.

ColdLatch takes readings two ways. Loggers that can publish MQTT do that. Everything else, such as a gateway that collects from wireless probes, a building management system, a vendor's cloud that can forward data, or a script reading an export, can send over HTTPS.

Get a key for the logger

  1. In ColdLatch, an administrator opens Settings, then Devices, and registers the logger with its serial number if it is not there yet.
  2. On the logger's row, press HTTPS key, then Create a key.
  3. Copy the key at once. ColdLatch keeps only a fingerprint of it and cannot show it again. If it is lost, press Replace the key; the old one stops working immediately.

One key belongs to one logger. A gateway that relays for ten probes holds ten keys and sends each probe's readings with its own.

The request

POST https://coldlatch.com/api/v1/ingest/readings
Authorization: Bearer clk_your-key
Content-Type: application/json

{
  "recordedAt": "2026-10-05T07:30:00.000Z",
  "temperatureC": 4.8,
  "humidity": 61.5,
  "batteryPct": 82,
  "signalDbm": -71
}
FieldMeaning
recordedAtRequired. When the logger took the reading, in UTC, ISO 8601. Not more than 5 minutes in the future and not more than 30 days old.
temperatureCRequired. Degrees Celsius, between -100 and 100.
humidityOptional. Relative humidity, 0 to 100.
batteryPctOptional. Battery level, 0 to 100. Shown on the logger, in red at 20 or below.
signalDbmOptional. Signal strength in dBm, between -150 and 0.

Several readings at once

Send an array of up to 500 readings in one request. This is how a logger that was out of coverage uploads what it kept, and how a gateway sends a minute's worth in one go. ColdLatch puts them in time order itself.

[
  { "recordedAt": "2026-10-05T07:30:00.000Z", "temperatureC": 4.8 },
  { "recordedAt": "2026-10-05T07:35:00.000Z", "temperatureC": 5.1 }
]

The answer

{ "stored": 2, "duplicates": 0, "rejected": [] }
AnswerWhat it means
201 with storedThat many readings were new and are saved.
201 with duplicatesThat many were already there (same logger, same time). Sending a reading again is safe: retry freely.
201 with rejectedEach entry names the position in your array and the reason, for example a temperature out of bounds. The others were still saved.
401The key is missing, wrong or has been replaced.
400Not a reading or a list of readings, an empty list, or more than 500.
429More than 600 requests in a minute from one address. Send batches instead.

Also: How to block a batch in SAP S/4HANA after a temperature excursion