Daily Goals reference
Read one day's progress on each active goal, and set progress on custom and yes/no goals.
The DailyGoal API is not available on the Free plan. It works with a paid plan or during a free trial. See plans.
Usage notes
Already-created daily goals remain visible after their template's schedule changes, even if the new schedule excludes that date.
All operations require Pro or a trial. GET and DELETE take query parameters; other methods take a JSON body. The input table also includes any MCP-only idempotency_key argument; REST sends it as a header. See retrying creates. Example ids are synthetic; find your own with the search and list operations.
Operations
get_daily_goals: Get daily goalsset_goal_progress: Set goal progress
get_daily_goals
GET https://api.dailygoal.fit/v1/daily-goals
MCP tool get_daily_goals · Read-only · DailyGoal data only
Returns progress and completion for active goals on one date, including scheduled goals and daily rows kept after schedule changes. To see goal settings, including inactive goals, use list_goals.
Input
| Field | Type | Description |
|---|---|---|
| dateoptional | string (YYYY-MM-DD) | YYYY-MM-DD. Defaults to today's Activity Day. |
Full input schema, including bounds and nested alternatives (MCP)
{
"type": "object",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "YYYY-MM-DD. Defaults to today's Activity Day."
}
},
"additionalProperties": true
}Output
| Field | Type | Description |
|---|---|---|
| date | string (YYYY-MM-DD) | |
| timezone | string | |
| goals | object[] | |
| goals[].goalId | string | Goal template id, from list_goals or get_daily_goals. |
| goals[].name | string | |
| goals[].type | "numeric" | "boolean" | `numeric` goals have a target number; `boolean` goals are yes/no habits. |
| goals[].metric | "calories" | "protein" | "fat" | "carbs" | "alcohol" | "steps" | "hydration" | "custom" | null | |
| goals[].targetValue | number | null | |
| goals[].comparison | "min" | "max" | "equals" | null | |
| goals[].currentValue | number | boolean | A number for numeric goals, true or false for boolean goals. |
| goals[].completed | boolean | |
| goals[].calculated | boolean | True when progress is calculated from logged data. set_goal_progress refuses calculated goals. |
Full output schema
{
"type": "object",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"timezone": {
"type": "string"
},
"goals": {
"type": "array",
"items": {
"type": "object",
"properties": {
"goalId": {
"type": "string",
"description": "Goal template id, from list_goals or get_daily_goals."
},
"name": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"numeric",
"boolean"
],
"description": "`numeric` goals have a target number; `boolean` goals are yes/no habits."
},
"metric": {
"anyOf": [
{
"type": "string",
"enum": [
"calories",
"protein",
"fat",
"carbs",
"alcohol",
"steps",
"hydration",
"custom"
],
"description": "What a numeric goal measures. Every metric except `custom` is calculated from logged data (food entries, steps, hydration), so its progress cannot be set directly."
},
{
"type": "null"
}
]
},
"targetValue": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"comparison": {
"anyOf": [
{
"type": "string",
"enum": [
"min",
"max",
"equals"
],
"description": "`min`: reach at least the target. `max`: stay at or under it. `equals`: hit it exactly."
},
{
"type": "null"
}
]
},
"currentValue": {
"anyOf": [
{
"type": "number"
},
{
"type": "boolean"
}
],
"description": "A number for numeric goals, true or false for boolean goals."
},
"completed": {
"type": "boolean"
},
"calculated": {
"type": "boolean",
"description": "True when progress is calculated from logged data. set_goal_progress refuses calculated goals."
}
},
"required": [
"goalId",
"name",
"type",
"metric",
"targetValue",
"comparison",
"currentValue",
"completed",
"calculated"
],
"additionalProperties": true
}
}
},
"required": [
"date",
"timezone",
"goals"
],
"additionalProperties": true
}Example request
curl "https://api.dailygoal.fit/v1/daily-goals?date=2026-09-14" \
-H "Authorization: Bearer $DAILYGOAL_API_TOKEN"{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_daily_goals",
"arguments": {
"date": "2026-09-14"
}
}
}Example response
Synthetic data. REST returns this object as the body; MCP returns it as structuredContent.
{
"date": "2026-09-14",
"timezone": "Europe/London",
"goals": [
{
"goalId": "kn71z3x6c9v2b5n8m1q4w7e0r3t6y9u2",
"name": "Protein",
"type": "numeric",
"metric": "protein",
"targetValue": 140,
"comparison": "min",
"currentValue": 20.13,
"completed": false,
"calculated": true
},
{
"goalId": "kn72x4c7v0b3n6m9q2w5e8r1t4y7u0i3",
"name": "Stretch for 10 minutes",
"type": "boolean",
"metric": null,
"targetValue": null,
"comparison": null,
"currentValue": true,
"completed": true,
"calculated": false
},
{
"goalId": "kn73c5v8b1n4m7q0w3e6r9t2y5u8i1o4",
"name": "Glasses of water",
"type": "numeric",
"metric": "custom",
"targetValue": 8,
"comparison": "min",
"currentValue": 5,
"completed": false,
"calculated": false
}
]
}Errors
unauthorized(401)origin_not_allowed(403)misdirected_request(421)subscription_required(403)rate_limited(429)validation_failed(400)internal_error(500)
set_goal_progress
PUT https://api.dailygoal.fit/v1/daily-goals
MCP tool set_goal_progress · Changes data · Destructive · DailyGoal data only
Sets one day's progress on a custom numeric goal or a boolean (yes/no) goal, replacing the previous value. Calculated goals such as calories, protein or steps refuse this: log the food entry or steps instead. To change a goal's target or schedule, use save_goal instead.
Input
| Field | Type | Description |
|---|---|---|
| goalId | string | Goal template id, from list_goals or get_daily_goals. |
| dateoptional | string (YYYY-MM-DD) | YYYY-MM-DD. Defaults to today's Activity Day. |
| value | number | boolean | A number of at least 0 for a custom numeric goal, or true or false for a boolean goal. |
Full input schema, including bounds and nested alternatives (MCP)
{
"type": "object",
"properties": {
"goalId": {
"type": "string",
"description": "Goal template id, from list_goals or get_daily_goals."
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "YYYY-MM-DD. Defaults to today's Activity Day."
},
"value": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "boolean"
}
],
"description": "A number of at least 0 for a custom numeric goal, or true or false for a boolean goal."
}
},
"required": [
"goalId",
"value"
],
"additionalProperties": true
}Output
| Field | Type | Description |
|---|---|---|
| goalId | string | Goal template id, from list_goals or get_daily_goals. |
| date | string (YYYY-MM-DD) | |
| timezone | string | |
| currentValue | number | boolean | |
| completed | boolean |
Full output schema
{
"type": "object",
"properties": {
"goalId": {
"type": "string",
"description": "Goal template id, from list_goals or get_daily_goals."
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"timezone": {
"type": "string"
},
"currentValue": {
"anyOf": [
{
"type": "number"
},
{
"type": "boolean"
}
]
},
"completed": {
"type": "boolean"
}
},
"required": [
"goalId",
"date",
"timezone",
"currentValue",
"completed"
],
"additionalProperties": true
}Example request
curl -X PUT "https://api.dailygoal.fit/v1/daily-goals" \
-H "Authorization: Bearer $DAILYGOAL_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"goalId":"kn73c5v8b1n4m7q0w3e6r9t2y5u8i1o4","date":"2026-09-14","value":6}'{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "set_goal_progress",
"arguments": {
"goalId": "kn73c5v8b1n4m7q0w3e6r9t2y5u8i1o4",
"date": "2026-09-14",
"value": 6
}
}
}Example response
Synthetic data. REST returns this object as the body; MCP returns it as structuredContent.
{
"goalId": "kn73c5v8b1n4m7q0w3e6r9t2y5u8i1o4",
"date": "2026-09-14",
"timezone": "Europe/London",
"currentValue": 6,
"completed": false
}Errors
unauthorized(401)origin_not_allowed(403)misdirected_request(421)subscription_required(403)rate_limited(429)validation_failed(400)not_found(404)calculated_goal_readonly(409)internal_error(500)