Submit a measure reading
POST/partners/v1/measures/submit-reading
| Starter | Premium | Ultimate |
|---|---|---|
| ✔️ | ✔️ | ✔️ |
⚠️ Activation required — this endpoint requires the
PARTNERS_API_MEASURE_READINGfeature to be enabled on your network. To activate it, contact product@mobility-work.com.
Submits a single measure reading (counter value) for an equipment.
Designed for industrial integrations where a Manufacturing Execution System (MES), an IoT gateway, or any external application feeds counter values (operating hours, kilometres, cycles, etc.) into Mobility Work CMMS to drive predictive maintenance, threshold-based plan scheduling, and equipment health monitoring.
Identifying the measure and the equipment
measureCodeis the business code of the counter as defined in the network (e.g.HOURS_ENGINE_1), not the internal technical id.equipmentExternalReferenceis the item code of the equipment. Internal UUIDs are not supported here — only external references known by the calling system.- Both lookups are scoped to the network identified by the API key — a
measureCodeor item code that exists in another network is treated as not found.
readAt — accepted formats
readAt is optional. When omitted or set to null, the server's current time is used.
The following formats are accepted:
| Format | Example |
|---|---|
| ISO 8601 with explicit offset | 2024-01-15T14:30:00+01:00 |
ISO 8601 with UTC abbreviation Z | 2024-01-15T14:30:00Z |
| ISO 8601 with microseconds | 2024-01-15T14:30:00.123456+01:00 |
| Unix timestamp as JSON integer | 1745488800 |
| Unix timestamp as JSON string | "1745488800" |
| Unix timestamp as JSON float (sub-second precision) | 1745488800.123 |
Microseconds are truncated to the second on storage — sub-second precision is not relevant for counter readings.
Calendar-invalid dates are rejected: 2026-02-30T... returns 400 instead of being silently rolled to the next
valid day. The readAt Unix timestamps minimum length is 10 digits (i.e. ≥ 1000000000, 2001-09-09).
value — accepted formats
The value is always sent as a string. Its content is interpreted according to the type of the targeted measure:
- NUMBER measures: the value must be numeric. Decimals (
12345.67), negative values (-100) and scientific notation (1e5) are all accepted at the API level — your business rules should determine whether they are meaningful. - GENERIC (text) measures: any string is accepted, no numeric check is applied.
Maximum length: 100 characters.
Idempotency
There is no idempotency mechanism: each accepted call records a new measurement with a fresh measurementId.
A retry on a network timeout will create a duplicate reading — make sure your client handles this if it can
automatically retry failed calls.
Request
Responses
- 201
- 400
- 401
- 403
- 404
- 409
The measurement has been recorded.
The request payload is invalid or the equipment is not found.
Common error codes:
400006—readAtis not parsable (empty string, calendar-invalid date, malformed ISO 8601).400007— payload schema validation failure (missing required field, wrong type, value too long, etc.).400032—measure.error.equipment_not_found—equipmentExternalReferencedoes not exist in the network.400037—measure.error.cannot_read_a_measurement_that_is_not_a_number— the targeted measure is of type NUMBER but the submitted value is not numeric.
Missing or invalid Api Key (e.g. revoked or non-existent)
Access denied. Two possible causes:
- The
PARTNERS_API_MEASURE_READINGfeature is not enabled on the network — contact product@mobility-work.com to activate it. - The equipment belongs to a different network than the one identified by the API key.
Resource not found.
404002—measure.error.measure_not_found—measureCodedoes not exist in the network identified by the API key.
Conflict — the targeted measure or equipment is archived.
409005—measure.error.cannot_read_a_new_measurement_on_archived_measure.409006—measure.error.cannot_read_a_measurement_on_archived_equipment.