This guide is intended to provide instructions on how to interact with and use the VALD External HumanTrak API.
Jump to:
Identify your region
The endpoint you use to interact with the HumanTrak API is dependant on what region you (the client) reside in.
Choose your region below and copy the endpoint URL provided.
| Australia (East) |
| https://prd-aue-api-externalhumantrakv2.valdperformance.com/swagger/index.html?urls.primaryName=v2 |
| United States (East) |
| https://prd-use-api-externalhumantrakv2.valdperformance.com/swagger/index.html?urls.primaryName=v2 |
| Europe (West) |
| https://prd-euw-api-externalhumantrakv2.valdperformance.com/swagger/index.html?urls.primaryName=v2 |
If you are unsure which region-specific URL you should be using, please contact support@vald.com.
Retrieve test descriptions (Optional)
URL: /v2/test-type/metrics
Path Parameters
None
Query Parameters
None
Description
If you would like to know which test types and metrics to expect from the External HumanTrak API, you may query this URL before syncing data.
Retrieve test data
URL: /v2/tests-by-modified-date
Path Parameters
None
Query Parameters
| Parameter | Required? | Instruction |
TenantId |
Required | Specify the ID of the Tenant from which to receive Tests. |
ModifiedFromUtc |
Required |
Specify the last time you successfully retrieved tests for this tenantId. Format: YYYY-MM-DDT00:00:00.0000000Z |
Description
To iterate through all HumanTrak test results for this tenant:
Note: Tests are returned in ascending order of modification date (i.e. oldest to newest).
- Set the
startDatevariable.- If HumanTrak test data has been previously retrieved and saved for this Tenant, do the following:
- From the saved test data, find the test with the most recent
modifiedDateUtcand setstartDateto thismodifiedDateUtc.
- From the saved test data, find the test with the most recent
- Otherwise, if this is the first time:
- Set
startDatevariable to1970-01-01T00:00:00Z
- Set
- If HumanTrak test data has been previously retrieved and saved for this Tenant, do the following:
- Retrieve a page of data using
/v2/tests-by-modified-date?TenantId={tenantId}&ModifiedFromUtc={startDate}. - Upsert the retrieved test data (i.e. update tests that already exist in your database and insert new tests that don't exist).
- In your saved data, find the test with the most recent
modifiedDateUtc. Save this date into thelastModifiedDateUtcvariable. - Retrieve the next page of data using
/v2/tests-by-modified-date?TenantId={tenantId}&ModifiedFromUtc={lastModifiedDateUtc}.
Ensure you use the exact high-precision
modifiedDateUtcvalue served by the API. Do not round the value oflastModifiedDateUtc.
- Upsert the retrieved test data.
- Repeat steps 4–6 until No Content
204Status Code is returned.
Interpret test data
Description
Test data provides metricGroups with contained summaryMeasurements and asymmetryMeasurements.
-
metricGroupsis a list of every metric a test type supports -
summaryMeasurementsandasymmetryMeasurementswill contain aggregates for each side of the body recorded
Example response
This is an example response for retrieving data for a Squat Test through the HumanTrak API.
{
"testId": "<TEST_ID>",
"startDateUtc": "2021-01-01T00:00:00Z",
"endDateUtc": "2021-01-01T00:20:00Z",
"profileId": "<PROFILE_ID>",
"tenantId": "<TENANT_ID>",
"modifiedDateUtc": "2021-01-01T00:20:00Z",
"testTypeCode": "TT_SQUAT-DL",
"repetitionCounts": [
{
"movementSide": "Both",
"count": 6
}
],
"metricGroups": [
{
"code": "MG_SQUAT-DL_HIP-FLEX-AT-KNEE-FLEX-PEAK",
"longName": "Hip Flexion at Peak Knee Flexion",
"shortName": "Hip Flexion",
"classification": "Secondary",
"trendSentiment": "Negative",
"summaryMeasurements": [
{
"side": "Left",
"unit": "Degrees",
"aggregates": {
"max": 69.85,
"min": 23.68,
"avg": 43.22
}
},
{
"side": "Right",
"unit": "Degrees",
"aggregates": {
"max": 71.71,
"min": 28.26,
"avg": 47.67
}
}
],
"asymmetryMeasurement": {
"unit": "Percent",
"aggregates": {
"max": 2.59,
"min": 16.21,
"avg": 9.34
}
}
}
]
}Retrieve repetition data
URL: GET /v2/test/{testId}/repetitions
Once you've identified the test to be analyzed, you can pull all its repetition‑level data as well. This is especially useful if you need granular, rep‑by‑rep insights.
Path Parameters
| Parameter | Required? | Instruction |
testId |
Required | The ID of the test you want to retrieve repetitions for |
Query Parameters
| Parameter | Required? | Instruction |
tenantId |
Required | The ID of the tenant which the test/reps belong to |
profileId |
Required | The ID of the profile which the test/reps belong to |
Description
To retrieve repetitions for a test:
-
First, retrieve the list of tests using Steps 1 above.From those responses, you will have:
testIdtenantIdprofileId
-
For each test you want to analyze, send a GET request to the endpoint.You will receive a structured list of repetitions, where each rep includes:
- the rep number
- the side (both/left/right)
- all associated metrics and metric values
Example response
{
"testTypeCode": "TT_SQUAT-DL",
"repetitions": [
{
"number": 1,
"side": "Both",
"metrics": [
{
"metricGroupCode": "MG_SQUAT-DL_ANKLE-DORSIFLEXION-AT-PEAK-KNEE-FLEXION",
"values": {
"isSided": true,
"leftValue": 11.11
"rightValue": 13.89
}
},
{
"metricGroupCode": "MG_SQUAT-DL_PELVIS-ANTERIOR-TILT-AT-KNEE-FLEX-PEAK",
"values": {
"isSided": false,
"unsidedValue": 22.22
}
}
]
}
]
}
Interpret repetition data
To make it easier for practitioners and analysts to work with the response:
number
Represents the repetition number (1, 2, 3, …).
side
Indicates which side the repetition applies to.
- "Both" → A bilateral test repetition (e.g. squat).
- "Left" or "Right" → A unilateral test repetition (e.g. single-leg squat).
- "NotApplicable" → A test repetition with no sidedness (e.g. trunk flexion).
isSided (for each metric)
- If
true, the metric returns both aleftValueandrightValue. - If
false, the metric returns a singleunsidedValue.
Important for unilateral tests:
Each repetition corresponds to only one side.
- The performing side returns its value.
- The non‑performing side will return
nullfor sided metrics.
This structure allows for clean downstream analysis regardless of movement type, especially when blending bilateral and unilateral tests in multi‑test pipelines.
Comments
0 comments
Please sign in to leave a comment.