---
title: "Update a package on a proposal or booking"
method: PATCH
path: "/api/v1/event_bookings/{event_booking_id}"
tags: ["Proposals/Confirmed Bookings"]
---

# Update a package on a proposal or booking

`PATCH /api/v1/event_bookings/{event_booking_id}`

## Request

- Base URL: `https://api.checkcherry.com`
- URL: `https://api.checkcherry.com/api/v1/event_bookings/{event_booking_id}`
- Auth: none declared. Required headers: `Api-Key`

Edits a package already on an event, or swaps it for a different one. `use_new_or_existing_package` decides which: `existing`, the default, edits the package in place, and `new` replaces it with the package named by `new_event_type_id`.

This replaces the package rather than merging into it. Send everything you want the package to keep: `existing_title`, `existing_description_html`, `override_price`, `override_ends_at_time` and `units` are all cleared when you leave them out, and `taxable` goes back to `true`. Length is the exception: leave `length_in_minutes` or `length_in_days` out and the package keeps the length it already has.

Swapping the package drops the old package's add-ons, copies the new one's across, and rebuilds that package's discounts and checklist items.

**Required permission:** `assigned_event_write` (when the authenticated user is assigned to the event) or `unassigned_event_write` (otherwise).

## Path parameters

- `event_booking_id` integer, required

## Headers

- `Api-Key` string, required

## Request body

- object
  - `use_new_or_existing_package` 'existing' | 'new': `existing` edits this package in place, `new` swaps in a different one. Defaults to `existing`.
  - `starts_at_date` string, required: Start date, as ISO `YYYY-MM-DD`. Other numeric formats are read according to the business's date format setting.
  - `starts_at_time` string: Start time, e.g. `11:00AM`, `2:30pm` or `14:30`. Required for packages scheduled by date and time.
  - `override_ends_at_time` string: Ends the package at a set time rather than at the time the length implies. Same formats as `starts_at_time`.
  - `length_in_minutes` integer: Length in minutes, from 1 to 1440. Required for packages that let extra hours be booked. Leave it out and the package keeps the length it already has.
  - `length_in_days` integer: Length in days, from 1 to 1000. Required for date-only packages that let extra days be booked. Leave it out and the package keeps the length it already has. Any value sent for a date-only package must be in range, even when that package fixes its own length.
  - `units` integer: Unit count, for packages priced per unit. Must fall inside one of that package's unit ranges.
  - `package_unit_range_id` integer: Unit range ID, for packages priced by unit range. Must be one of that package's own ranges.
  - `override_price` number: Overrides the package's calculated price. In whole currency units, so `1250.50` means $1,250.50. Cannot be negative.
  - `taxable` boolean: Whether this package is taxed. Defaults to `true`, including when you leave it out.
  - `existing_title` string: Renames the package on this event, leaving the package itself alone. Read only when editing in place.
  - `existing_description_html` string: Rewrites the package's description on this event. Accepts HTML. Read only when editing in place.
  - `existing_primary_image_attachment` string: ActiveStorage signed id for the package's image on this event. Send an empty string to clear it.
  - `existing_primary_wide_image_attachment` string: ActiveStorage signed id for the 16:9 variant. Send an empty string to clear it.
  - `existing_primary_square_image_attachment` string: ActiveStorage signed id for the 1:1 variant. Send an empty string to clear it.
  - `existing_primary_tall_image_attachment` string: ActiveStorage signed id for the 9:16 variant. Send an empty string to clear it.
  - `new_event_type_id` string: The package to swap in, from `GET /api/v1/packages`, or the literal `custom` for a one-off. Required when `use_new_or_existing_package` is `new`, ignored otherwise.
  - `new_one_off_custom_title` string: Title for the one-off package being swapped in. Required when `new_event_type_id` is `custom`.
  - `new_one_off_custom_description_html` string: Description for the one-off package being swapped in. Accepts HTML.

## Response `200`

package updated

---

[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)
