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

# Revoke proposal

> Withdraw a proposal so the buyer can no longer redeem its code

`POST /api/v2/storefront/proposals/{id}/revoke`

Withdraws a proposal so its `proposalCode` can no longer be redeemed on `discover_products`. Revocation is allowed only when the proposal's `status` is `active` or `expired`; a proposal the buyer has already redeemed cannot be revoked. The returned proposal has `status: "revoked"`.

## Request

```bash theme={null}
curl -X POST https://api.interchange.io/api/v2/storefront/proposals/318/revoke \
  -H "Authorization: Bearer $SCOPE3_API_KEY"
```

## Parameters

| Param | Type    | Required | Notes                            |
| ----- | ------- | -------- | -------------------------------- |
| `id`  | integer | Yes      | Proposal row ID (path parameter) |

## Response

```json theme={null}
{
  "id": 318,
  "proposalCode": "PRP-XK4A29",
  "operatorId": "acme",
  "label": "Acme Q3 RFP — CTV",
  "notes": "Offline RFP follow-up; honors the upfront rate.",
  "status": "revoked",
  "expiresAt": "2026-09-30T23:59:59Z",
  "proposalId": "proposal_abc123",
  "discoverySessionId": "disc_a1b2c3",
  "snapshot": { "products": [], "proposals": [] },
  "createdAt": "2026-06-07T15:00:00Z",
  "createdBy": "seller@acme-media.example.com",
  "firstViewedAt": null,
  "lastViewedAt": null,
  "redeemedAt": null,
  "redeemedInMediaBuyId": null
}
```

`status` flips to `revoked`. The code is now dead — the buyer receives no offer if they try to redeem it.

## Errors

* `400 VALIDATION_ERROR` — the proposal's status is not `active` or `expired` (for example, it is already `redeemed` or `revoked`).
* `404 NOT_FOUND` — no proposal with that `id` is visible to the authenticated seller.

See [Errors](/v2/reference/errors) for the full error contract.

## Related

<CardGroup cols={2}>
  <Card title="Proposal tasks" href="/v2/storefront/proposals/tasks" icon="list-check">
    All proposal operations
  </Card>

  <Card title="Get proposal" href="/v2/storefront/proposals/tasks/get-proposal" icon="magnifying-glass">
    Confirm the revoked state
  </Card>

  <Card title="Create proposal" href="/v2/storefront/proposals/tasks/create-proposal" icon="plus">
    Mint a fresh code
  </Card>

  <Card title="Proposals overview" href="/v2/storefront/proposals/overview" icon="file-signature">
    Lifecycle and concepts
  </Card>
</CardGroup>
