List and filter measurements
/v2/measurementsAuthorization
api_key API key for authentication. Use format: Bearer YOUR_API_KEY
In: header
Query Parameters
Procedure to list measurements for. Required: measurements are scoped to a single procedure.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$uuidPin results to a single phase by name (used with measurement_name).
Pin results to a single measurement by name (used with phase_name).
Restrict results to these phase names.
Filter measurements by the outcome of their run.
Filter measurements by run ID.
Filter measurements whose run lasted at least this ISO 8601 duration.
^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$durationFilter measurements whose run lasted at most this ISO 8601 duration.
^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$durationFilter measurements by the deployment ID their run executed from.
Filter measurements by the procedure version tag of their run.
Filter measurements by the deployment environment of their run (production, preview, development).
Filter measurements by unit serial number.
Filter measurements by unit part number.
Filter measurements by unit revision number.
Filter measurements by unit batch number.
Filter measurements by the operator user ID of their run. Combined with operated_by_names as OR.
Filter measurements by the declared operator name of their run (operators without a TofuPilot account). Exact match; combined with operated_by_ids as OR.
Filter measurements by the station ID that created their run.
Filter measurements by the user ID that created their run.
Filter measurements taken at or after this timestamp (the start time of the phase that produced the measurement).
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$date-timeFilter measurements taken at or before this timestamp (the start time of the phase that produced the measurement).
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$date-timeExclude retried phase attempts, keeping only the final attempt.
trueFilter numeric measurements with a value at or above this number.
Filter numeric measurements with a value at or below this number.
Filter boolean measurements by value.
Filter string measurements by value.
Filter by measurement outcome.
Filter by measurement value type (numeric, boolean, string, multidimensional, empty, json).
Field to sort results by.
"started_at""started_at" | "value" | "outcome" | "serial_number" | "phase_name" | "measurement_name"Sort order direction.
"desc""asc" | "desc"Maximum number of measurements to return.
501 <= value <= 100Cursor for pagination. Use next_cursor from the previous response to fetch the next page.
-9007199254740991 <= value <= 9007199254740991Response Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v2/measurements?procedure_id=550e8400-e29b-41d4-a716-446655440000"{
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"phase_name": "Power",
"measurement_name": "Voltage",
"started_at": "2024-01-15T10:30:00Z",
"value": 3.3,
"bool_value": true,
"string_value": "OK",
"units": "V",
"measurement_outcome": "PASS",
"run_id": "550e8400-e29b-41d4-a716-446655440001",
"serial_number": "SN-2024-001234",
"sample": null,
"measurement_type": "numeric",
"retry_count": 0,
"is_final_attempt": true,
"validators": [
{
"outcome": "PASS",
"operator": "<=",
"expected_value": 3.6,
"expression": "x <= 3.6",
"is_decisive": true,
"is_expression_only": false,
"analytics_expression": "<= 3.6",
"has_custom_expression": false
}
]
}
],
"meta": {
"has_more": true,
"next_cursor": 50
}
}{
"message": "Bad request",
"code": "BAD_REQUEST",
"issues": []
}{
"message": "Unauthorized",
"code": "UNAUTHORIZED",
"issues": []
}{
"message": "Request timeout",
"code": "TIMEOUT",
"issues": []
}{
"message": "Internal server error",
"code": "INTERNAL_SERVER_ERROR",
"issues": []
}How is this guide?