# Raise the purchase that replaces this commitment

> Returns the recommendation that buys the new term, and the offering and quantity it is bound to. Calling it again never raises a rival: with no choice it returns the first one, and with a different choice it points a renewal nobody has decided on at that choice (rebound). rebindable says whether what it buys can still change: once anybody accepts, rejects or requests it, only the choice it was decided on is accepted. A renewal rejected before anybody released it is closed, and raising again creates a new one while the rejected one stays as history. Nothing is bought here: the recommendation carries the offering, the quantity and the instant after which buying is safe, and the apply path acts on it. A commitment already renewed, or whose family and engine ran nothing last week, is refused with 409. A read-write API key may raise a renewal; releasing it needs an organization admin.

Source: https://docs.levelfour.ai/api-reference/commitments/post-commitments-renewal-by-id


## POST /api/v1/commitments/renewal/{commitment_id}

Returns the recommendation that buys the new term, and the offering and quantity it is bound to. Calling it again never raises a rival: with no choice it returns the first one, and with a different choice it points a renewal nobody has decided on at that choice (rebound). rebindable says whether what it buys can still change: once anybody accepts, rejects or requests it, only the choice it was decided on is accepted. A renewal rejected before anybody released it is closed, and raising again creates a new one while the rejected one stays as history. Nothing is bought here: the recommendation carries the offering, the quantity and the instant after which buying is safe, and the apply path acts on it. A commitment already renewed, or whose family and engine ran nothing last week, is refused with 409. A read-write API key may raise a renewal; releasing it needs an organization admin.

### Authentication

Send `Authorization: Bearer <token>`.

### Parameters

- `commitment_id` (path, string, required)

### Request body

Optional. Content type `application/json`.

Type: object, nullable

- `offering_id` (string, nullable)
- `quantity` (number, nullable)

### Responses

#### 201: Successful Response

- `success` (boolean, default `true`)
- `timestamp` (date-time string)
- `data` (object, required)
  - `commitment_id` (string, required)
  - `recommendation_id` (string, required)
  - `created_by` (string, nullable)
  - `created_at` (string, nullable)
  - `created` (boolean, default `false`)
  - `rebound` (boolean, default `false`)
  - `rebindable` (boolean, default `false`)
  - `closed` (boolean, default `false`)
  - `offering_id` (string, nullable)
  - `quantity` (number, nullable)
  - `blocking_changes` (array of object)
    - `recommendation_id` (string, required)
    - `service` (string, required)
    - `account` (string, required)
    - `monthly_savings` (number, required)
    - `status` (string, required)

#### Errors

- `400`: Bad Request
- `401`: Authentication Error
- `403`: Authorization Error
- `404`: Not Found
- `409`: Conflict
- `422`: Validation Error
- `429`: Rate Limit Exceeded
- `500`: Internal Server Error

Body of `400`, `401`, `403`, `404`, `409`, `422`, `429`, `500`:

- `success` (`false`, required)
- `error` (object, required)
  - `code` (string, required)
  - `message` (string, required)
  - `details` (any)
- `timestamp` (date-time string, required)
