Retrieve Measurement Data
This endpoint returns the time-series measurement data recorded by a device during shipment — temperature, humidity, acceleration, tilt, light exposure, and so on. Use the measurementTypes query parameter to narrow the response to only the types you need. The response also includes the most recent battery reading from the same date range, so a single call gives you both the sensor readings and the device's current power status.
For non-real-time devices, measurement data is only available after shipment completion (i.e., after the device has been collected and its readings uploaded).
Constraints
- The query window (
startAt→endAt) must not exceed 5 days. startAtmust be less than or equal toendAt.- Battery information is best-effort — if no battery measurement was recorded in the requested window,
batteryis returned asnull. - If the requested
endAtis before the device was registered, the request is rejected withT0118.
Request
GET https://openapi.willog.io/ext/v2/devices/{serial}/measurements
Path Variable
| Name | Description |
|---|---|
| serial | Device serial code |
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| startAt | Unix timestamp(ms) | true | Start time for data retrieval |
| endAt | Unix timestamp(ms) | true | End time for data retrieval |
| customerCode | String | false | Customer code |
| measurementTypes | Array | true | Types of measurements to retrieve |
Measurement Types
| Name | Description |
|---|---|
| TEMPERATURE | Temperature |
| HUMIDITY | Humidity |
| ACC | Acceleration |
| ACCX | Acceleration X-axis |
| ACCY | Acceleration Y-axis |
| ACCZ | Acceleration Z-axis |
| TILTX | Tilt X-axis |
| TILTY | Tilt Y-axis |
| TILTZ | Tilt Z-axis |
| EXP | Light Exposure(Lux) |
Example Request
GET /ext/v2/devices/{serial}/measurements?startAt=1738655274000&endAt=1738655274000&measurementTypes=TEMPERATURE&measurementTypes=HUMIDITY
Authorization: Bearer token
Response
Response Body
| Name | Type | Not-null | Description |
|---|---|---|---|
| items | Array | true | List of measurements |
| time | Unix timestamp(ms) | true | Measurement time |
| temperature | Number | false | Temperature value |
| humidity | Number | false | Humidity value |
| acc | Number | false | Acceleration value |
| accx | Number | false | Acceleration X-axis |
| accy | Number | false | Acceleration Y-axis |
| accz | Number | false | Acceleration Z-axis |
| tiltx | Number | false | Tilt X-axis |
| tilty | Number | false | Tilt Y-axis |
| tiltz | Number | false | Tilt Z-axis |
| battery | Object | false | Latest battery info (null if unknown) |
| battery.time | Unix timestamp(ms) | false | Time the battery level was recorded |
| battery.percent | Number | false | Battery level (0–100) |
Example Response
HTTP/1.1 200 OK
{
"items": [
{
"time": 1738655274000,
"temperature": 36.5,
"humidity": 56
}
],
"battery": {
"time": 1738655274000,
"percent": 81
}
}
When the device has no recorded battery measurement in the requested range, battery is null:
{
"items": [ ... ],
"battery": null
}
Error Responses
- Unauthorized Access to Customer Data
HTTP/1.1 400 Bad Request
{
"code": "A0016"
}
- Unregistered Device
HTTP/1.1 400 Bad Request
{
"code": "T0007"
}
- Device Did Not Exist in Requested Date Range
HTTP/1.1 400 Bad Request
{
"code": "T0118"
}
- Invalid Date Range
HTTP/1.1 400 Bad Request
{
"code": "E0004"
}
- From Date Greater Than To Date
HTTP/1.1 400 Bad Request
{
"code": "E0022"
}