---
title: "Put a guest on a full time's waitlist by hand, such as a caller: by session_id, or offering_id with starts_at. Its offering's waitlist must be on (offerings.update waitlist_enabled; 409 waitlist_off). Nothing is held or charged. The guest is emailed that they're on it, with a link to leave; when a place opens, everyone waiting whose party fits is emailed at once and the first to book gets it. A party that fits now is refused with 409 has_room (book it instead), and one the time could never take with 400 too_many_places. The same guest again changes their places. The answer says what changed and whether they were emailed"
method: POST
path: "/waitlist"
tags: ["waitlist"]
---

# Put a guest on a full time's waitlist by hand, such as a caller: by session_id, or offering_id with starts_at. Its offering's waitlist must be on (offerings.update waitlist_enabled; 409 waitlist_off). Nothing is held or charged. The guest is emailed that they're on it, with a link to leave; when a place opens, everyone waiting whose party fits is emailed at once and the first to book gets it. A party that fits now is refused with 409 has_room (book it instead), and one the time could never take with 400 too_many_places. The same guest again changes their places. The answer says what changed and whether they were emailed

`POST /waitlist`

## Request

- Base URL: `https://daybag.io/api/v1`
- URL: `https://daybag.io/api/v1/waitlist`
- Auth: HTTP bearer

## Request body

- object
  - `session_id` string, uuid: The time: a class's session_id from availability_get, or any time's from sessions_list
  - `offering_id` string, uuid
  - `starts_at` string: With offering_id, the time's start: how an appointment's calendar time is named
  - `places` integer, required: Their party: seats, guests or items
  - `customer` object, required
    - `email` string, email, required
    - `name` string
    - `phone` string

## Response `201`

Success

- object
  - `id` string, required
  - `session_id` string, required: The time they're waiting for
  - `offering_id` string, required
  - `starts_at` string, required: ISO 8601 timestamp (UTC)
  - `ends_at` string, required: ISO 8601 timestamp (UTC)
  - `places` integer, required: Their party: seats, guests or items
  - `joined_at` string, required: ISO 8601 timestamp (UTC)
  - `told_at` string, nullable, required: ISO 8601 timestamp (UTC)
  - `customer` object, required
    - `id` string, required
    - `name` string, required
    - `email` string, required
    - `phone` string, required
  - `change` 'joined' | 'rejoined' | 'updated' | 'same', required: joined: put on; rejoined: put back after leaving; updated: their places changed; same: already waiting as asked
  - `emailed` boolean, required: Whether they were emailed that they're on it: false when nothing new was joined, or when their inbox's daily cap for waitlist mail held it back

## Other responses

- `default`: Error

---

[API](https://skmtc.dev/daybag/apis/daybooked-io-api.md) · [All operations](https://skmtc.dev/daybag/apis/daybooked-io-api/llms.txt) · [OpenAPI document](https://skmtc.dev/daybag/apis/daybooked-io-api/revisions/1f576dead370?raw)
