Metric Catalog

The exact metric IDs accepted by the public daily, scores, and timeseries endpoints.

5 min read Updated Sep 09, 2026

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.

IDValue
sleep_scoreSleep score, 0–100
recovery_scoreRecovery score, 0–100
strain_scoreStrain score, 0–100
nutrition_scoreNutrition score, 0–100
stress_scoreStress score, 0–100

Daily Metrics

Accepted by GET /v1/users/{id}/daily.

IDUnit

Activity and Energy

stepssteps
distancekm
exerciseminutes
flights_climbedfloors
active_caloriescalories
total_caloriescalories

Nutrition

calories_consumedcalories
carbohydratesg
proteing
fatg
fiberg
sodiummg
waterml
alcohol_consumptiondrinks

Sleep

asleepminutes
sleep_efficiencypercent
deep_sleepminutes
light_sleepminutes
rem_sleepminutes
time_awakeminutes
time_in_bedminutes
restorative_sleepminutes, deep plus REM
sleep_heart_ratebpm, mean during the main sleep
sleep_heart_rate_variabilityms, mean during the main sleep
sleep_respiratory_ratebreaths per minute, mean during the main sleep
sleep_blood_oxygenpercent, mean during the main sleep

Vitals

resting_heart_ratebpm
heart_ratebpm
heart_rate_variabilityms
respiratory_ratebreaths per minute
blood_oxygenpercent
vo2_maxml/kg/min

Body

weightkg
heightcm
body_fat_percentagepercent
body_mass_indexkg/m²
lean_body_masspercent

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

http
GET /v1/users/{id}/daily?types=steps,rem_sleep

Types 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.

IDUnit
heart_ratebpm
heart_rate_variabilityms
respiratory_ratebreaths per minute
blood_oxygenpercent
body_temperature°C
skin_temperature°C
blood_glucosemg/dL
systolicmmHg
diastolicmmHg

Steps, distance, and calories are daily totals from every provider and are not available as timeseries. An unsupported ID returns 422 invalid_metric.