# Answer a card

> Resolve a card the way the dashboard's primary button would: approve, answer a question, or choose an option.

Canonical: https://revnu.com/docs/review-answer
Last updated: 2026-10-19

```bash
curl -X POST -H "Authorization: Bearer $REVNU_API_TOKEN" \
  -H "content-type: application/json" \
  -d '{"action":"approve"}' \
  https://revnu.com/api/v1/review/k97…/answer
```

## Body

| Field | Type | Meaning |
|---|---|---|
| `action` | `approve`, `answer` or `choose` | Must be in the card's `actions`. |
| `text` | string, up to 8,000 UTF-8 bytes | For `answer`, and optionally with `approve`. |
| `optionValues` | string[] | For `choose`: exactly one of the card's option values. |

## What approve does

It is a real approval. The card's `sourceType` picks what happens:

| `sourceType` | `approve` does |
|---|---|
| `blog_draft` | Publishes the post. |
| `blog_edit` | Applies the edit to the live post. |
| `reddit_comment` | Posts the comment to Reddit. The response is the publish result. |
| `ads_launch` | Turns the named campaigns on, so spend starts. |
| `ads_budget` | Raises the account's monthly ad budget limit to the amount on the card. |
| `outbound_setup` | Approves the sending domains and inboxes Revnu proposed, which it then buys and sets up. |
| `measurement_charter` | Activates the outcome definition used to judge ads. |
| `memory_rule` | Changes the Memory rule as the card describes. |
| anything else | Records your approval and wakes Revnu to carry on with the work it asked about. |

Cards of kind `review`, `follow_up` and `setup` close as done when approved. An `update` card accepts `answer` (Got It) or `dismiss`.

Some cards can't be approved here:

- **Email drafts and replies** (`gmail_draft`, `gmail_reply`) answer `409 use_send`. Send them with [`POST /review/{id}/send`](https://revnu.com/docs/review-send.md).
- **LinkedIn invites and messages** (`linkedin_invite`, `linkedin_message`) and **gifts** (`gift_send`) do not list `approve`, and an approve sent anyway answers `409 rejected`. Approve them on the Review page in the dashboard.

`answer` on a `booking_link` card saves your booking link to Memory. `choose` picks one of the card's `options`.

## Responses

| Code | Meaning |
|---|---|
| 200 | `{ ok, kind, result? }` |
| 409 | `invalid_action` with the current `actions`, `rejected` with a `message`, or `use_send` for an email card |

## Frequently asked questions

### Which scope does this need?

`review:write`. A token without it gets `403` with `requiredScope` in the body. `GET /me` shows a token's scopes.

### Are responses cached?

No. Every response is `Cache-Control: no-store`, so what you read is current.
