---
title: "Discard Proposal"
method: POST
path: "/internal/marketing-preset-proposals/{proposal_id}/discard"
tags: ["internal"]
---

# Discard Proposal

`POST /internal/marketing-preset-proposals/{proposal_id}/discard`

## Request

- Base URL: `https://api.kobaltlabs.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.kobaltlabs.com/internal/marketing-preset-proposals/{proposal_id}/discard`
- Auth: none declared

Close a proposal nobody is going to submit, so the queue means something.

Retained rather than deleted: a rejected plan is as much a part of how a customer came to be
configured the way they are as an accepted one. Product lines already created from it stay —
discarding is a decision about the rest of the page, not an undo.

## Path parameters

- `proposal_id` string, uuid, required

## Request body

- ProposalRevisionCheck: A body carrying only the revision the page was rendered from. Used by discard, which changes no content but does end the review — so it has to be as protected from a stale tab as a save is.
  - `expected_revision` integer, required

## Response `200`

Successful Response

- MarketingPresetProposalSummary: A proposal without its items — the listing, and the MCP status read.
  - `proposal_id` string, uuid, required
  - `company_id` string, uuid, required
  - `company_name` string, nullable, required
  - `title` string, required
  - `notes` string, nullable, required
  - `status` 'open' | 'applied' | 'discarded', required: Where a proposal is in its one-way life. `open` is the only state that accepts edits or applies. A proposal reaches `applied` when every item on it has been written, so a reviewer who approves three of five rows leaves it `open` and comes back for the rest rather than stranding them.
  - `revision` integer, required
  - `created_by_email` string, nullable, required
  - `created` string, required
  - `item_count` integer, required
  - `applied_count` integer, required
  - `last_applied_at` string, nullable, required
  - `last_applied_by_email` string, nullable, required
  - `review_url` string, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/kobaltlabs/apis/fastapi.md) - [All operations](https://skmtc.dev/kobaltlabs/apis/fastapi/llms.txt) - [OpenAPI document](https://skmtc.dev/kobaltlabs/apis/fastapi/revisions/8587332d5e43?raw)
