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

# DAC backlog

> Read DAC's proposed backlog items, approve them, and route them to a destination (Linear, Slack, email).

DAC continuously proposes moves based on signals, scores, and tribal notes. The DAC backlog is the queue of those proposals waiting for human approval. Approve to push them to the configured destination.

## List candidates

```bash theme={null}
curl -X GET https://app.dacard.ai/api/dac-backlog/candidates \
  -H "Authorization: Bearer $DACARD_API_KEY"
```

## Approve a candidate

```bash theme={null}
curl -X POST https://app.dacard.ai/api/dac-backlog/approve \
  -H "Authorization: Bearer $DACARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "candidateId": "cand_xyz" }'
```

Approving pushes the candidate to the configured destination and records an audit row.

## Configure the destination

```bash theme={null}
curl -X POST https://app.dacard.ai/api/dac-backlog/destination \
  -H "Authorization: Bearer $DACARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "destination": "linear",
    "config": { "teamId": "lin_team_xyz" }
  }'
```

| Property           | Value                                                   |
| ------------------ | ------------------------------------------------------- |
| **Auth**           | Required                                                |
| **Required scope** | Account membership                                      |
| **Idempotent**     | GET yes. Approve no (push fires once). Destination yes. |

## Destinations

| Destination | Config                                                                          |
| ----------- | ------------------------------------------------------------------------------- |
| `linear`    | `{ teamId, projectId? }`. Pushes as a Linear issue with the DAC coaching block. |
| `slack`     | `{ channelId }`. Posts a Block Kit message.                                     |
| `email`     | `{ to }`. Sends a transactional email.                                          |
| `none`      | (no config). Candidates surface only in-app.                                    |

## Errors

| Status | Code                  | When                   |
| ------ | --------------------- | ---------------------- |
| 401    | `AUTH_REQUIRED`       | No session.            |
| 403    | `FORBIDDEN`           | Caller not in account. |
| 404    | `Candidate not found` | Bad `candidateId`.     |
| 500    | `INTERNAL_ERROR`      | Push or write failed.  |
