Direct 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共 1 个版本