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

# List and create decisions

> Read the decision log, or record a new decision against a product.

Read the decision log, or record a new decision against a product. The decision log is the structured, queryable record DAC reads from for the "what did we decide" coaching surface.

## List decisions

```bash theme={null}
curl -X GET "https://app.dacard.ai/api/decisions?productId=prod_abc" \
  -H "Authorization: Bearer $DACARD_API_KEY"
```

## Record a decision

```bash theme={null}
curl -X POST https://app.dacard.ai/api/decisions \
  -H "Authorization: Bearer $DACARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "productId": "prod_abc",
    "title": "Move pricing page above the fold on /platform",
    "context": "PLG audit found the funnel split was kicking in too late.",
    "decisionType": "shipped",
    "linkedMoveId": "mv_xyz"
  }'
```

| Property           | Value                                         |
| ------------------ | --------------------------------------------- |
| **Auth**           | Required                                      |
| **Required scope** | Account membership                            |
| **Idempotent**     | GET yes. POST no (creates new row each call). |

## POST body

| Field          | Type                                            | Required | Notes                                   |
| -------------- | ----------------------------------------------- | -------- | --------------------------------------- |
| `productId`    | string                                          | yes      | Product the decision relates to.        |
| `title`        | string                                          | yes      | Short label (≤120 chars).               |
| `context`      | string                                          | no       | Free text. Stored as markdown.          |
| `decisionType` | `shipped` \| `deferred` \| `held` \| `reversed` | yes      | What kind of decision.                  |
| `linkedMoveId` | string                                          | no       | The move this decision settles, if any. |

## Errors

| Status | Code                                      | When                             |
| ------ | ----------------------------------------- | -------------------------------- |
| 400    | `productId, title, decisionType required` | Body invalid.                    |
| 401    | `AUTH_REQUIRED`                           | No session.                      |
| 403    | `FORBIDDEN`                               | Caller does not own the product. |
| 500    | `INTERNAL_ERROR`                          | Write failed.                    |
