<!-- BusyBot node reference — https://busybot.net/tools/beeminder/ -->

> Node: Beeminder (`beeminder`) · Action · v1
> Category: Productivity · Credentials: Beeminder API (`beeminderApi`)
> Updated: 2026-08-16

# Beeminder

> Manage goals, datapoints, charges, and user data in Beeminder

## Overview

Beeminder is a commitment contract and goal-tracking service. This tool provides full CRUD operations for datapoints (create, create all, get, get many, update, delete), goals (create, get, get many, get archived, update, refresh, short circuit, step down, cancel step down, uncle/derail), charges (create), and user info (get). Uses the Beeminder REST API v1.

**Category:** Productivity  
**Tool Name:** `beeminder`  
**Version:** 1

**Appearance:** Icon: `lucide-Target` | Color: `#FFD301`

## Node Type

**Action** — processes input items and produces output

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **Beeminder API** credentials.
See the [Credentials Guide](https://busybot.net/credentials/beeminder-api/) for setup instructions.

### Resources

| Resource | Value |
|----------|-------|
| Charge | `charge` |
| Datapoint | `datapoint` |
| Goal | `goal` |
| User | `user` |

### Operations

Each resource has its own Operation list. Pick the resource first, then the operation.

| Resource | Operation | Value | Description |
|----------|-----------|-------|-------------|
| Charge | Create | `create` | Create a charge |
| Datapoint | Create | `create` | Create datapoint for goal |
| Datapoint | Create All | `createAll` | Create multiple datapoints at once |
| Datapoint | Delete | `delete` | Delete a datapoint |
| Datapoint | Get | `get` | Get a single datapoint |
| Datapoint | Get Many | `getAll` | Get many datapoints for a goal |
| Datapoint | Update | `update` | Update a datapoint |
| Goal | Create | `create` | Create a new goal |
| Goal | Get | `get` | Get a specific goal |
| Goal | Get Many | `getAll` | Get many goals |
| Goal | Get Archived | `getArchived` | Get archived goals |
| Goal | Update | `update` | Update a goal |
| Goal | Refresh | `refresh` | Refresh goal data |
| Goal | Short Circuit | `shortCircuit` | Short circuit pledge |
| Goal | Step Down | `stepDown` | Step down pledge |
| Goal | Cancel Step Down | `cancelStepDown` | Cancel step down |
| Goal | Uncle | `uncle` | Derail a goal and charge the pledge amount |
| User | Get | `get` | Get user information |

### Parameters

#### Charge: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Amount | `number` | Yes | `0` | Charge amount in USD. |
| Additional Fields | `collection` | No | `{}` | Optional fields for the charge. |
| — Note | `string` | No | — | Charge explanation. |
| — Dry Run | `boolean` | No | `false` | Whether to test charge creation without actually charging. |

#### Datapoint: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Goal Name | `string` | Yes | — | The slug (URL-safe name) of the goal. Find in your Beeminder dashboard URL: beeminder.com/username/goalname. |
| Value | `number` | Yes | `1` | Datapoint value to send. |
| Additional Fields | `collection` | No | `{}` | Optional fields for the datapoint. |
| — Comment | `string` | No | — | Comment for the datapoint. |
| — Timestamp | `string` | No | — | Timestamp for the datapoint (ISO 8601 or any parseable date string). Defaults to "now" if omitted. |
| — Request ID | `string` | No | — | String to uniquely identify a datapoint (for idempotency). |

#### Datapoint: Create All

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Goal Name | `string` | Yes | — | The slug (URL-safe name) of the goal. Find in your Beeminder dashboard URL: beeminder.com/username/goalname. |
| Datapoints | `json` | Yes | `[]` | Array of datapoint objects to create. Each object should contain "value" and optionally "timestamp", "comment", etc. |

#### Datapoint: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Goal Name | `string` | Yes | — | The slug (URL-safe name) of the goal. Find in your Beeminder dashboard URL: beeminder.com/username/goalname. |
| Datapoint ID | `string` | Yes | — | The ID of the datapoint. |

#### Datapoint: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Goal Name | `string` | Yes | — | The slug (URL-safe name) of the goal. Find in your Beeminder dashboard URL: beeminder.com/username/goalname. |
| Datapoint ID | `string` | Yes | — | The ID of the datapoint. |

#### Datapoint: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Goal Name | `string` | Yes | — | The slug (URL-safe name) of the goal. Find in your Beeminder dashboard URL: beeminder.com/username/goalname. |
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `30` | Max number of results to return. _(shown when Return All is `false`)_ |
| Options | `collection` | No | `{}` | Sorting and paging options for the query. |
| — Sort | `string` | No | `id` | Attribute to sort on. |
| — Page | `number` | No | `1` | Page number (1-indexed). Used only when Return All is false. _(shown when Return All is `false`)_ |
| — Per Page | `number` | No | `25` | Number of results per page. Default 25. Ignored without page parameter. _(shown when Return All is `false`)_ |

#### Datapoint: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Goal Name | `string` | Yes | — | The slug (URL-safe name) of the goal. Find in your Beeminder dashboard URL: beeminder.com/username/goalname. |
| Datapoint ID | `string` | Yes | — | The ID of the datapoint. |
| Update Fields | `collection` | No | `{}` | Datapoint fields to change. |
| — Value | `number` | No | `1` | Datapoint value to send. |
| — Comment | `string` | No | — | Comment for the datapoint. |
| — Timestamp | `string` | No | — | Timestamp for the datapoint (ISO 8601 or any parseable date string). Defaults to the existing timestamp if not provided. |

#### Goal: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Goal Slug | `string` | Yes | — | Unique URL-safe identifier for the goal. |
| Goal Title | `string` | Yes | — | Human-readable title for the goal. |
| Goal Type | `options` | Yes | `hustler` | Type of goal. Hustler = "Do More", Biker = "Odometer", Fatloser = "Do Less / weight loss", Gainer = "Gain weight", Inboxer = "Inbox Fewer", Drinker = "Do Less". |
| | | | | Options: `hustler`, `biker`, `fatloser`, `gainer`, `inboxer`, `drinker`, `custom` |
| Goal Units | `string` | Yes | — | Units for the goal (e.g., "hours", "pages", "pounds"). |
| Additional Fields | `collection` | No | `{}` | Optional fields for the new goal. |
| — Goal Date | `string` | No | — | Target date for the goal (ISO 8601 or any parseable date string). Converted to Unix timestamp. |
| — Goal Value | `number` | No | — | Target value for the goal. |
| — Rate | `number` | No | — | Rate of progress (units per day). |
| — Initial Value | `number` | No | `0` | Initial value for today's date. |
| — Secret | `boolean` | No | `false` | Whether the goal is secret. |
| — Data Public | `boolean` | No | `false` | Whether the data is public. |
| — Data Source | `options` | No | `manual` | Data source for the goal. |
| | | | | Options: `api`, `ifttt`, `zapier`, `manual` |
| — Dry Run | `boolean` | No | `false` | Whether to test the endpoint without actually creating a goal. |
| — Tags | `json` | No | `[]` | JSON array of alphanumeric tags for the goal. Replaces existing tags. |

#### Goal: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Goal Name | `string` | Yes | — | The slug (URL-safe name) of the goal. Find in your Beeminder dashboard URL: beeminder.com/username/goalname. |
| Additional Fields | `collection` | No | `{}` | Optional query settings for the goal. |
| — Include Datapoints | `boolean` | No | `false` | Whether to include datapoints in the response. |
| — Emaciated | `boolean` | No | `false` | Whether the goal attributes road, roadall, and fullroad will be stripped from the goal object. |

#### Goal: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Additional Fields | `collection` | No | `{}` | Optional query settings for the goal list. |
| — Emaciated | `boolean` | No | `false` | Whether the goal attributes road, roadall, and fullroad will be stripped from the goal objects. |

#### Goal: Get Archived

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Additional Fields | `collection` | No | `{}` | Optional query settings for the archived goal list. |
| — Emaciated | `boolean` | No | `false` | Whether the goal attributes road, roadall, and fullroad will be stripped from the goal objects. |

#### Goal: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Goal Name | `string` | Yes | — | The slug (URL-safe name) of the goal. Find in your Beeminder dashboard URL: beeminder.com/username/goalname. |
| Update Fields | `collection` | No | `{}` | Goal fields to change. |
| — Title | `string` | No | — | Human-readable title for the goal. |
| — Y-Axis | `string` | No | — | Y-axis label for the goal graph. |
| — Tmin | `string` | No | — | Minimum date for the goal in format yyyy-mm-dd. |
| — Tmax | `string` | No | — | Maximum date for the goal in format yyyy-mm-dd. |
| — Secret | `boolean` | No | `false` | Whether the goal is secret. |
| — Data Public | `boolean` | No | `false` | Whether the data is public. |
| — Road All | `json` | No | `[]` | Array of arrays defining the bright red line. Each sub-array contains [date, value, rate] with exactly one field null. |
| — Data Source | `options` | No | — | Data source for the goal. Use empty string for manual entry. |
| | | | | Options: `api`, `ifttt`, `zapier`, or an empty string for manual entry |
| — Tags | `json` | No | `[]` | JSON array of alphanumeric tags for the goal. Replaces existing tags. |

#### Goal: Refresh

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Goal Name | `string` | Yes | — | The slug (URL-safe name) of the goal. Find in your Beeminder dashboard URL: beeminder.com/username/goalname. |

#### Goal: Short Circuit

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Goal Name | `string` | Yes | — | The slug (URL-safe name) of the goal. Find in your Beeminder dashboard URL: beeminder.com/username/goalname. |

#### Goal: Step Down

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Goal Name | `string` | Yes | — | The slug (URL-safe name) of the goal. Find in your Beeminder dashboard URL: beeminder.com/username/goalname. |

#### Goal: Cancel Step Down

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Goal Name | `string` | Yes | — | The slug (URL-safe name) of the goal. Find in your Beeminder dashboard URL: beeminder.com/username/goalname. |

#### Goal: Uncle

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Goal Name | `string` | Yes | — | The slug (URL-safe name) of the goal. Find in your Beeminder dashboard URL: beeminder.com/username/goalname. |

#### User: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Additional Fields | `collection` | No | `{}` | Optional query settings for the user record. |
| — Associations | `boolean` | No | `false` | Whether to include associations in the response. |
| — Diff Since | `string` | No | — | Only goals and datapoints that have been created or updated since this timestamp will be returned (ISO 8601 or any parseable date string). |
| — Skinny | `boolean` | No | `false` | Whether to return minimal user data. |
| — Emaciated | `boolean` | No | `false` | Whether the goal attributes road, roadall, and fullroad will be stripped from any goal objects returned with the user. |
| — Datapoints Count | `number` | No | — | Number of datapoints to include. |

#### All Operations

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Max Concurrency | `number` | No | `10` | Maximum number of items to process concurrently. |

## Output Data

The object Beeminder returns is merged onto the item JSON at the top level — there is no wrapper property, so returned fields sit next to (and overwrite same-named) fields from the incoming item. The rest of the input JSON passes through and binary data is forwarded unchanged.

Every operation returns at least one output item. Operations that return a list fan out to one output item per element:

| Operation | Output items |
|-----------|--------------|
| Datapoint: Create All | One item per datapoint created |
| Datapoint: Get Many | One item per datapoint |
| Goal: Get Many | One item per goal |
| Goal: Get Archived | One item per archived goal |
| All other operations | One item, carrying the single object returned |

Reference the returned fields directly by expression — for a datapoint, `{{ $json.value }}` and `{{ $json.comment }}`.

Two parameters shape how much comes back and are worth setting deliberately: **Emaciated** strips the road, roadall and fullroad attributes from goal objects, and **Include Datapoints** (Goal: Get) adds the goal's datapoints to the returned goal.

## Usage Examples

- Add a datapoint to a Beeminder goal
- Create a new Beeminder goal with a target rate
- Get all datapoints for a goal
- Update a goal's settings
- Derail a goal (uncle) to trigger the pledge charge
- Create a charge against your Beeminder account
- Get authenticated user information
- Batch create multiple datapoints at once

## Example Configuration

Add a single datapoint to a goal, with a comment and an explicit timestamp:

```json
{
  "type": "beeminder",
  "parameters": {
    "resource": "datapoint",
    "operation": "create",
    "goalName": "exercise",
    "value": 30,
    "additionalFields": {
      "comment": "{{ $json.workoutName }}",
      "timestamp": "2024-01-15T10:00:00Z",
      "requestid": "{{ $json.sessionId }}"
    }
  }
}
```

Read back the most recent datapoints for a goal, newest page first:

```json
{
  "type": "beeminder",
  "parameters": {
    "resource": "datapoint",
    "operation": "getAll",
    "goalName": "weight",
    "returnAll": false,
    "limit": 50,
    "options": {
      "sort": "timestamp",
      "page": 1,
      "per": 50
    }
  }
}
```

Create a Do More goal with a daily rate:

```json
{
  "type": "beeminder",
  "parameters": {
    "resource": "goal",
    "operation": "create",
    "slug": "daily-steps",
    "title": "Daily Steps Goal",
    "goal_type": "hustler",
    "gunits": "steps",
    "additionalFields": {
      "goaldate": "2025-12-31",
      "goalval": 10000,
      "rate": 100,
      "initval": 0,
      "datapublic": true,
      "datasource": "api"
    }
  }
}
```

Derail a goal on purpose so the pledge is charged:

```json
{
  "type": "beeminder",
  "parameters": {
    "resource": "goal",
    "operation": "uncle",
    "goalName": "{{ $json.goalSlug }}"
  }
}
```

Test a charge without actually taking the money:

```json
{
  "type": "beeminder",
  "parameters": {
    "resource": "charge",
    "operation": "create",
    "amount": 25,
    "additionalFields": {
      "note": "Missed workout goal",
      "dryrun": true
    }
  }
}
```

### Error Handling

| Mode | Behavior |
|------|----------|
| **stop** | Halts workflow on first error |
| **continue** | Skips failed items, passes successful ones through |
| **errorPort** | Routes failed items to Error output port |

## Tips

Track goals and add datapoints to Beeminder commitment contracts via the Beeminder API.