Progress
Health data
Daily steps, active calories, resting heart rate and sleep from Apple Health or Health Connect.
The daily health data a client's phone sends from Apple Health or Health Connect. The client's phone sends its data only while they have the HubFit app open, so the data is as recent as lastSyncedAt, and today's numbers grow until it next syncs. To compare clients' health data over a period, use GET /client-summaries with include=health.
Attributes
Where the data comes from, or
nullif the client hasn't connected Apple Health or Health Connect. New sources can appear.Known valuesapple_healthhealth_connect- daysarray of objects
Show 5 child attributesHide child attributes
- datedate
The day on the client's phone.
Calories burned by activity, in kcal. Not total energy.
The night that ended this morning, or
null.Show 7 child attributesHide child attributes
- durationSecondsinteger
Time asleep, awake time not included.
nullif the phone recorded no sleep stages.Light sleep, which Apple Health calls core sleep.
nullif the phone recorded no sleep stages.nullif the phone recorded no sleep stages.Time awake during the night.
nullif the phone recorded no sleep stages and no time awake.
{
"source": "apple_health",
"lastSyncedAt": "2026-10-26T14:32:05.000Z",
"days": [
{
"date": "2026-10-26",
"steps": 9412,
"activeCalories": 612,
"restingHeartRateBpm": 57,
"sleep": {
"durationSeconds": 27300,
"deepSeconds": 5400,
"lightSeconds": 14400,
"remSeconds": 6300,
"awakeSeconds": 1200,
"startAt": "2026-10-25T23:05:00.000Z",
"endAt": "2026-10-26T06:40:00.000Z"
}
}
]
}https://api.hubfit.com/v1/clients/{clientId}/health-dataThe client's daily health data from Apple Health or Health Connect, newest day first. Days with no data are left out. The client's phone sends its data only while they have the HubFit app open, so the data is as recent as lastSyncedAt, and today's numbers grow until it next syncs. A client who switched phones has data from both; this is the one that synced last. Requires clients:read.
curl -G https://api.hubfit.com/v1/clients/6ad6af41d3199442d31b2743/health-data \
-H "Authorization: Bearer $HUBFIT_API_KEY" \
-d startDate=2026-10-20 \
-d endDate=2026-10-26const response = await fetch("https://api.hubfit.com/v1/clients/6ad6af41d3199442d31b2743/health-data?startDate=2026-10-20&endDate=2026-10-26", {
headers: {
Authorization: `Bearer ${process.env.HUBFIT_API_KEY}`,
},
});
const { data } = await response.json();import os
import requests
response = requests.get(
"https://api.hubfit.com/v1/clients/6ad6af41d3199442d31b2743/health-data",
headers={"Authorization": f"Bearer {os.environ['HUBFIT_API_KEY']}"},
params={
"startDate": "2026-10-20",
"endDate": "2026-10-26",
},
)
data = response.json()["data"]{
"data": {
"source": "apple_health",
"lastSyncedAt": "2026-10-26T14:32:05.000Z",
"days": [
{
"date": "2026-10-26",
"steps": 9412,
"activeCalories": 612,
"restingHeartRateBpm": 57,
"sleep": {
"durationSeconds": 27300,
"deepSeconds": 5400,
"lightSeconds": 14400,
"remSeconds": 6300,
"awakeSeconds": 1200,
"startAt": "2026-10-25T23:05:00.000Z",
"endAt": "2026-10-26T06:40:00.000Z"
}
}
]
}
}