Progress
Nutrition
The food your clients logged each day, against their daily targets.
A nutrition log is one day of food a client logged in HubFit, with the meals, foods, photos and note they recorded and the day's target. A day appears only once the client logs something. A client's nutrition target is the daily goal set for each weekday, by the coach or by the client in the app. Clients who track in Cronometer instead have no logs here. To compare clients' nutrition over a period, use GET /client-summaries with include=nutrition.

Attributes
- idstring
Its unique ID.
- clientobject
- datedate
The client's calendar day the log is for.
- totalsobject
What was eaten, in kilocalories and grams. A nutrient the food doesn't list counts as 0.
Show 9 child attributesHide child attributes
- caloriesnumber
Kilocalories.
- proteinGramsnumber
- carbsGramsnumber
- fatGramsnumber
- fiberGramsnumber
- sugarGramsnumber
- saturatedFatGramsnumber
- monounsaturatedFatGramsnumber
- polyunsaturatedFatGramsnumber
The day's target as it stood when the client last saved the day, the rest-day target on a rest day.
nullif no target was set; each value isnullif it was left empty.Show 4 child attributesHide child attributes
- foodCountinteger
How many foods the client logged that day.
- photoCountinteger
How many meal photos the client added to the day's food journal.
- notestring
The client's note on the day. Empty if none.
- mealsarray of objects
The day's meals, named as the client's Daily Meals, in order.
Show 3 child attributesHide child attributes
- namestring
- foodsarray of objects
Show 4 child attributesHide child attributes
- namestring
- servingDescriptionstring
The serving the client picked, such as
1 cupor100 g. - servingsnumber
How many of that serving the client ate.
- nutrientsobject
What was eaten, in kilocalories and grams. A nutrient the food doesn't list counts as 0.
Show 9 child attributesHide child attributes
- caloriesnumber
Kilocalories.
- proteinGramsnumber
- carbsGramsnumber
- fatGramsnumber
- fiberGramsnumber
- sugarGramsnumber
- saturatedFatGramsnumber
- monounsaturatedFatGramsnumber
- polyunsaturatedFatGramsnumber
- photoCountinteger
How many photos the client added to this meal.
{
"id": "6ad6af7dba37657cba35d27b",
"client": {
"id": "6ad6af41d3199442d31b2743",
"name": "Jordan Miller"
},
"date": "2026-10-26",
"totals": {
"calories": 2350,
"proteinGrams": 180,
"carbsGrams": 240,
"fatGrams": 70,
"fiberGrams": 32,
"sugarGrams": 45,
"saturatedFatGrams": 22,
"monounsaturatedFatGrams": 28,
"polyunsaturatedFatGrams": 14
},
"target": {
"calories": 2350,
"proteinGrams": 180,
"carbsGrams": 240,
"fatGrams": 70
},
"foodCount": 12,
"photoCount": 2,
"note": "Felt strong. Added 5 lb on bench.",
"meals": [
{
"name": "Breakfast",
"foods": [
{
"name": "Greek yogurt, plain",
"servingDescription": "1 cup (245 g)",
"servings": 1,
"nutrients": {
"calories": 2350,
"proteinGrams": 180,
"carbsGrams": 240,
"fatGrams": 70,
"fiberGrams": 32,
"sugarGrams": 45,
"saturatedFatGrams": 22,
"monounsaturatedFatGrams": 28,
"polyunsaturatedFatGrams": 14
}
}
],
"photoCount": 2
}
]
}Attributes
- mondayobject
Each value is
nullif it was left empty.Show 5 child attributesHide child attributes
- isRestDayboolean
Whether this weekday is marked as a rest day, which has its own target.
- tuesdayobject
Each value is
nullif it was left empty.Show 5 child attributesHide child attributes
- isRestDayboolean
Whether this weekday is marked as a rest day, which has its own target.
- wednesdayobject
Each value is
nullif it was left empty.Show 5 child attributesHide child attributes
- isRestDayboolean
Whether this weekday is marked as a rest day, which has its own target.
- thursdayobject
Each value is
nullif it was left empty.Show 5 child attributesHide child attributes
- isRestDayboolean
Whether this weekday is marked as a rest day, which has its own target.
- fridayobject
Each value is
nullif it was left empty.Show 5 child attributesHide child attributes
- isRestDayboolean
Whether this weekday is marked as a rest day, which has its own target.
- saturdayobject
Each value is
nullif it was left empty.Show 5 child attributesHide child attributes
- isRestDayboolean
Whether this weekday is marked as a rest day, which has its own target.
- sundayobject
Each value is
nullif it was left empty.Show 5 child attributesHide child attributes
- isRestDayboolean
Whether this weekday is marked as a rest day, which has its own target.
{
"monday": {
"calories": 2350,
"proteinGrams": 180,
"carbsGrams": 240,
"fatGrams": 70,
"isRestDay": true
},
"tuesday": {
"calories": 2350,
"proteinGrams": 180,
"carbsGrams": 240,
"fatGrams": 70,
"isRestDay": true
},
"wednesday": {
"calories": 2350,
"proteinGrams": 180,
"carbsGrams": 240,
"fatGrams": 70,
"isRestDay": true
},
"thursday": {
"calories": 2350,
"proteinGrams": 180,
"carbsGrams": 240,
"fatGrams": 70,
"isRestDay": true
},
"friday": {
"calories": 2350,
"proteinGrams": 180,
"carbsGrams": 240,
"fatGrams": 70,
"isRestDay": true
},
"saturday": {
"calories": 2350,
"proteinGrams": 180,
"carbsGrams": 240,
"fatGrams": 70,
"isRestDay": true
},
"sunday": {
"calories": 2350,
"proteinGrams": 180,
"carbsGrams": 240,
"fatGrams": 70,
"isRestDay": true
}
}https://api.hubfit.com/v1/clients/{clientId}/nutrition-targetThe client's current daily target for calories and macros, for each day of the week, set by the coach or by the client in the app. A weekday marked as a rest day has the rest-day target. data is null if no target is set. Requires clients:read.
curl https://api.hubfit.com/v1/clients/6ad6af41d3199442d31b2743/nutrition-target \
-H "Authorization: Bearer $HUBFIT_API_KEY"const response = await fetch("https://api.hubfit.com/v1/clients/6ad6af41d3199442d31b2743/nutrition-target", {
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/nutrition-target",
headers={"Authorization": f"Bearer {os.environ['HUBFIT_API_KEY']}"},
)
data = response.json()["data"]{
"data": {
"monday": {
"calories": 2350,
"proteinGrams": 180,
"carbsGrams": 240,
"fatGrams": 70,
"isRestDay": true
},
"tuesday": {
"calories": 2350,
"proteinGrams": 180,
"carbsGrams": 240,
"fatGrams": 70,
"isRestDay": true
},
"wednesday": {
"calories": 2350,
"proteinGrams": 180,
"carbsGrams": 240,
"fatGrams": 70,
"isRestDay": true
},
"thursday": {
"calories": 2350,
"proteinGrams": 180,
"carbsGrams": 240,
"fatGrams": 70,
"isRestDay": true
},
"friday": {
"calories": 2350,
"proteinGrams": 180,
"carbsGrams": 240,
"fatGrams": 70,
"isRestDay": true
},
"saturday": {
"calories": 2350,
"proteinGrams": 180,
"carbsGrams": 240,
"fatGrams": 70,
"isRestDay": true
},
"sunday": {
"calories": 2350,
"proteinGrams": 180,
"carbsGrams": 240,
"fatGrams": 70,
"isRestDay": true
}
}
}https://api.hubfit.com/v1/nutrition-logsThe days your clients logged food, newest first, with each day's totals and target but not its meals. Across every client you can reach (team members with the Standard role only see their assigned clients), or one client's with clientId. Requires clients:read.
Query parameters
- clientIdstring
Only this client's logs.
- startDatedate
Only days from this date, included, as
YYYY-MM-DD. Days are the client's own calendar days. - endDatedate
Only days up to this date, included, as
YYYY-MM-DD. - limitinteger
How many results to return, from 1 to 100.
Default25 - cursorstring
The
nextCursorfrom the previous page.
Returns
A page of nutrition logs.
curl -G https://api.hubfit.com/v1/nutrition-logs \
-H "Authorization: Bearer $HUBFIT_API_KEY" \
-d clientId=6ad6af41d3199442d31b2743 \
-d startDate=2026-10-20const response = await fetch("https://api.hubfit.com/v1/nutrition-logs?clientId=6ad6af41d3199442d31b2743&startDate=2026-10-20", {
headers: {
Authorization: `Bearer ${process.env.HUBFIT_API_KEY}`,
},
});
const { data, nextCursor } = await response.json();import os
import requests
response = requests.get(
"https://api.hubfit.com/v1/nutrition-logs",
headers={"Authorization": f"Bearer {os.environ['HUBFIT_API_KEY']}"},
params={
"clientId": "6ad6af41d3199442d31b2743",
"startDate": "2026-10-20",
},
)
page = response.json()
data, next_cursor = page["data"], page["nextCursor"]{
"data": [
{
"id": "6ad6af7dba37657cba35d27b",
"client": {
"id": "6ad6af41d3199442d31b2743",
"name": "Jordan Miller"
},
"date": "2026-10-26",
"totals": {
"calories": 2350,
"proteinGrams": 180,
"carbsGrams": 240,
"fatGrams": 70,
"fiberGrams": 32,
"sugarGrams": 45,
"saturatedFatGrams": 22,
"monounsaturatedFatGrams": 28,
"polyunsaturatedFatGrams": 14
},
"target": {
"calories": 2350,
"proteinGrams": 180,
"carbsGrams": 240,
"fatGrams": 70
},
"foodCount": 12,
"photoCount": 2,
"note": "Felt strong. Added 5 lb on bench."
}
],
"nextCursor": "eyJpZCI6IjZhZDZhZjNmMjljNTk3ZjE1In0",
"totalCount": 48
}https://api.hubfit.com/v1/nutrition-logs/{logId}One day a client logged, with every meal (in the order of the client's Daily Meals) and the foods in it. Requires clients:read.
curl https://api.hubfit.com/v1/nutrition-logs/6ad6af7dba37657cba35d27b \
-H "Authorization: Bearer $HUBFIT_API_KEY"const response = await fetch("https://api.hubfit.com/v1/nutrition-logs/6ad6af7dba37657cba35d27b", {
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/nutrition-logs/6ad6af7dba37657cba35d27b",
headers={"Authorization": f"Bearer {os.environ['HUBFIT_API_KEY']}"},
)
data = response.json()["data"]{
"data": {
"id": "6ad6af7dba37657cba35d27b",
"client": {
"id": "6ad6af41d3199442d31b2743",
"name": "Jordan Miller"
},
"date": "2026-10-26",
"totals": {
"calories": 2350,
"proteinGrams": 180,
"carbsGrams": 240,
"fatGrams": 70,
"fiberGrams": 32,
"sugarGrams": 45,
"saturatedFatGrams": 22,
"monounsaturatedFatGrams": 28,
"polyunsaturatedFatGrams": 14
},
"target": {
"calories": 2350,
"proteinGrams": 180,
"carbsGrams": 240,
"fatGrams": 70
},
"foodCount": 12,
"photoCount": 2,
"note": "Felt strong. Added 5 lb on bench.",
"meals": [
{
"name": "Breakfast",
"foods": [
{
"name": "Greek yogurt, plain",
"servingDescription": "1 cup (245 g)",
"servings": 1,
"nutrients": {
"calories": 2350,
"proteinGrams": 180,
"carbsGrams": 240,
"fatGrams": 70,
"fiberGrams": 32,
"sugarGrams": 45,
"saturatedFatGrams": 22,
"monounsaturatedFatGrams": 28,
"polyunsaturatedFatGrams": 14
}
}
],
"photoCount": 2
}
]
}
}