---
title: "Create a calendar note"
method: POST
path: "/shop/calendar-notes"
tags: ["CalendarNotes"]
---

# Create a calendar note

`POST /shop/calendar-notes`

Creates a new `CalendarNote` against a site for a given date.
Requires the `RESERVATIONS_MANAGE` permission on the target site.

## Request body

- object
  - `body` string, required — The note text. Plain text only — line breaks are preserved but no markdown is rendered. There is no hard length limit, but keep it short so it reads well in the calendar.
  - `date` string, date, required — The calendar date the note applies to, in `YYYY-MM-DD` format. The date is interpreted in the site's local timezone.
  - `site_id` string, uuid — ID of the site to attach the note to. The caller's API key must have access to the site and the `RESERVATIONS_MANAGE` permission on it. Defaults to the site from the request context when omitted.

## Response `201`

A single `CalendarNote`.

- object
  - `data` CalendarNote, required — A `CalendarNote` is a free-form, date-scoped annotation that surfaces on the operator calendar for a site. Staff use these to record context for a particular day — e.g. a public holiday, a marketing event, a known understaffed shift, or a VIP reservation that everyone should know about. Notes are date-bound (one day at a time) and site-scoped; they do not affect availability or block bookings.
    - `id` string, object-id, required — Unique identifier for the note.
    - `site_id` string, uuid, required — ID of the site this note is attached to.
    - `body` string, required — The note text. Plain text only — line breaks are preserved but no markdown is rendered.
    - `date` string, date, required — The calendar date the note applies to, in `YYYY-MM-DD` format in the site's local timezone.
    - `created_by_id` string, uuid, nullable — ID of the user who created the note.
    - `created_by` object, nullable — Summary of the user who created the note, if known.
    - `updated_by_id` string, uuid, nullable — ID of the user who last updated the note.
    - `updated_by` object, nullable — Summary of the user who last updated the note, if any updates have been made.
    - `deleted_by_id` string, uuid, nullable — ID of the user who deleted the note, if it has been soft deleted. Usually null on live records.
    - `deleted_by` object, nullable — Summary of the user who deleted the note, if it has been soft deleted.
    - `created_at` string, date-time, required — ISO-8601 timestamp of when the note was created.
    - `updated_at` string, date-time, required — ISO-8601 timestamp of when the note was last updated.

## Other responses

- `401` — The user is unauthenticated
- `403` — The authenticated user does not have permission.
- `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)
