---
title: "Check a guest in to a session booking"
method: POST
path: "/shop/session-bookings/{bookingId}/check-in"
tags: ["SessionBookings"]
---

# Check a guest in to a session booking

`POST /shop/session-bookings/{bookingId}/check-in`

Marks a `SessionBooking` as checked in. Used by front-of-house
staff and self-service kiosks at the start of a session to record
arrival. Setting `is_checked_in` to `false` reverses an earlier
check-in.

The request body is optional — calling the endpoint with no body
is equivalent to passing `{ "is_checked_in": true }`.

## Request body

- object
  - `is_checked_in` boolean — Set to `false` to clear an existing check-in. Defaults to `true` when omitted, marking the booking as checked in.

## Response `200`

A single `SessionBooking`.

- object
  - `data` SessionBooking, required — Describes a booking for a session.
    - `id` string, required — The ID of the session.
    - `checked_in_at` string, date-time, nullable, required — The time this booking was checked in.
    - `checked_out_at` string, date-time, nullable, required — The time this booking was checked out.
    - `customer_id` string, required — The ID of the customer this booking is for.
    - `email` string, required — The email address of the customer.
    - `first_name` string, required — The first name of the customer.
    - `guests` Guest[], required
      - `id` string, object-id, required — Stable identifier for the guest slot on an order. Used to attach intake-form answers, check the guest in or out, and link the slot to a `Customer` once one is resolved.
      - `checked_in_at` string, date-time, nullable, required — ISO-8601 timestamp at which the guest checked in for their visit. `null` until check-in happens.
      - `checked_out_at` string, date-time, nullable, required — ISO-8601 timestamp at which the guest checked out / finished their visit. `null` while the visit is still in progress.
      - `customer_id` string, uuid, nullable, required — The `Customer` the guest slot has been linked to, if any. `null` for walk-ins or anonymous guests that haven't been matched to a customer record yet.
      - `email` string, email, nullable — Email address captured for this guest, used to send the pre-visit intake form and post-visit follow-ups. `null` when no email has been supplied for the slot.
      - `first_name` string, required — The first name of the guest.
      - `intake_form_submission_id` string, object-id — Identifier of the most recent intake-form submission for this guest, if one exists. Use this to fetch the submitted answers from the guest-intake API.
      - `intake_form_complete` boolean, required — Whether the intake form for the guest is complete.
      - `is_lead_booker` boolean, required — Whether the guest is the lead booker.
      - `last_name` string, required — The last name of the guest.
      - `name` string, required — Full display name for the guest — typically `first_name` plus `last_name`, but kept as a separate field so the platform can render it consistently across receipts, intake forms and check-in screens.
    - `intake_forms_completed` boolean, required — Whether the required intake form has been completed.
    - `intake_form_required` boolean, required — Whether the session booking requires an intake form to be completed.
    - `is_no_show` boolean, required — Whether this booking was marked as a no-show.
    - `last_name` string, required — The last name of the customer.
    - `order_id` string, required — The ID of the order associated with this session.
    - `order_item_id` string, required — The ID of the order item associated with this session.
    - `order_ref` string, required — The order reference associated with this session.
    - `organisation_id` string, required — The ID of the organisation the session booking belongs to.
    - `phone` string, required — The customer's phone number.
    - `session_id` string, required — The ID of the session this booking is for.
    - `session_type_id` string, required — The ID of the session type.
    - `session_type_name` string, required — The name of the session type.
    - `site_id` string, required — The ID of the site the session booking belongs to.
    - `stage` 'not_arrived' | 'arrived' | 'in_treatment' | 'checked_out', required — The current stage of the order the session belongs to.
    - `status` 'new' | 'in_progress' | 'confirmed' | 'waitlisted', required — The status of the booking.
    - `created_at` string, date-time, required — A datetime string of when the resource was created.
    - `updated_at` string, date-time, required — A datetime string of when the resource was last updated.

## Other responses

- `400` — The request failed.
- `401` — The user is unauthenticated
- `403` — The authenticated user does not have permission.
- `404` — The resource couldn't be found
- `422` — The request didn't pass validation

---

[API](https://skmtc.dev/try/apis/trybe-api.md) · [All operations](https://skmtc.dev/try/apis/trybe-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/try/trybe-api/revisions/f37f92702da5/schema)
