Reference
Set Habit Completion
POST
Check or uncheck your habit for an explicit date. May publish a shared check-in and trigger friend notifications under your existing sharing settings. Reuse requestID only for identical retries. Read the latest habit and check-in revisions before changing state.
accessKeyheader
AuthorizationBearer <Sundial access key>application/json- body
requestID*stringFormat
uuidhabitID*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 <= 100completed*booleanexpectedRevision*|The check-in revision returned by list_habits; null when no record exists.
Match
^\d+$expectedHabitRevision*stringThe habit revision returned by list_habits. Changes to the habit or its sharing invalidate it.
Match
^\d+$Confirmed result.
application/json- response
requestID*stringFormat
uuidcheckIn*curl -X POST 'https://api.sundialhabits.com/api/v1/check-ins' \ -H 'Authorization: Bearer <ACCESS_KEY>' \ -H 'Content-Type: application/json' \ -d '{ "requestID": "00000000-0000-4000-8000-000000000002", "habitID": "00000000-0000-4000-8000-000000000002", "day": "2026-10-20", "timeZone": "America/Los_Angeles", "completed": true, "expectedRevision": "1", "expectedHabitRevision": "1"}'Example Response
{ "requestID": "00000000-0000-4000-8000-000000000002", "checkIn": { "habitID": "00000000-0000-4000-8000-000000000002", "day": "2026-10-20", "completed": true, "timeZone": "America/Los_Angeles", "revision": "1" }}