---
title: "Search bookings with advanced filters (Admin)"
description: "Search and filter bookings with advanced criteria. 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/search`

Search and filter bookings with advanced criteria. 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`

## Query parameters

- `workspace_id` (`get/api/calendar/bookings/search.query.workspace_id`; string, required) — Filter by workspace ID (required)
  - example `"15213"`
- `status` (`get/api/calendar/bookings/search.query.status`; string, optional) — Filter by booking status
  - one of `"scheduled"`, `"completed"`, `"cancelled"`; example `"scheduled"`
- `contact_name` (`get/api/calendar/bookings/search.query.contact_name`; string, optional) — Filter by contact name
  - example `"John Doe"`
- `product_interest` (`get/api/calendar/bookings/search.query.product_interest`; string, optional) — Filter by product interest
  - example `"Software Development"`
- `start_date` (`get/api/calendar/bookings/search.query.start_date`; string, optional) — Filter bookings from this date
  - format `date`; example `"2025-07-10"`
- `end_date` (`get/api/calendar/bookings/search.query.end_date`; string, optional) — Filter bookings until this date
  - format `date`; example `"2025-07-15"`

## Code samples

### cURL

```bash
curl --request GET \
  --url 'https://api.channelautomation.com/api/calendar/bookings/search?workspace_id=15213' \
  --header 'Authorization: Bearer <token>'
```

### TypeScript

```typescript
const url = 'https://api.channelautomation.com/api/calendar/bookings/search?workspace_id=15213';
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/search?workspace_id=15213"

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

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

print(response.text)
```

## Responses

### 200

Search results retrieved successfully

#### Example

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

### 400

Missing required workspace_id parameter

#### Example

```json
{
  "success": false,
  "error": "Missing required parameter: workspace_id"
}
```

- `success` (`get/api/calendar/bookings/search.response.400.success`; boolean, optional)
  - example `false`
- `error` (`get/api/calendar/bookings/search.response.400.error`; string, optional)
  - example `"Missing required parameter: workspace_id"`

### 401

Authentication required

#### Example

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

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

### 403

Admin privileges required

#### Example

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

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

### 500

Internal server error

#### Example

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

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


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