Answer Check-in
POST/api/success-plan/check-ins/:checkIn/answer
Answers a due, snoozed, lapsed or skipped check-in. Each answer names one of the check-in's questions. Number, hours-by-role, yes/no and checklist answers become readings you entered on the goal; text answers are saved as quotes in your own words. Answer at least one question.
success_plan:writeGrant this scope to your token under Settings → Developer → Personal Access Tokens.
Authentication: Requires Bearer token with the success_plan:write scope. The user must hold the success_plan.manage permission.
Body:
answers(array, required, 1–5):question_key(string, required, max 60): the question'skey.goal_id(integer, optional): the question's goal.value(number or string): a number fornumberquestions, oryes/partly/nofor choice questions.roles(array, max 20): forroles_hours; rows ofrole(string, max 80) andhours_per_week(number, 0–168).text(string, max 2000): fortextquestions.items(string array, max 100, each max 200): the checklist items you still keep.choice(string, or string array for a checklist; each max 200): the option(s) picked, in place ofvalue/items.evidence(string):document,system_exportorestimate(defaultestimate).
409 codes: already_answered (with answered_by and answered_at) and not_due (still scheduled).
Check-in objects carry id, kind (go_live_14, day_30, day_90, day_180, year_end), title, due_on, status (scheduled, due, snoozed, answered, skipped, lapsed) with status_label, snoozed_until, snooze_count, can_snooze, can_answer, answered_by, answered_at, questions and answers. Questions are fixed the first time a check-in is due; each has a key, goal_id, label, input (number, roles_hours, yes_no, yes_partly_no, checklist, text), unit, optional, previous_reading_id and, for a checklist, items. The schedule is in Get Success Plan (check_ins). Answers in your own words (text) are customer text: show them as plain text, never as HTML.
Request
Responses
- 200
- 401
- 403
- 404
- 409
- 422
- 429
OK
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Not Found
Response Headers
Conflict
Response Headers
Unprocessable Entity
Response Headers
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.