Install
openclaw skills install beeminderBeeminder API for goal tracking and commitment devices. Use when checking Beeminder goals, adding datapoints, viewing due goals, managing commitments, or tracking habits. Triggers on "beeminder", "goals due", "add datapoint", "track habit", "goal status", "derail".
openclaw skills install beeminderDirect REST API access to Beeminder. No CLI dependencies.
Set two env vars:
BEEMINDER_USERNAME - Beeminder usernameBEEMINDER_AUTH_TOKEN - personal auth token from https://www.beeminder.com/api/v1/auth_token.json (requires login)All examples use:
BASE="https://www.beeminder.com/api/v1/users/$BEEMINDER_USERNAME"
curl -s "$BASE/goals.json?auth_token=$BEEMINDER_AUTH_TOKEN" | jq '[.[] | {slug, safebuf, baremin, limsum}]'
curl -s "$BASE/goals/GOAL.json?auth_token=$BEEMINDER_AUTH_TOKEN"
Key fields:
slug - goal identifiersafebuf - days of safety buffer (0 = due today, negative = in the red)baremin - minimum needed today to stay on tracklimsum - human-readable summary (e.g. "+1 due in 2 days")losedate - unix timestamp of derail daterate - commitment raterunits - rate units (d/w/m/y)headsum - summary of current statusgoalval - end goal value (null if no end goal)gunits - goal units (e.g. "hours", "pages")curl -s "$BASE/goals.json?auth_token=$BEEMINDER_AUTH_TOKEN" \
| jq '[.[] | select(.safebuf <= 0)] | sort_by(.losedate) | .[] | {slug, baremin, limsum}'
curl -s "$BASE/goals.json?auth_token=$BEEMINDER_AUTH_TOKEN" \
| jq --arg cutoff "$(date -d '+2 days' +%s)" \
'[.[] | select(.losedate <= ($cutoff | tonumber))] | sort_by(.losedate) | .[] | {slug, baremin, limsum}'
curl -s -X POST "$BASE/goals/GOAL/datapoints.json" \
-d "auth_token=$BEEMINDER_AUTH_TOKEN" \
-d "value=N" \
-d "comment=TEXT"
Optional: -d "requestid=UNIQUE_ID" for idempotent retries (safe to repeat without duplicating).
curl -s "$BASE/goals/GOAL/datapoints.json?auth_token=$BEEMINDER_AUTH_TOKEN&count=5&sort=daystamp"
curl -s -X PUT "$BASE/goals/GOAL/datapoints/DATAPOINT_ID.json" \
-d "auth_token=$BEEMINDER_AUTH_TOKEN" \
-d "value=N" \
-d "comment=TEXT"
curl -s -X DELETE "$BASE/goals/GOAL/datapoints/DATAPOINT_ID.json?auth_token=$BEEMINDER_AUTH_TOKEN"
curl -s "$BASE/goals.json?auth_token=$BEEMINDER_AUTH_TOKEN" \
| jq '[.[] | select(.safebuf <= 1)] | sort_by(.safebuf) | .[] | {slug, baremin, limsum, safebuf}'
curl -s -X POST "$BASE/goals/GOAL/datapoints.json" \
-d "auth_token=$BEEMINDER_AUTH_TOKEN" \
-d "value=1" \
-d "comment=done" \
-d "requestid=GOAL-$(date +%Y%m%d)"
https://www.beeminder.com/api/v1/ (https, www required)jq to parse responsesYYYYMMDD format