Metric Catalog
The exact metric IDs accepted by the public daily, scores, and timeseries endpoints.
Pass one or more comma-separated IDs in the types query parameter. Omit types to return every metric the endpoint serves.
Scores
Accepted by GET /v1/users/{id}/scores only.
| ID | Value |
|---|---|
sleep_score | Sleep score, 0–100 |
recovery_score | Recovery score, 0–100 |
strain_score | Strain score, 0–100 |
nutrition_score | Nutrition score, 0–100 |
stress_score | Stress score, 0–100 |
Daily Metrics
Accepted by GET /v1/users/{id}/daily.
| ID | Unit |
|---|---|
Activity and Energy | |
steps | steps |
distance | km |
exercise | minutes |
flights_ | floors |
active_ | calories |
total_ | calories |
Nutrition | |
calories_ | calories |
carbohydrates | g |
protein | g |
fat | g |
fiber | g |
sodium | mg |
water | ml |
alcohol_ | drinks |
Sleep | |
asleep | minutes |
sleep_ | percent |
deep_ | minutes |
light_ | minutes |
rem_ | minutes |
time_ | minutes |
time_ | minutes |
restorative_ | minutes, deep plus REM |
sleep_ | bpm, mean during the main sleep |
sleep_ | ms, mean during the main sleep |
sleep_ | breaths per minute, mean during the main sleep |
sleep_ | percent, mean during the main sleep |
Vitals | |
resting_ | bpm |
heart_ | bpm |
heart_ | ms |
respiratory_ | breaths per minute |
blood_ | percent |
vo2_ | ml/kg/min |
Body | |
weight | kg |
height | cm |
body_ | percent |
body_ | kg/m² |
lean_ | percent |
Metric availability
The catalog defines the response vocabulary, not a promise that every provider supplies every metric. A value is null when Sonar has no consolidated reading for that user and date.
For on-device integrations, compare Apple Health, Health Connect, and Samsung Health in Supported Native Data.
Request Examples
GET /v1/users/{id}/daily?types=steps,rem_sleepTypes are case-sensitive. Whitespace around comma-separated values is ignored and duplicate IDs are returned once. An empty or unsupported list returns 422 invalid_types.
The API always returns canonical metric units. Unit conversion is not part of the current public contract.
Timeseries Metrics
The IDs accepted by metric on GET /v1/users/{id}/timeseries. These are sampled readings, so a value at a timestamp is the mean of the samples inside that bucket.
| ID | Unit |
|---|---|
heart_rate | bpm |
heart_rate_variability | ms |
respiratory_rate | breaths per minute |
blood_oxygen | percent |
body_temperature | °C |
skin_temperature | °C |
blood_glucose | mg/dL |
systolic | mmHg |
diastolic | mmHg |
Steps, distance, and calories are daily totals from every provider and are not available as timeseries. An unsupported ID returns 422 invalid_metric.
Sonar