> ## 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.

# Cancel update proposal

> Withdraw a pending media buy update proposal

`DELETE /api/v2/buyer/update-proposals/{id}`

Cancels an in-flight (`PENDING`) update proposal before the sales agent resolves it. Returns `204 No Content` on success. A proposal that has already been `APPROVED` or `REJECTED` cannot be cancelled.

This resolves the Interchange proposal as `REJECTED` with `rejectionReason: "cancelled_by_buyer"` and retains it as a safety record. A later callback for that proposal is ignored locally, while the pending-proposal gate is released so a corrected update can proceed. It does not recall a request already dispatched to the seller; contact the seller/operator if the upstream task must also be withdrawn.

## Request

```bash theme={null}
curl -X DELETE https://api.interchange.io/api/v2/buyer/update-proposals/upd_7c12a3 \
  -H "Authorization: Bearer $SCOPE3_API_KEY"
```

## Parameters

| Param | Type          | Required | Notes              |
| ----- | ------------- | -------- | ------------------ |
| `id`  | string (path) | Yes      | Update proposal ID |

## Response

`204 No Content` — the proposal was cancelled. The response has no body; a later GET returns the terminal `REJECTED` proposal.

## Errors

* `404 NOT_FOUND` — the proposal does not exist or belongs to a different account.
* `409 CONFLICT` — the proposal is already resolved (`APPROVED` or `REJECTED`) and cannot be cancelled.

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

## Related

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

  <Card title="Get update proposal" href="/v2/buyer/update-proposals/tasks/get-update-proposal" icon="magnifying-glass">
    Poll resolution status
  </Card>
</CardGroup>
