> ## 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.

# Submit feedback

> Submit thumbs up/down + structured reaction on a coaching response, score, or recommendation.

Submit feedback on a DAC artifact: thumbs up/down plus an optional structured reaction. The reaction taxonomy (helpful, already doing, wrong diagnosis, wrong priority, not actionable, implemented differently) feeds the coaching engine's per-recommendation acceptance rate.

```bash theme={null}
curl -X POST https://app.dacard.ai/api/feedback \
  -H "Authorization: Bearer $DACARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "targetType": "recommendation",
    "targetId": "rec_xyz",
    "rating": "down",
    "reaction": "wrong_diagnosis",
    "comment": "We already shipped that two cycles ago.",
    "traceId": "trace_xyz"
  }'
```

| Property       | Value                                                     |
| -------------- | --------------------------------------------------------- |
| **Auth**       | Required                                                  |
| **Idempotent** | Yes (replaces caller's prior feedback on the same target) |

## Body

| Field        | Type                                                         | Required | Notes                                                                                                                 |
| ------------ | ------------------------------------------------------------ | -------- | --------------------------------------------------------------------------------------------------------------------- |
| `targetType` | `recommendation` \| `score` \| `chat_response` \| `briefing` | yes      | What's being rated.                                                                                                   |
| `targetId`   | string                                                       | yes      | The id of the artifact.                                                                                               |
| `rating`     | `up` \| `down`                                               | yes      | Thumbs.                                                                                                               |
| `reaction`   | string                                                       | no       | One of: `helpful`, `already_doing`, `wrong_diagnosis`, `wrong_priority`, `not_actionable`, `implemented_differently`. |
| `comment`    | string                                                       | no       | Free text.                                                                                                            |
| `traceId`    | string                                                       | no       | The trace ID returned with the original artifact. Wires the outcome chain.                                            |

## Errors

| Status | Code               | When                      |
| ------ | ------------------ | ------------------------- |
| 400    | `INVALID_PAYLOAD`  | Missing required fields.  |
| 401    | `AUTH_REQUIRED`    | No session.               |
| 404    | `Target not found` | `targetId` doesn't exist. |
| 500    | `INTERNAL_ERROR`   | Write failed.             |

If `traceId` is provided, the row joins to `llm_traces` for the outcome chain. See `.claude/rules/observability.md` for the contract.
