---
title: "Fetch all events"
method: GET
path: "/api/v1/events"
tags: ["Proposals/Confirmed Bookings"]
---

# Fetch all events

`GET /api/v1/events`

## Request

- Base URL: `https://api.checkcherry.com`
- URL: `https://api.checkcherry.com/api/v1/events`
- Auth: none declared. Required headers: `Api-Key`

Returns a paginated list of events for the specified business. Results can be filtered by status, cancellation, date range, and text search.

**Cancelled bookings are excluded by default.** Cancellation is tracked separately from status -- a cancelled booking keeps the status it had when it was cancelled -- so it is filtered with `canceled_status`, not `event_status`. Pass `canceled_status=show_canceled_only` to list only cancelled bookings, or `canceled_status=show_all` to include them alongside everything else. The two filters combine: `event_status=confirmed&canceled_status=show_canceled_only` returns cancelled confirmed bookings.

The response includes `meta.total_count` (total matching events) and `meta.per_page` (results per page) to support pagination.

**Syncing changes.** Pass `updated_since` to fetch only events changed since your last sync, including changes to booking questions and questionnaire answers. Send a full ISO 8601 timestamp with an offset, such as `2026-10-12T15:00:00Z`; a bare date means noon. Start each sync from the time your previous one began, less a minute, since changes take a few seconds to become searchable. Each event's `updated_at` shows when it last changed.

Use the `include` query parameter to sideload related resources (comma-separated). Available: `event_bookings`, `proposal_alternatives`, `event_users`, `event_staff_members`, `event_staff_requests`, `contacts`, `notes`, `event_adjustments`. The event's customers are sideloaded via `event_users` — there is no `customer` include.

On a proposal with alternatives, `starting_balance`, `deposit_amount_due` and `balance_amount_due` add every alternative together, which is not a price the client pays. Read each alternative's totals instead.

**Required permission:** `assigned_event_read` or `unassigned_event_read`

## Query parameters

- `include` string
- `event_status` string
- `canceled_status` string
- `postponed_status` string
- `expired_status` string
- `past_or_future` string
- `event_date_start` string
- `event_date_end` string
- `booked_date_start` string
- `booked_date_end` string
- `updated_since` string
- `search_text` string
- `id` integer
- `brand_id` integer
- `client_id` integer
- `staff_id` integer
- `event_category_id` integer
- `proposal_viewed` boolean
- `awaiting_deposit` boolean
- `balance_outstanding` boolean
- `past_due` boolean
- `has_unselected_templates` boolean
- `has_pending_artwork` boolean
- `has_unapproved_artwork` boolean
- `unsubmitted_forms` boolean
- `no_staff_assigned` boolean
- `no_backdrop_assigned` boolean
- `sort_by` string
- `page` integer
- `per` integer

## Headers

- `Api-Key` string, required

## Response `200`

events found

## Other responses

- `422`: invalid filter

## Changes

- **2026-10-19** `84a9aabdf519`: 2 info
  - added the new optional `query` request parameter `event_category_id`
  - added the new optional `query` request parameter `proposal_viewed`

[Operation history](https://skmtc.dev/checkcherry/apis/check-cherry-business-api/changes/api/v1/events/get.md)

---

[API](https://skmtc.dev/checkcherry/apis/check-cherry-business-api.md) · [All operations](https://skmtc.dev/checkcherry/apis/check-cherry-business-api/llms.txt) · [OpenAPI document](https://skmtc.dev/checkcherry/apis/check-cherry-business-api/revisions/84a9aabdf519?raw)
