---
uuid: e255c34f-b107-446a-bca5-db8612612b39
date_created: 2026-02-27T06:19:33.416Z
date_updated: 2026-04-04T09:54:17.562Z
seo_url: refresh-proposal
category: Option creation
routes: 
  - POST /v1/proposals/{proposal_id}/refresh
---

# Refresh a proposal

This scenario explains how to refresh an existing proposal so the application can re-evaluate price, stock, option duration, and transport information before continuing the booking flow.

It is useful after a delay, after a stock-sensitive change, or whenever the interface must confirm that the proposal is still usable before prebooking or booking creation.

## Flow

false

## Overview

Use this scenario when an existing proposal must be recalculated before it is displayed again, reused, or converted in the next booking step. The refresh route returns an updated proposal with current pricing, remaining stock, option duration, and the main bookability indicators.

## Prerequisites

* A valid `proposal_id`.
* The `accept-language` and `x-api-key` headers.
* Depending on the channel, an `authorization` context may be required.
* The proposal must already exist and still be accessible in the caller context.

## Expected result

The application can confirm whether the proposal is still usable, detect a price or stock variation, and decide whether the booking flow can continue or whether a new search is required.

## 1 - Refresh the proposal

Use `POST /v1/proposals/{proposal_id}/refresh` to recalculate an existing proposal with the latest stock and pricing before continuing the booking journey.

#### Prerequisites

* Keep a valid `proposal_id`.
* Send `accept-language` and `x-api-key`.
* Add `Authorization: Bearer YOUR_TOKEN` when your channel requires an authenticated context.

#### Calling CURL

```bash
curl -X POST \
  -H "accept-language: en-US" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  "https://api.clubmed.com/v1/proposals/{proposal_id}/refresh"
```

#### Example answer

```json
{
  "id": "123456",
  "product_id": "MPAC",
  "price": {
    "total": 9815.4,
    "currency": "EUR",
    "total_without_transport": 9005.4
  },
  "remaining_stock": 2,
  "option_available": true,
  "option_durability": {
    "expiration_date_time": "20160415T10:23:00.234Z",
    "is_reliable": true
  },
  "is_bookable": false
}
```

> **info:** Compare `price`, `remaining_stock`, and `option_durability` with the values previously displayed to decide whether the user can continue without launching a new search.

***

**Response codes**

* `200 OK`: the refreshed proposal is returned.
* `400 Bad Request`: the request is invalid or the payload format is rejected.
* `401 Unauthorized`: authentication is required but missing or invalid.
* `403 Forbidden`: access to this proposal is forbidden in the current context.
* `404 Not Found`: not documented in Swagger.
* `409 Conflict`: at least one proposal service is no longer available.

**Related route**: [POST https://api.clubmed.com//v1/proposals/{proposal\_id}/refresh](https://api.clubmed.com/doc?search=POST%20%2Fv1%2Fproposals%2F%7Bproposal_id%7D%2Frefresh)
