---
title: "Get specific booking by ID (Admin)"
description: "Retrieve a specific booking by its ID. Requires admin authentication."
---

> Documentation Index
> Fetch the complete documentation index at: https://developer.channelautomations.com/llms.txt
> Use this file to discover all available pages before exploring further.

Path: Channel Automation API › Calendar

`GET /api/calendar/bookings/{id}`

Retrieve a specific booking by its ID. Requires admin authentication.

## Authentication

Requires one of the following:

- `BearerAuth`, http, header `Authorization`, format `JWT`
- `ApiKeyAuth`, apiKey, in header, header `X-API-Key`, format `API_KEY`

## Path parameters

- `id` (`get/api/calendar/bookings/id.path.id`; string, required) — Booking ID
  - example `"372e579b-7f9a-47ed-b161-24e69670035b"`

## Code samples

### cURL

```bash
curl --request GET \
  --url https://api.channelautomation.com/api/calendar/bookings/372e579b-7f9a-47ed-b161-24e69670035b \
  --header 'Authorization: Bearer <token>'
```

### TypeScript

```typescript
const url = 'https://api.channelautomation.com/api/calendar/bookings/372e579b-7f9a-47ed-b161-24e69670035b';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch(url, options)
  .then(res => res.json())
  .then(json => console.log(json))
  .catch(err => console.error(err));
```

### Python

```python
import requests

url = "https://api.channelautomation.com/api/calendar/bookings/372e579b-7f9a-47ed-b161-24e69670035b"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
```

## Responses

### 200

Booking retrieved successfully

#### Example

```json
{
  "success": true,
  "booking": {
    "id": "appointment-uuid",
    "contact_id": "contact-uuid",
    "workspace_id": "workspace-uuid",
    "created_by": "464cf603-5a10-4470-a100-331fc0766680",
    "title": "Kitchen Renovation - John Smith",
    "description": "Kitchen Renovation booking for John Smith (john@example.com)",
    "appointment_date": "2025-07-15T09:00:00Z",
    "duration_minutes": 60,
    "location": "Customer's home",
    "created_at": "2025-07-08T10:00:00Z",
    "updated_at": "2025-07-08T10:00:00Z"
  }
}
```

- `success` (`get/api/calendar/bookings/id.response.200.success`; boolean, optional)
  - example `true`
- `booking` (`get/api/calendar/bookings/id.response.200.booking`; object, optional)
  - `id` (`get/api/calendar/bookings/id.response.200.booking.id`; string, optional) — Unique appointment identifier
    - example `"appointment-uuid"`
  - `contact_id` (`get/api/calendar/bookings/id.response.200.booking.contact_id`; string, optional) — Associated contact ID
    - example `"contact-uuid"`
  - `workspace_id` (`get/api/calendar/bookings/id.response.200.booking.workspace_id`; string, optional) — Workspace ID
    - example `"workspace-uuid"`
  - `created_by` (`get/api/calendar/bookings/id.response.200.booking.created_by`; string, optional) — ID of user who created the appointment
    - example `"464cf603-5a10-4470-a100-331fc0766680"`
  - `title` (`get/api/calendar/bookings/id.response.200.booking.title`; string, optional) — Appointment title
    - example `"Kitchen Renovation - John Smith"`
  - `description` (`get/api/calendar/bookings/id.response.200.booking.description`; string, optional) — Appointment description
    - example `"Kitchen Renovation booking for John Smith (john@example.com)"`
  - `appointment_date` (`get/api/calendar/bookings/id.response.200.booking.appointment_date`; string, optional) — Date and time of the appointment
    - format `date-time`; example `"2025-07-15T09:00:00Z"`
  - `duration_minutes` (`get/api/calendar/bookings/id.response.200.booking.duration_minutes`; integer, optional) — Duration of the appointment in minutes
    - example `60`
  - `location` (`get/api/calendar/bookings/id.response.200.booking.location`; string, optional) — Location of the appointment
    - example `"Customer's home"`
  - `created_at` (`get/api/calendar/bookings/id.response.200.booking.created_at`; string, optional) — When the appointment was created
    - format `date-time`; example `"2025-07-08T10:00:00Z"`
  - `updated_at` (`get/api/calendar/bookings/id.response.200.booking.updated_at`; string, optional) — When the appointment was last updated
    - format `date-time`; example `"2025-07-08T10:00:00Z"`

### 401

Authentication required

#### Example

```json
{
  "error": "Authentication required",
  "success": false
}
```

- `error` (`get/api/calendar/bookings/id.response.401.error`; string, optional)
  - example `"Authentication required"`
- `success` (`get/api/calendar/bookings/id.response.401.success`; boolean, optional)
  - example `false`

### 403

Admin privileges required

#### Example

```json
{
  "error": "Admin privileges required",
  "success": false
}
```

- `error` (`get/api/calendar/bookings/id.response.403.error`; string, optional)
  - example `"Admin privileges required"`
- `success` (`get/api/calendar/bookings/id.response.403.success`; boolean, optional)
  - example `false`

### 404

Booking not found

#### Example

```json
{
  "success": false,
  "error": "Booking not found"
}
```

- `success` (`get/api/calendar/bookings/id.response.404.success`; boolean, optional)
  - example `false`
- `error` (`get/api/calendar/bookings/id.response.404.error`; string, optional)
  - example `"Booking not found"`

### 500

Internal server error

#### Example

```json
{
  "error": "Internal server error",
  "details": "string",
  "success": false
}
```

- `error` (`get/api/calendar/bookings/id.response.500.error`; string, optional)
  - example `"Internal server error"`
- `details` (`get/api/calendar/bookings/id.response.500.details`; string, optional)
- `success` (`get/api/calendar/bookings/id.response.500.success`; boolean, optional)
  - example `false`


Source: https://developer.channelautomations.com/api/get-api-calendar-bookings-id/index.md
