Measurement Triggers
Measurement triggers are the primary way to obtain data from a connected instrument. A trigger executes a device-class–specific measurement procedure and returns a measurement container — by default a binary RAE file (see RAE File Format) — containing all metric values, metadata and any attached device images.
Endpoints Overview
| Method | Endpoint | Description |
|---|---|---|
| GET | /v1/devices/{deviceId}/measurement-triggers |
List the measurement triggers available on the device |
| POST | /v1/devices/{deviceId}/measurement-triggers |
Execute a measurement |
Listing Available Triggers
GET /v1/devices/{deviceId}/measurement-triggers
curl http://localhost:42042/v1/devices/12f1d7dd07ac42a088c8f961b39d68ff/measurement-triggers
The response describes which triggers the connected device supports and which parameters they accept. Example shape:
[
{
"identifier": "measure",
"title": "Measure",
"category": "measure",
"parameters": [
{
"key": "metricGroupKeys",
"type": "EnumArray",
"description": "Specify the metric group keys measured."
},
{
"key": "imageFormat",
"type": "String",
"description": "Image encoding for images in the RAE container. Allowed values: 'image/png' (default), 'image/jpeg', 'image/x-raw'."
}
]
}
]
Use the listing endpoint to discover the parameter keys that are valid for the specific device class and firmware combination — they may evolve between releases.
Executing a Measurement
POST /v1/devices/{deviceId}/measurement-triggers
Content-Type: application/json
{
"measurementKey": "measure",
"containerFormat": "raeBinary",
"parameters": [
{ "key": "metricGroupKeys", "value": ["sparkle", "scratchLinear"] },
{ "key": "imageFormat", "value": "image/png" }
]
}
curl -X POST http://localhost:42042/v1/devices/12f1d7dd07ac42a088c8f961b39d68ff/measurement-triggers \
-H "Content-Type: application/json" \
-d '{
"measurementKey": "measure",
"containerFormat": "raeBinary",
"parameters": [
{ "key": "metricGroupKeys", "value": ["sparkle", "scratchLinear"] }
]
}' \
--output measurement.rae
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
measurementKey |
string | Yes | Identifier of the trigger to execute, as returned by GET /v1/devices/{deviceId}/measurement-triggers. |
containerFormat |
string | Yes | Output container format. One of raeBinary or raeJson. |
parameters |
array | No | Operation parameters, as { "key": "...", "value": ... } entries. Parameter keys and value types depend on the device. |
Container Formats
containerFormat |
Response Content-Type |
When to use |
|---|---|---|
raeBinary |
application/vnd.rhopoint.rae+binary |
Default. Compact, CBOR-encoded, GZip-compressed binary file. Recommended for storage and transfer. See RAE File Format. |
raeJson |
application/json |
Human-readable JSON representation of the same data. Easier to inspect from a browser or curl, but considerably larger. |
The container always contains the full measurement tree: scalar metrics, hierarchical groups, attached images, and metadata. The choice between
raeBinaryandraeJsonaffects encoding only, not content.
Image Encoding
Device images embedded in the container are PNG-encoded by default. The optional imageFormat operation parameter on Aesthetix devices selects an alternative encoding:
imageFormat value |
Encoding in the container | Container MIME type |
|---|---|---|
(omitted) or image/png |
PNG | image/png |
image/jpeg |
JPEG, quality 90 | image/jpeg |
image/x-raw |
Original kernel bytes (16-byte header + pixel data) | image/x-raw |
See Measurement Image Formats for the binary layout of image/x-raw, parsing examples, and per-image notes (some images are cropped server-side before PNG/JPEG encoding; the raw payload is uncropped).
Aesthetix Metric Groups
For Aesthetix-family devices the metricGroupKeys parameter selects which metric groups participate in the measurement. Typical values include sparkle, scratchLinear, scratchRadial, gloss, haze, cell, waviness, crossCut, shadeImages. See Aesthetix — Available Measurements for the full list. Pass an empty array or omit the parameter to use the device's default selection.
Decoding the Container Client-Side
If you receive a binary RAE container and want to decode it without parsing the format yourself, the hub also exposes:
POST /v1/measurements/decode
Content-Type: multipart/form-data
Upload a .rae file as form data and receive the parsed measurement components as JSON. Useful for testing and one-off decoding from environments where embedding a RAE parser is impractical.
Best Practices
- Call the
GETendpoint once after connecting and cache the trigger metadata for the lifetime of the connection — the parameter list does not change while the device is connected. - Validate
parametersagainst the metadata returned byGETto avoid runtime parameter errors. - For Aesthetix devices, restrict
metricGroupKeysto the metrics you actually need. Each group adds processing time on the device side; an unrestricted measurement is several seconds slower than a single-group measurement. - Prefer
raeBinaryfor any data that is going to be stored — the size difference compared toraeJsonis significant for measurements that contain images.
Error Cases
| Condition | HTTP | Error Code |
|---|---|---|
| Connected device not found | 404 | E5 |
Unknown measurementKey |
404 | E15 |
Unrecognised containerFormat |
400 | E16 |
Invalid imageFormat value (Aesthetix) |
400 | E42 |
| Hardware error during measurement | 502 | device-class–specific (e.g. E38, E39, E40) |
See Error Handling for the response format.