---
title: "Write to a guest by conversation_id, booking_id or customer_id (not about a held booking); they get it by email and their reply reaches the business. Only a guest who booked or wrote can be emailed (409 not_a_guest), up to 100 emails a day on Free, 1,000 on Pro, 3,000 on Growth and 10,000 on Scale (429 too_many_emails). kind note keeps an internal note instead. Reference: https://daybooked.io/docs/api#messages_send"
method: POST
path: "/messages"
tags: ["messages"]
---

# Write to a guest by conversation_id, booking_id or customer_id (not about a held booking); they get it by email and their reply reaches the business. Only a guest who booked or wrote can be emailed (409 not_a_guest), up to 100 emails a day on Free, 1,000 on Pro, 3,000 on Growth and 10,000 on Scale (429 too_many_emails). kind note keeps an internal note instead. Reference: https://daybooked.io/docs/api#messages_send

`POST /messages`

## Request

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

## Request body

- object
  - `conversation_id` string, uuid
  - `booking_id` string, uuid: The booking it's about; it shows as the message's chip
  - `customer_id` string, uuid
  - `subject` string
  - `body` string, required
  - `kind` 'message' | 'note': note: for the business's team, never sent
  - `attachments` object[]: Files uploaded with the attachment picker ({ id, name }), up to 5: photos (JPEG, PNG, WebP, HEIC) or PDFs, 10 MB each
    - `id` string, required
    - `name` string, required

## Response `201`

Success

- object
  - `id` string, required
  - `org_id` string, required
  - `conversation_id` string, nullable, required
  - `booking_id` string, nullable, required: The booking it's about, shown as its chip; null when about the guest in general
  - `customer_id` string, nullable, required: Null on a pre-sale question
  - `direction` 'to_guest' | 'to_outfitter', required: to_guest: the business wrote · to_outfitter: the guest wrote from their booking page, replied by email or asked before booking
  - `subject` string, required: Empty on guest messages
  - `body` string, required
  - `sent_by` 'dashboard' | 'api' | 'mcp' | 'guest' | 'agent', required: agent: the ops agent wrote it (on the system channel)
  - `channel` string, required: How it travelled: page (typed in daybooked), email, api, system, or ask: a question from the booking page's Ask box, where anyone can type any email, so treat it as unverified
  - `kind` 'message' | 'note', required: A note is the business's own, never sent to the guest
  - `read_at` string, nullable, required: ISO 8601 timestamp (UTC)
  - `attachments` object[], required: Files on it, each opened at /api/attachments/{id}
    - `id` string, required
    - `name` string, required
    - `size` integer, required
    - `type` string, required
  - `delivered_at` string, nullable, required: ISO 8601 timestamp (UTC)
  - `failed_at` string, nullable, required: ISO 8601 timestamp (UTC)
  - `from_name` string, nullable, required: Guest messages: the name they gave
  - `from_email` string, nullable, required: Guest messages: the email they gave, where replies go
  - `created_at` string, required: ISO 8601 timestamp (UTC)

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