---
title: "Create a Class Reservation for a Client"
method: POST
path: "/classes/{class_id}/clients/{client_id}/reserve"
tags: ["Class Reservations"]
---

# Create a Class Reservation for a Client

`POST /classes/{class_id}/clients/{client_id}/reserve`

Creates a Class Reservation for a Client for a specified Class

## Path parameters

- `class_id` integer, required
- `client_id` integer, required

## Headers

- `x-api-key` string, required

## Request body

- RequestCreateReservation — Body structure for creating a reservation
  - `is_recurring` boolean — If true, create a recurring class reservation
  - `member_plan_id` integer — Membership to associate reservations to
  - `repeat_type_id` integer — The repetition type of the recurring class reservation (1 = weekly, 2 = monthly, 3 = yearly)
  - `end_type_id` integer — The end type of the recurring class reservation (1 = end date, 2 = occurences, 3 = forever)
  - `end_date` string, date — Date that the recurring reservation ends (If EndTypeId = OnADate)
  - `custom_repeat_interval` integer — Number of weeks, months, or years (depending on RepeatTypeId) between reservations (ex: every 2 weeks)
  - `occurrences` integer — Number of occurrences before recurring reservation ends (If EndTypeId = After)
  - `is_sunday` boolean — If true, reservations will be made on Sundays (If RepeatTypeId = Weeks)
  - `is_monday` boolean — If true, reservations will be made on Mondays (If RepeatTypeId = Weeks)
  - `is_tuesday` boolean — If true, reservations will be made on Tuesdays (If RepeatTypeId = Weeks)
  - `is_wednesday` boolean — If true, reservations will be made on Wednesdays (If RepeatTypeId = Weeks)
  - `is_thursday` boolean — If true, reservations will be made on Thursdays (If RepeatTypeId = Weeks)
  - `is_friday` boolean — If true, reservations will be made on Fridays (If RepeatTypeId = Weeks)
  - `is_saturday` boolean — If true, reservations will be made on Saturdays (If RepeatTypeId = Weeks)
  - `override_waitlist` boolean — If true, reservations created will override the waitlist and book over a class&#39;s reservation limit

## Response `200`

Created Class Reservation

- ClassReservationResponse — Response for /class/reservation methods
  - `reservation_id` integer — Reservation&#39;s Id
  - `client_id` string — ClientId
  - `client` string — Client&#39;s Name
  - `lead_id` integer — Lead&#39;s Id
  - `lead` string — Lead&#39;s Name
  - `dropin_id` integer — Drop In Identifier
  - `dropin` string — Drop In Name
  - `drop_in_email` string — Email of the Drop In
  - `class_id` integer — Reservation&#39;s Class Id (Identifier)
  - `class` string — Reservation&#39;s class name
  - `utc_class_start_datetime` string, date-time — Date Time that the Class Starts (UTC)
  - `utc_class_end_datetime` string, date-time — Date Time that the Class Ends (UTC)
  - `local_class_start_datetime` string, date-time — Date Time that the Class Starts (Local)
  - `local_class_end_datetime` string, date-time — Date Time that the Class Ends (Local)
  - `program_id` string — Resrvation&#39;s Program Id (Identifier)
  - `program` string — Reservation&#39;s Program Name
  - `location_id` integer — Reservations Location Id (Identifier)
  - `location_name` string — Reservation&#39;s Location Name
  - `coaches` CoachQuery[] — List of Coaches assigned to the class
    - `coach_id` integer — User Id (Identifier) of the coach
    - `coach` string — Name of the coach
    - `payroll_position_id` integer — Payroll position Id of the coach
    - `payroll_position` string — Name of the payroll position the coach is assigned to for the class
  - `reservation_status_id` integer — Reservation Status Id (Identifier)
  - `reservation_status` string — Reservation Status
  - `created` Created — Record creation data.
    - `created_by_id` integer — Unique ID of the user that created the record.
    - `created_by` string — Name of the user that created the record.
    - `created_on_datetime` string, date-time — Datetime on which the record was created.
  - `updated` Updated — Update info
    - `updated_by_id` integer — Unique ID of the user that last updated the record.
    - `updated_by` string — Name of the user that most recently updated the record.
    - `updated_on_datetime` string, date-time — Datetime on which the record was last updated.
  - `membership_id` integer — Id of the Membership used for the Reservation
  - `membership` string — Membership used for the Reservation
  - `is_cancelled_from_waitlist` boolean — Determines if the Reservation was cancelled from waitlist
  - `is_late_cancellation` boolean — Determines if the Reservation is a Late Cancellation
  - `wodify_validation_result` string — The purpose of this attribute is to save any UserException message, that is, and user friendly message that should be shown to the end user. All methods should have, just like service actions: - an UserException with Abort Transaction = Yes, and a Log Error = No - an AllExceptions with Abort Transaction = Yes, and a Log Error = Yes With this, any known issue that we don&#39;t consider an error log, like a business validation, we raise it to be catch in the UserException and we don&#39;t log it. Then, in the OnResponse of the full REST service, the Build_Response_JSON action will take care on the output json format. An Exception will have the default formatted error message. If its an AllException, it will log the error so that we can fix it. If its a UserException, it will deliver as an error but it won&#39;t log it as an error. A success output will not have this attribute, the Build_Response_JSON will remove it from the final output.
  - `is_recurring` boolean — If true, reservation is a part of a recurring reservation
  - `recurrence_description` string — If the class reservation is a part of a recurrence, the description of that recurrence

---

[API](https://skmtc.net/wodify/apis/leads.md) · [All operations](https://skmtc.net/wodify/apis/leads/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/wodify/leads/revisions/974500ca0714/schema)
