---
title: "Update Proposal Content"
method: PUT
path: "/api/proposals/{proposal_id}/content"
tags: ["proposals"]
---

# Update Proposal Content

`PUT /api/proposals/{proposal_id}/content`

Update a proposal's block-based `proposal_content` JSONB.

- Validates the tree shape and cardinality invariants.
- Optimistic concurrency via `expected_updated_at` → 409 on mismatch.
- Writes a snapshot to `proposal_content_revisions` for the safety net.

## Path parameters

- `proposal_id` string, uuid, required

## Request body

- ProposalContentUpdate
  - `content` object, required
  - `expected_updated_at` string, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/every/apis/every-api.md) · [All operations](https://skmtc.net/every/apis/every-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/every/every-api/versions/f8600f7a4ae3/schema)
