---
uuid: 758cca86-4b49-40c9-83f9-2305b9406687
date_created: 2026-02-27T06:19:34.058Z
date_updated: 2026-04-03T17:04:01.917Z
seo_url: retrieve-booking-sales-contract
category: Booking docs
tags: 
  - Bookings
  - Legal info
routes: 
  - GET /v0/customers/{customer_id}/bookings/{booking_id}/sell_contracts
  - GET /v0/customers/{customer_id}/bookings/{booking_id}/sell_contracts/{contract_id}
---

# Retrieve booking sales contract

This scenario explains how to list all sales contracts attached to a booking and then retrieve one specific contract for download or display.

## Flow

```mermaid
flowchart LR
    step0["List sales contracts for a booking"]
    step1["Download a specific sales contract"]
    step0 --> step1
```

## Overview

Use the two customer-scoped routes to first enumerate the sales contracts linked to a booking, then target a specific `contract_id` for detailed retrieval.

## Prerequisites

* `customer_id` and `booking_id` must identify an existing booking in customer scope.
* `contract_id` is needed for the second step.
* `accept-language`, `authorization`, and `x-api-key` are required on the documented calls.

## 1 - List sales contracts for a booking

Use `GET /v0/customers/{customer_id}/bookings/{booking_id}/sell_contracts` to list the contractual documents attached to a booking before selecting one for download or display.

#### Prerequisites

* Header `accept-language`
* Header `authorization`
* Header `x-api-key`
* Path `customer_id`
* Path `booking_id`

#### Calling CURL

```bash
curl -X GET "https://api.clubmed.com/v0/customers/123456789/bookings/0123456789/sell_contracts" \
  -H "accept-language: en-US" \
  -H "authorization: Bearer <token>" \
  -H "x-api-key: <your-api-key>"
```

#### Example answer

```json
[
  {
    "id": "EUR",
    "type": "TCS",
    "label": "Terms and Conditions of Service"
  }
]
```

> **info:** Use the returned `id` as `contract_id` in the next step. The list step is the safest way to expose only the documents effectively available for a booking.

***

**Response codes**

* `200`: sales contracts returned successfully.
* `400`: bad request or validation error.
* `401`: unauthorized.
* `403`: customer mismatch, issuer mismatch or locale mismatch.

**Related route**: [GET https://api.clubmed.com//v0/customers/{customer\_id}/bookings/{booking\_id}/sell\_contracts](https://api.clubmed.com/doc?search=GET%20%2Fv0%2Fcustomers%2F%7Bcustomer_id%7D%2Fbookings%2F%7Bbooking_id%7D%2Fsell_contracts)

## 2 - Download a specific sales contract

Use `GET /v0/customers/{customer_id}/bookings/{booking_id}/sell_contracts/{contract_id}` with one identifier returned by the previous step to retrieve the selected contract document.

#### Prerequisites

* Header `accept-language`
* Header `authorization`
* Header `x-api-key`
* Path `customer_id`
* Path `booking_id`
* Path `contract_id`

#### Calling CURL

```bash
curl -X GET "https://api.clubmed.com/v0/customers/123456789/bookings/0123456789/sell_contracts/b2c3ed75-763c-4042-b84b-f35059368108" \
  -H "accept-language: en-US" \
  -H "authorization: Bearer <token>" \
  -H "x-api-key: <your-api-key>"
```

#### Example answer

```text
HTTP/1.1 200 OK
```

> **info:** The exact response payload format is not visible in the available contract excerpt. Use the contract list step first to avoid requesting a document identifier that is not available for the booking.

***

**Response codes**

* `200`: contract retrieved successfully.
* `400`: bad request or validation error.
* `401`: unauthorized.
* `403`: customer mismatch, issuer mismatch or locale mismatch.

**Related route**: [GET https://api.clubmed.com//v0/customers/{customer\_id}/bookings/{booking\_id}/sell\_contracts/{contract\_id}](https://api.clubmed.com/doc?search=GET%20%2Fv0%2Fcustomers%2F%7Bcustomer_id%7D%2Fbookings%2F%7Bbooking_id%7D%2Fsell_contracts%2F%7Bcontract_id%7D)
