---
title: "Save a new source draft revision without changing production publication."
method: PATCH
path: "/v1/workspaces/{workspaceId}/managed-content/{contentId}"
---

# Save a new source draft revision without changing production publication.

`PATCH /v1/workspaces/{workspaceId}/managed-content/{contentId}`

## Request

- Base URL: `https://api.bangermail.com`
- URL: `https://api.bangermail.com/v1/workspaces/{workspaceId}/managed-content/{contentId}`
- Auth: HTTP bearer

A breaking variable change cannot publish over this content ID. Create and publish new managed content, change each Journey or draft Broadcast reference to the new ID, then review/activate the Journey or schedule the Broadcast. Existing accepted sends and scheduled Broadcast recipients retain their pinned revisions.

## Request body

- object
  - `expected_version` integer, required
  - `contract` ManagedContentContract, required
    - `source_locale` string: Canonical BCP 47 source locale; inherits product settings when omitted.
    - `configured_locales` string[]: Source plus target locales; omitted source is added by the server.
    - `fallback_locale` string
    - `layout_id` string, uuid: Selected reusable layout; the server snapshots its published revision into this content revision.
    - `localization_policy` object: A Journey email goes out only in the person's own language: it waits for their translation, about a minute for receipts, codes and security notices and up to a day for other email, and is not sent if the translation is not ready by then.
      - `manual_review` boolean
    - `source` object, required
      - `subject` string, required
      - `preheader` string
      - `body_text` string: Accepted for source compatibility; rendered plain text derives from final HTML.
      - `body_html` string, required
      - `layout` string: Must contain one {{ content }} slot.
      - `variants` object: Optional source versions. Every version is translated automatically in the same revision.
      - `variables` object, required
    - `samples` object: Named sample value sets for preview and source validation.
    - `translations` object: Source ICU message catalog and optional supplied target catalogs. Missing configured targets are queued for asynchronous translation; saving does not require them.

## Response `200`

New draft revision and queued translation jobs.

- ManagedContentResponse
  - `data` ManagedContentState, required
    - `id` string, uuid, required
    - `name` string, required
    - `version` integer, required
    - `review_required` boolean, required
    - `draft_revision_id` string, uuid, nullable
    - `submitted_revision_id` string, uuid, nullable
    - `approved_revision_id` string, uuid, nullable
    - `published_revision_id` string, uuid, nullable
    - `published_publication_id` string, uuid, nullable
    - `source_revision` object
    - `translations` object[]
    - `translation_jobs` object[]

## Other responses

- `409`: The expected version is stale.
- `422`: The source or typed variable contract is invalid. Breaking contracts require a new content ID and reviewed reference migration before publication.

---

[API](https://skmtc.dev/bangermail/apis/banger-api.md) · [All operations](https://skmtc.dev/bangermail/apis/banger-api/llms.txt) · [OpenAPI document](https://skmtc.dev/bangermail/apis/banger-api/revisions/a149909267f9?raw)
