> ## Documentation Index
> Fetch the complete documentation index at: https://cofounder.appeeky.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Commitments

> CRUD for the promises you make to your co-founder — the things you said you'd do, tracked so it can follow up.

```
GET    /v1/cofounder/commitments
POST   /v1/cofounder/commitments
PATCH  /v1/cofounder/commitments/:commitmentId
DELETE /v1/cofounder/commitments/:commitmentId
```

Commitments are things **you** promised to do (distinct from actions the agent proposed). They're mostly captured automatically from chat, but you can also manage them directly. See the [Continuity & Accountability capability](../capabilities/continuity-accountability) for how the agent follows up. All endpoints filter by your `owner_email`.

## GET — list commitments

Optional `appId` and `status` (`open` | `done` | `missed` | `cancelled`) filters.

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl "https://api.appeeky.com/v1/cofounder/commitments?status=open" -H "X-API-Key: $KEY"
```

```jsonc theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "data": {
    "commitments": [
      {
        "id": "uuid",
        "ownerEmail": "you@example.com",
        "appId": "6479581124",   // null = general / cross-app
        "body": "Ship the paywall A/B test",
        "source": "chat",         // chat | briefing | manual
        "status": "open",
        "dueAt": "2026-07-24",    // null if no deadline
        "resolvedAt": null,
        "createdAt": "2026-07-20T09:00:00Z",
        "updatedAt": "2026-07-20T09:00:00Z"
      }
    ]
  }
}
```

## POST — create a commitment

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl -X POST https://api.appeeky.com/v1/cofounder/commitments \
  -H "X-API-Key: $KEY" -H "Content-Type: application/json" \
  -d '{
    "appId": "6479581124",
    "body": "Ship the paywall A/B test",
    "dueAt": "2026-07-24"
  }'
```

| Field   | Required | Notes                                   |
| ------- | -------- | --------------------------------------- |
| `body`  | ✓        | What you promised (≤500 chars)          |
| `appId` | –        | Tie to one app; omit/`null` for general |
| `dueAt` | –        | `YYYY-MM-DD` deadline                   |

Created via the API, `source` is `manual`. Returns `{ "data": { "commitment": {...} } }` with `201`.

## PATCH — update a commitment

Send only the fields you want to change:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl -X PATCH https://api.appeeky.com/v1/cofounder/commitments/<commitmentId> \
  -H "X-API-Key: $KEY" -H "Content-Type: application/json" \
  -d '{ "status": "done" }'
```

Accepted keys: `body`, `dueAt`, `status`. Setting `status` to anything other than `open` stamps `resolvedAt`. Returns the updated `{ commitment }`, or `404` if not found.

## DELETE — cancel a commitment

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl -X DELETE https://api.appeeky.com/v1/cofounder/commitments/<commitmentId> -H "X-API-Key: $KEY"
```

Sets status to `cancelled` (never hard-deletes).

```jsonc theme={"theme":{"light":"github-light","dark":"github-dark"}}
{ "data": { "id": "uuid", "status": "cancelled" } }
```

## Automatic capture

In chat (web / Slack / Telegram), when you say you'll do something the agent calls `record_commitment` for you — resolving "this week"/"Friday"/"tomorrow" to a real `dueAt`. Open and overdue commitments are then injected into the next briefings so it follows up under a `🤝 You said you'd` line.
