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

# Get update proposal

> Poll the resolution status of a media buy update proposal

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

Returns the current resolution status of a media buy update proposal — `PENDING`, `APPROVED`, or `REJECTED` — along with `rejectionReason` and `resolvedAt` when available. Poll this until `status` leaves `PENDING`.

## Request

```bash theme={null}
curl "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

```json theme={null}
{
  "id": "upd_7c12a3",
  "status": "REJECTED",
  "mediaBuyId": "mb_abc",
  "rejectionReason": "Requested budget exceeds the agent's per-flight cap",
  "resolvedAt": "2026-06-06T18:30:00Z"
}
```

`rejectionReason` is present only when `status` is `REJECTED`. `resolvedAt` is present once the proposal leaves `PENDING`.

## Errors

* `404 NOT_FOUND` — the proposal does not exist or belongs to a different account.

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="Cancel update proposal" href="/v2/buyer/update-proposals/tasks/cancel-update-proposal" icon="ban">
    Withdraw a pending proposal
  </Card>
</CardGroup>
