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

# back_opinion

> Back the previewed opinion (step 2 of 2)

Spends the previewed `price_coins` to back the opinion. Accepts **only** the
`confirm_token` from [`preview_back`](/mcp/tools/preview-back).

**Scope**: `write` · **Annotations**: `destructiveHint`, `idempotentHint`,
`_meta["anthropic/requiresUserInteraction"]`
**REST equivalent**: `POST /open/v1/backs`

<Warning>
  Call only after the user has reviewed the preview summary and explicitly
  confirmed. Tokens expire in **5 minutes** and are single-use.
</Warning>

## Parameters

| Name            | Type   | Required | Default | Notes               |
| --------------- | ------ | -------- | ------- | ------------------- |
| `confirm_token` | string | ✅        | —       | From `preview_back` |

## Returns

Captured live:

```json theme={null}
{
  "back": {
    "opinion_id": "7c2900c1-595f-4d92-bcf0-d84eba321ee2",
    "seq": 1,
    "price_coins": "1.0000",
    "backer_count": 1,
    "max_relay_payback_sapphires": "2.0000"
  },
  "replayed": false
}
```

## The previewed price is a hard cap

Unlike [`place_order`](/mcp/tools/place-order), this call does **not** fall
back to the market. If other backers took the seat first and the relay price
moved above what the user confirmed, the call fails with
`409 OPINION_BACK_PRICE_MOVED` — run `preview_back` again and have the user
confirm the new price. Backing is once-per-person and cannot be undone, so
paying more than agreed is never assumed.

Retrying with the same token returns the original backing with
`replayed: true`.

## Errors

| Code                       | HTTP | Meaning                                       |
| -------------------------- | ---- | --------------------------------------------- |
| `OPINION_BACK_PRICE_MOVED` | 409  | The seat's price rose above the confirmed cap |
| `OPINION_ALREADY_BACKED`   | 409  | Already backed by this user                   |
| `OPINION_BACK_FULL`        | 409  | The price ladder is exhausted                 |
| `CONFIRM_TOKEN_EXPIRED`    | 409  | Older than 5 minutes                          |
| `CONFIRM_TOKEN_USED`       | 409  | Consumed by a different call                  |
| `INSUFFICIENT_BALANCE`     | 400  | Not enough coins                              |
| `FORBIDDEN_SCOPE`          | 403  | The key is read-only                          |

See [Errors](/errors) for the full table.

## Example prompts

* "Yes, back it."
* "Confirmed, support that opinion."

## Related

[`preview_back`](/mcp/tools/preview-back) ·
[`list_my_backed_opinions`](/mcp/tools/list-my-backed-opinions)
