goals:read for reads and goals:write for mutations. See Quick Start for authentication and rate limits.
Two parameters are not obvious from the table:
PATCH /v1/dev/user/goals/{goal_id}/progresstakescurrent_valueas a required query parameter (e.g.?current_value=42.5) — a JSON body alone returns422.GET /v1/dev/user/goals/{goal_id}/historytakes an optionaldaysquery parameter (default30, max365).