Reference
Get Habit Progress
GET
Read one habit’s current and best streak, with its unit, as of a calendar day. Accounts for schedule changes and breaks. Results reflect server-synced data.
accessKeyheader
AuthorizationBearer <Sundial access key>habitID*stringFormat
uuidday*stringGregorian calendar date, YYYY-MM-DD, between 1900 and 2100.
Match
^\d{4}-\d{2}-\d{2}$timeZone*stringIANA time zone used to interpret today, such as America/Los_Angeles.
Length
length <= 100Confirmed result.
application/json- response
asOf*stringMatch
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$Format
date-timehabitID*stringFormat
uuidday*stringMatch
^\d{4}-\d{2}-\d{2}$current*best*completedDays*integerRange
0 <= value <= 9007199254740991curl -X GET 'https://api.sundialhabits.com/api/v1/progress?habitID=00000000-0000-4000-8000-000000000002&day=2026-10-20&timeZone=America%2FLos_Angeles' \ -H 'Authorization: Bearer <ACCESS_KEY>'Example Response
{ "asOf": "2019-08-24T14:15:22Z", "habitID": "00000000-0000-4000-8000-000000000002", "day": "string", "current": { "count": 0, "unit": "days" }, "best": { "count": 0, "unit": "days" }, "completedDays": 0}