---
title: "Add a guest to an order"
method: POST
path: "/shop/orders/{orderId}/guests"
tags: ["Orders"]
---

# Add a guest to an order

`POST /shop/orders/{orderId}/guests`

Add a new guest to an order. If this is the first guest on the order, all
existing items will be reassigned to the new guest and they will be marked
as the lead booker by default.

If the order doesn't yet have a `customer_id` and the new guest is linked
to a customer via `customer_id`, that customer is also set as the order's
customer.

## Request body

- object
  - `name` string — The guest's full name. Used when the site does not enforce separate first/last name fields. Optional if `first_name`/`last_name` are provided, if the guest is the lead booker, or if `customer_id` is set.
  - `first_name` string — The guest's first name. Required when the site enforces separate first/last name fields.
  - `last_name` string — The guest's last name. Required when the site enforces separate first/last name fields.
  - `customer_id` string, uuid — Identifier of an existing `Customer` to link this guest to. When provided, the guest's name and email are inherited from the customer record. Omit to create a guest-only entry without a linked customer account.
  - `is_lead_booker` boolean — Whether this guest is the lead booker for the order. Defaults to `true` when this is the first guest on the order, otherwise `false`.

## Response `201`

The guest was successfully created or updated.

- object
  - `data` 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.

## Other responses

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