---
title: "Update a package"
method: PUT
path: "/api/v1/packages/{id}"
tags: ["Packages & Services"]
---

# Update a package

`PUT /api/v1/packages/{id}`

## Request

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

Updates an existing package (event type) with the provided fields. Only fields included in the request body are modified — omitted fields remain unchanged.

Use this to rename a package, change its visibility, adjust pricing and deposit terms, or reconfigure its duration and availability. To move a package to a different package group, manage it from the Package Manager in the app.

**Required permission:** `offerings_write`

## Path parameters

- `id` integer, required

## Headers

- `Api-Key` string, required

## Request body

- object
  - `name` string: The name of the package (e.g., "4-Hour DJ Package")
  - `sub_header` string: Short sub-heading shown under the package name (max 100 characters)
  - `description_html` string: Rich-text (HTML) description of the package
  - `show_name` boolean: Whether the package name is shown on the booking page
  - `status` 'public' | 'private' | 'disabled': Booking-page visibility
  - `online_booking_mode` 'allow_online_booking' | 'request_for_proposal' | 'show_contact_form': How customers engage this package online
  - `contact_form_id` integer: Lead form to display (required when online_booking_mode is show_contact_form)
  - `taxable` boolean: Whether the package is taxable
  - `base_rate` number: Base price of the package, in dollars
  - `deposit_method` 'none' | 'flat_rate' | 'percent': How the booking deposit is calculated
  - `deposit_amount` number: Fixed deposit amount in dollars (when deposit_method is flat_rate)
  - `deposit_multiplier_percent` integer: Deposit percentage (when deposit_method is percent)
  - `date_mode` 'date_time' | 'date_only': Whether the package is booked by time-of-day or by whole days
  - `default_length_in_minutes` integer: Default booking length in minutes (defaults to 60)
  - `calendar_mode` 'minimal' | 'automatic_slots' | 'predefined_slots': How bookable start times are presented: minimal (no slots), automatic_slots (generated from availability + slot_interval_minutes), or predefined_slots (manually defined slots)
  - `slot_interval_minutes` 15 | 30 | 60 | 120 | 180 | 240: Spacing between automatically generated start times, in minutes (used when calendar_mode is automatic_slots)
  - `enable_customer_can_book_extra_hours` boolean: Allow customers to choose a duration (hourly packages)
  - `min_length_in_minutes` integer: Minimum bookable length in minutes (when extra hours are enabled)
  - `max_length_in_minutes` integer: Maximum bookable length in minutes (when extra hours are enabled)
  - `step_in_minutes` 15 | 30 | 60 | 120 | 180 | 240: Increment customers can adjust the length by, in minutes
  - `price_per_extra_hour` number: Price charged per additional hour, in dollars
  - `enable_customer_can_book_extra_days` boolean: Allow customers to choose a number of days (multi-day packages)
  - `default_length_in_days` integer: Default number of days (required when date_mode is date_only)
  - `min_length_in_days` integer: Minimum bookable number of days (when extra days are enabled)
  - `max_length_in_days` integer: Maximum bookable number of days (when extra days are enabled)
  - `price_per_extra_day` number: Price charged per additional day, in dollars
  - `enable_customer_can_book_per_unit` boolean: Allow customers to book a quantity of units (e.g. per booth, per person)
  - `unit_name` string: Label for a single unit when per-unit booking is enabled (e.g. "booth", "guest")
  - `enable_customer_can_book_per_unit_range` boolean: Allow per-unit pricing tiers (ranges) rather than a single per-unit price
  - `available_every_day_of_the_week` 'yes' | 'yes_certain_hours' | 'no': Availability pattern across the week
  - `available_starts_at_time` string: Earliest bookable time of day (e.g. "09:00") when availability is limited to certain hours
  - `available_ends_at_time` string: Latest bookable time of day (e.g. "17:00") when availability is limited to certain hours

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