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

# Reject plan suggestion set

> Decline a whole plan's budget transfer

`POST /api/v2/buyer/plan-suggestion-sets/:planSuggestionSetId/reject`

Declines the entire set. Nothing moves, and no member media buy is changed.
Rejection is all-or-nothing for the same reason approval is — the members are
sides of one transfer.

A rejection is not a permanent veto of the plan. The optimizer will run again, and
a later run produces a fresh set for the same plan. Rejecting is how you decline
*this* recommendation.

## Request

```bash theme={null}
curl -X POST https://api.interchange.io/api/v2/buyer/plan-suggestion-sets/77/reject \
  -H "Authorization: Bearer $SCOPE3_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"reason": "Holding CTV budget flat through the brand campaign"}'
```

## Parameters

| Field                 | Type   | Required | Notes                                                                      |
| --------------------- | ------ | -------- | -------------------------------------------------------------------------- |
| `planSuggestionSetId` | string | Yes      | Set id (path parameter) — digits only, no leading zero, up to 18 digits.   |
| `reason`              | string | No       | Up to 1000 characters. Recorded on the set and on every member suggestion. |

The body is optional — `POST` with no body rejects without a reason.

## Response

```json theme={null}
{
  "planSuggestionSetId": "77",
  "status": "REJECTED"
}
```

## Errors

| Status | When                                                                                     |
| ------ | ---------------------------------------------------------------------------------------- |
| `404`  | No such set, or it belongs to another account.                                           |
| `409`  | The set is not in `AWAITING_APPROVAL` — already decided, superseded, expired, or parked. |
| `400`  | Malformed set id, or a reason longer than 1000 characters.                               |

<Tip>
  A reason is worth sending. It is stored with the decision, so it explains later
  why a run was declined — to your team, and to anyone reviewing how the plan has
  been optimized over time.
</Tip>
