{"openapi":"3.0.1","info":{"title":"Check Cherry Business API","version":"v1","description":"The Check Cherry Business API allows automated access to events, leads, bookings,\nand other business-specific features for individual Check Cherry accounts.\n\n## Getting Started\n\n**Base URL** — All API requests should be made to:\n\n```\nhttps://api.checkcherry.com/api/v1/\n```\n\nAll endpoints in this documentation are relative to this base URL.\n\n**Setup:**\n\n1. Log in to your Check Cherry account\n2. Navigate to **Manage → Business Settings → Integrations**\n3. Create a new **Integration Key**\n4. Copy the key (it starts with `ik_`) and use it to authenticate your requests\n\nEach integration key is tied to a specific user, providing an audit trail and user-level\npermissions. You can create multiple keys and revoke them individually.\n\n**Versioning & Stability** — This API is under active development. The API surface\nwill evolve as we ship new features and improve existing ones. Please build your\nintegrations with this in mind:\n\n- **Additive changes happen without notice.** New fields, endpoints, and optional\n  parameters may appear at any time. Your integration should ignore unknown fields\n  rather than breaking on them.\n- **We will try to give 30 days notice for breaking changes** (removing or renaming\n  fields, changing response structure, removing endpoints), but this is best-effort,\n  not a guarantee.\n- **Build defensively.** Don't assume field lists are frozen. Don't break on unknown\n  fields or new enum values.\n\n## Authentication\n\nPass your integration key as an `Api-Key` HTTP header with every request:\n\n```\ncurl -H \"Api-Key: ik_your_key_here\" https://api.checkcherry.com/api/v1/leads\n```\n\nThe key identifies both the business and the user automatically.\n\n**Security:**\n\n- **Your key is your identity.** Anyone with your integration key has full access\n  to your Check Cherry account. You are responsible for all activity that occurs\n  using your key.\n- **Keep your key secret.** Never expose integration keys in client-side code,\n  public repositories, or anywhere they could be accessed by unauthorized parties.\n- **HTTPS only.** All API requests must be made over HTTPS. Plain HTTP requests\n  will be rejected.\n- **Rotate and revoke.** If a key may have been compromised, revoke it immediately\n  from Business Settings and create a new one. Don't reuse keys across unrelated\n  integrations.\n- **Store keys securely.** Use environment variables or a secrets manager — never\n  commit keys to source control or store them in plain text.\n- **Monitor usage.** Keys track last-used timestamps. Review your active keys\n  periodically and revoke any that are no longer in use.\n\nCheck Cherry reserves the right to revoke any API key or suspend any account\nthat appears to be compromised, is being used in violation of our terms of service,\nor is abusing the platform. This includes but is not limited to excessive requests,\nunauthorized data access, or any activity that degrades the service for other users.\n\n## Making Requests\n\n**Request format** — Send JSON request bodies with the `Content-Type: application/json`\nheader for POST, PUT, and PATCH requests.\n\n**Response format** — All responses follow the [JSON:API](https://jsonapi.org/) format:\n\n```json\n{\n  \"data\": {\n    \"id\": \"123\",\n    \"type\": \"lead\",\n    \"attributes\": { \"first_name\": \"Jane\", \"email\": \"jane@example.com\" },\n    \"relationships\": { ... }\n  }\n}\n```\n\nError responses use this structure:\n\n```json\n{\n  \"meta\": { \"status\": \"error\" },\n  \"status\": \"unauthorized\",\n  \"reason\": \"api_key_missing\",\n  \"message\": \"API key is required\"\n}\n```\n\n**Pagination** — List endpoints support pagination via `page` and `per` query parameters.\nResponses include a `meta` object with pagination details:\n\n```json\n{\n  \"data\": [ ... ],\n  \"meta\": { \"total_count\": 142, \"per_page\": 25 }\n}\n```\n\n## Support\n\nCheck Cherry support can help with:\n\n- Account and billing issues\n- Integration key management (creating, revoking)\n- Reporting bugs or unexpected behavior in the API\n\nCheck Cherry support **cannot** help with:\n\n- Building or designing your custom integration\n- Debugging your application code\n- Troubleshooting third-party libraries or frameworks\n\nYou are responsible for developing and maintaining your own integrations. These\nAPI docs include endpoint descriptions, parameter details, and response examples —\nwe recommend using them alongside AI coding assistants (such as ChatGPT or Claude)\nto help build and troubleshoot your integration.\n\nFor platform issues, contact `support@checkcherry.com`.\n\n**Rate limiting** — Check Cherry enforces rate limits on API requests. Specific limits\nmay vary based on your plan and endpoint, but typical usage should not encounter them.\nIf the rate limit is exceeded, Check Cherry returns a `403 Forbidden` with an associated\n\"Rate Limit Exceeded\" message. Back off and retry after a brief delay. Intentional or\nrepeated abuse of rate limits may result in your API key being revoked or your account\nbeing suspended.\n"},"paths":{"/api/v1/add_on_categories":{"get":{"summary":"Fetch all add-on categories","tags":["Add-Ons"],"description":"Returns all active add-on categories for the business, ordered by position.\n\nAdd-on categories organize add-ons into logical groups (e.g., \"Lighting\", \"Equipment Upgrades\"). Each category contains one or more add-ons.\n\nUse the `include` query parameter to sideload related resources (comma-separated). Available: `add_ons`.\n\n**Required permission:** `offerings_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}}],"responses":{"200":{"description":"add-on categories found","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":[{"id":"10","type":"add_on_category","attributes":{"id":10,"name":"Lighting","position":1},"relationships":{"add_ons":{"data":[]}}},{"id":"11","type":"add_on_category","attributes":{"id":11,"name":"Equipment Upgrades","position":2},"relationships":{"add_ons":{"data":[]}}}]}}}}}}},"/api/v1/add_on_categories/{id}":{"get":{"summary":"Fetch an add-on category by ID","tags":["Add-Ons"],"description":"Returns the details of a single add-on category, including its name and position.\n\nUse the `include` query parameter to sideload related resources (comma-separated). Available: `add_ons`.\n\n**Required permission:** `offerings_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"id","in":"path","description":"The unique ID of the add-on category","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"add-on category found","content":{"application/json":{"example":{"data":{"id":"12","type":"add_on_category","attributes":{"id":12,"name":"Lighting","position":1},"relationships":{"add_ons":{"data":[]}}}}}}}}}},"/api/v1/add_ons":{"get":{"summary":"Fetch all add-ons","tags":["Add-Ons"],"description":"Returns all active add-ons for the business. Add-ons are optional upgrades or equipment that can be added to an event (e.g., extra speakers, uplighting, fog machine).\n\nResults can be filtered by text search, widget visibility, category, and sort order.\n\n**Required permission:** `offerings_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"text","in":"query","description":"Search add-ons by name","required":false,"schema":{"type":"string"}},{"name":"only_widget_visible","in":"query","description":"Only return add-ons visible on the booking widget","required":false,"schema":{"type":"boolean"}},{"name":"order","in":"query","description":"Sort order for results","required":false,"schema":{"type":"string"}},{"name":"category_ids[]","in":"query","items":{"type":"integer"},"description":"Filter by add-on category IDs","required":false,"schema":{"type":"array"}}],"responses":{"200":{"description":"add-ons found","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":[{"id":"7","type":"add_on","attributes":{"id":7,"name":"Uplighting Package","description":"Thousands of bubbles ready for that special moment","position":1,"price_method":"flat_rate","third_party_video_id":null,"price":"10.00","price_cents":1000,"price_currency":"USD","price_formatted":"$10","hourly_price":"0.00","hourly_price_cents":0,"hourly_price_currency":"USD","hourly_price_formatted":"$0","daily_price":"0.00","daily_price_cents":0,"daily_price_currency":"USD","daily_price_formatted":"$0","primary_image":{"video_variant":"/assets/video_dimensions_no-addon-51d25c35216ac7f3ea621f74772120bbea123405e2fa3f25d97050af78f5804e.png","url":null,"content_type":null},"additional_images":[]},"relationships":{"add_on_category":{"data":{"id":"13","type":"add_on_category"}}}}]}}}}}}},"/api/v1/add_ons/{id}":{"get":{"summary":"Fetch an add-on by ID","tags":["Add-Ons"],"description":"Returns the full details of a single add-on, including its name, description, pricing (flat rate, hourly, or daily), position, and images.\n\nUse the `include` query parameter to sideload related resources (comma-separated). Available: `add_on_category`.\n\n**Required permission:** `offerings_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"id","in":"path","description":"The unique ID of the add-on","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"add-on found","content":{"application/json":{"example":{"data":{"id":"8","type":"add_on","attributes":{"id":8,"name":"Uplighting Package","description":"Thousands of bubbles ready for that special moment","position":1,"price_method":"flat_rate","third_party_video_id":null,"price":"10.00","price_cents":1000,"price_currency":"USD","price_formatted":"$10","hourly_price":"0.00","hourly_price_cents":0,"hourly_price_currency":"USD","hourly_price_formatted":"$0","daily_price":"0.00","daily_price_cents":0,"daily_price_currency":"USD","daily_price_formatted":"$0","primary_image":{"video_variant":"/assets/video_dimensions_no-addon-51d25c35216ac7f3ea621f74772120bbea123405e2fa3f25d97050af78f5804e.png","url":null,"content_type":null},"additional_images":[]},"relationships":{"add_on_category":{"data":{"id":"14","type":"add_on_category"}}}}}}}}}}},"/api/v1/appointments/{appointment_id}/booking_questions":{"get":{"summary":"Fetch booking question answers for an appointment","tags":["Appointments"],"description":"Returns the full set of booking questions and their current answers for an appointment, as configured on the appointment's calendar. Each entry includes the question's `column_name`, `label`, `kind`, `intent`, `built_in` flag, current `value`, and `formatted_value`.\n\nUse the `column_name` of each entry as the key when sending updates via the `PATCH /api/v1/appointments/{appointment_id}/booking_questions` endpoint.\n\n**Note:** booking questions are sourced from the appointment's calendar. Appointments not created from a calendar (e.g. Quick Add) have no associated questions and will return an empty list.\n\n**Required permission:** `assigned_appointment_read` or `unassigned_appointment_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"appointment_id","in":"path","description":"The unique ID of the appointment","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"booking questions returned","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":[{"id":"285","type":"appointment_booking_question","attributes":{"id":285,"appointment_id":14,"booking_question_id":null,"editable":false,"column_name":"location","name":"Appointment Location","label":"Appointment Location","kind":"text","intent":"Appointment Location","built_in":true,"link":null,"value":"Phone","formatted_value":"Phone","options":null,"archived":false}},{"id":"286","type":"appointment_booking_question","attributes":{"id":286,"appointment_id":14,"booking_question_id":null,"editable":false,"column_name":"guest_name","name":"Name","label":"Name","kind":"text","intent":"Name","built_in":true,"link":null,"value":"John Doe","formatted_value":"John Doe","options":null,"archived":false}},{"id":"287","type":"appointment_booking_question","attributes":{"id":287,"appointment_id":14,"booking_question_id":null,"editable":false,"column_name":"guest_email","name":"Email","label":"Email","kind":"text","intent":"Email","built_in":true,"link":null,"value":"jdoe@example.com","formatted_value":"jdoe@example.com","options":null,"archived":false}},{"id":"288","type":"appointment_booking_question","attributes":{"id":288,"appointment_id":14,"booking_question_id":null,"editable":false,"column_name":"guest_phone","name":"Phone","label":"Phone","kind":"text","intent":"Phone","built_in":true,"link":null,"value":"555-555-5555","formatted_value":"555-555-5555","options":null,"archived":false}},{"id":"289","type":"appointment_booking_question","attributes":{"id":289,"appointment_id":14,"booking_question_id":null,"editable":false,"column_name":"additional_guests","name":"Guest Email(s)","label":"Guest Email(s)","kind":"text","intent":"Guest Email(s)","built_in":true,"link":null,"value":null,"formatted_value":null,"options":null,"archived":false}},{"id":"290","type":"appointment_booking_question","attributes":{"id":290,"appointment_id":14,"booking_question_id":null,"editable":false,"column_name":"message","name":"Additional Notes","label":"Additional Notes","kind":"textarea","intent":"Additional Notes","built_in":true,"link":null,"value":null,"formatted_value":null,"options":null,"archived":false}}]}}}}}},"patch":{"summary":"Update booking question answers for an appointment","tags":["Appointments"],"description":"Updates one or more booking question answers on the appointment. The body's `custom_questions` keys must match the `column_name` of each booking question (as returned by the `GET` endpoint). Built-in fields (e.g. `guest_phone`, `event_date`, `venue_name`) are also accepted here.\n\nOnly the keys you include are touched — other answers on the appointment are preserved.\n\n**Note:** booking questions are sourced from the appointment's calendar. Appointments not created from a calendar (e.g. Quick Add) have no associated questions, so this endpoint is a no-op for them — use `PATCH /api/v1/appointments/{id}` to update guest/venue/event fields directly in that case.\n\n**Required permission:** `assigned_appointment_write` or `unassigned_appointment_write`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"appointment_id","in":"path","description":"The unique ID of the appointment","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"booking questions updated","content":{"application/json":{"example":{"meta":{"status":"ok"}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"custom_questions":{"type":"object","description":"Keys are booking-question column names; values are the answer to record.","additionalProperties":true}},"required":["custom_questions"]}}}}}},"/api/v1/appointments":{"get":{"summary":"Fetch all appointments","tags":["Appointments"],"description":"Returns a paginated list of appointments for the business. Results can be filtered by date range, staff member, brand, cancellation status, and text search.\n\nSet `staff_id` to `my` to return only appointments assigned to the authenticated user.\n\nThe response includes `meta.total_count` and `meta.per_page` for pagination.\n\n**Required permission:** `assigned_appointment_read` or `unassigned_appointment_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"start_date","in":"query","description":"Filter by start date (YYYY-MM-DD)","required":false,"schema":{"type":"string"}},{"name":"end_date","in":"query","description":"Filter by end date (YYYY-MM-DD)","required":false,"schema":{"type":"string"}},{"name":"staff_id","in":"query","description":"Filter by staff member ID, or 'my' for the authenticated user","required":false,"schema":{"type":"string"}},{"name":"brand_id","in":"query","description":"Filter by brand ID","required":false,"schema":{"type":"integer"}},{"name":"canceled_status","in":"query","description":"Filter by cancellation status","required":false,"schema":{"type":"string"}},{"name":"past_or_future","in":"query","description":"Filter to past or future appointments","required":false,"schema":{"type":"string"}},{"name":"search_text","in":"query","description":"Full-text search across appointment details","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","description":"Page number for pagination (default: 1)","required":false,"schema":{"type":"integer"}},{"name":"per","in":"query","description":"Number of results per page (default: 25)","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"appointments found","content":{"application/json":{"example":{"meta":{"status":"ok","total_count":1,"per_page":10},"data":[{"id":"16","type":"appointment","attributes":{"id":16,"title":null,"guest_name":"John Doe","guest_email":"jdoe@example.com","guest_phone":"555-555-5555","starts_at":"2026-06-16T13:55:57.658-07:00","ends_at":"2026-06-16T14:55:57.658-07:00","length_in_minutes":60,"brand_id":669,"brand_name":"Bode and Sons 91","additional_guests":null,"additional_guest_list":[],"location":"Phone","location_details":null,"private_notes":null,"canceled":false,"zoom_meeting_id":null,"zoom_meeting_invitation":null,"zoom_join_url":null,"google_meet_link":null,"google_meet_conference_id":null,"google_meet_invitation":null,"user_appointment_calendar_id":null,"event_time":null,"event_length":null,"venue_name":null,"venue_address":null,"venue_city":null,"venue_state":null,"venue_zip":null,"event_date":null,"event_date_iso8601":null,"available_locations":["In Person","Phone"],"formatted_date":"Tuesday, June 16, 2026","formatted_datetime_range":"Tuesday, June 16, 2026 • 1:55 PM - 2:55 PM","formatted_time_range":"1:55 PM - 2:55 PM","staff_member_abbreviations":"NC","custom_questions":{}},"relationships":{"user_appointments":{"data":[{"id":"16","type":"user_appointment"}]}}}]}}}}}},"post":{"summary":"Create an appointment","tags":["Appointments"],"description":"Creates a new appointment for the business. The appointment is assigned to the authenticated user by default, or to a specific user via `user_id`.\n\nThe `location` field specifies where the appointment takes place (e.g., \"Phone\", \"In Person\", a Zoom link, etc.).\n\n**Required permission:** `appointment_create`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}}],"responses":{"200":{"description":"appointment created","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"17","type":"appointment","attributes":{"id":17,"title":"Jane Smith’s Phone Appointment","guest_name":"Jane Smith","guest_email":"jane@example.com","guest_phone":"555-123-4567","starts_at":"2026-06-16T14:00:00.000-07:00","ends_at":"2026-06-16T14:30:00.000-07:00","length_in_minutes":30,"brand_id":670,"brand_name":"Stroman Group 92","additional_guests":null,"additional_guest_list":[],"location":"Phone","location_details":null,"private_notes":"","canceled":false,"zoom_meeting_id":null,"zoom_meeting_invitation":null,"zoom_join_url":null,"google_meet_link":null,"google_meet_conference_id":null,"google_meet_invitation":null,"user_appointment_calendar_id":null,"event_time":null,"event_length":null,"venue_name":null,"venue_address":null,"venue_city":null,"venue_state":null,"venue_zip":null,"event_date":null,"event_date_iso8601":null,"available_locations":["In Person","Phone"],"formatted_date":"Tuesday, June 16, 2026","formatted_datetime_range":"Tuesday, June 16, 2026 • 2:00 PM - 2:30 PM","formatted_time_range":"2:00 PM - 2:30 PM","staff_member_abbreviations":"QL","custom_questions":{}},"relationships":{"user_appointments":{"data":[{"id":"17","type":"user_appointment"}]}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"guest_name":{"type":"string","description":"Guest name"},"guest_email":{"type":"string","description":"Guest email address"},"guest_phone":{"type":"string","description":"Guest phone number"},"additional_guests":{"type":"string","description":"Additional guest names or details"},"starts_at_date":{"type":"string","description":"Appointment date (YYYY-MM-DD)"},"starts_at_time":{"type":"string","description":"Appointment start time (e.g., \"2:00 PM\")"},"length_in_minutes":{"type":"integer","description":"Duration in minutes"},"location":{"type":"string","description":"Appointment location (e.g., \"Phone\", \"In Person\")"},"private_notes":{"type":"string","description":"Private internal notes"},"message":{"type":"string","description":"Message to the guest"},"user_id":{"type":"integer","description":"Staff member ID to assign (defaults to authenticated user)"},"brand_id":{"type":"integer","description":"Brand ID (defaults to the primary brand)"},"user_appointment_calendar_id":{"type":"integer","description":"Appointment calendar ID for scheduling"},"created_via":{"type":"string","description":"How the appointment was created","enum":["quick_add","widget","app"]}},"required":["guest_name","guest_email","starts_at_date","starts_at_time","length_in_minutes","created_via"]}}}}}},"/api/v1/appointments/{id}":{"get":{"summary":"Fetch an appointment by ID","tags":["Appointments"],"description":"Returns the full details of a single appointment, including guest information, date/time, location, meeting links (Zoom, Google Meet), and assigned staff.\n\nUse the `include` query parameter to sideload related resources (comma-separated). Available: `user_appointments`.\n\n**Required permission:** `assigned_appointment_read` or `unassigned_appointment_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"id","in":"path","description":"The unique ID of the appointment","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"appointment found","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"18","type":"appointment","attributes":{"id":18,"title":null,"guest_name":"John Doe","guest_email":"jdoe@example.com","guest_phone":"555-555-5555","starts_at":"2026-06-16T13:55:58.066-07:00","ends_at":"2026-06-16T14:55:58.066-07:00","length_in_minutes":60,"brand_id":671,"brand_name":"Abshire-Hackett 93","additional_guests":null,"additional_guest_list":[],"location":"Phone","location_details":null,"private_notes":null,"canceled":false,"zoom_meeting_id":null,"zoom_meeting_invitation":null,"zoom_join_url":null,"google_meet_link":null,"google_meet_conference_id":null,"google_meet_invitation":null,"user_appointment_calendar_id":null,"event_time":null,"event_length":null,"venue_name":null,"venue_address":null,"venue_city":null,"venue_state":null,"venue_zip":null,"event_date":null,"event_date_iso8601":null,"available_locations":["In Person","Phone"],"formatted_date":"Tuesday, June 16, 2026","formatted_datetime_range":"Tuesday, June 16, 2026 • 1:55 PM - 2:55 PM","formatted_time_range":"1:55 PM - 2:55 PM","staff_member_abbreviations":"LD","custom_questions":{}},"relationships":{"user_appointments":{"data":[{"id":"18","type":"user_appointment"}]}}}}}}}}},"put":{"summary":"Update an appointment","tags":["Appointments"],"description":"Updates an existing appointment. Only the fields provided will be changed. If the start time or end time changes, a rescheduled notification is automatically sent.\n\n**Required permission:** `assigned_appointment_write` or `unassigned_appointment_write`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"id","in":"path","description":"The unique ID of the appointment","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"appointment updated","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"19","type":"appointment","attributes":{"id":19,"title":"Updated Name’s Phone Appointment","guest_name":"Updated Name","guest_email":"jdoe@example.com","guest_phone":"555-555-5555","starts_at":"2026-06-16T13:55:58.124-07:00","ends_at":"2026-06-16T14:55:58.124-07:00","length_in_minutes":60,"brand_id":672,"brand_name":"Runolfsson, Casper and Olson 94","additional_guests":null,"additional_guest_list":[],"location":"Phone","location_details":null,"private_notes":null,"canceled":false,"zoom_meeting_id":null,"zoom_meeting_invitation":null,"zoom_join_url":null,"google_meet_link":null,"google_meet_conference_id":null,"google_meet_invitation":null,"user_appointment_calendar_id":null,"event_time":null,"event_length":null,"venue_name":null,"venue_address":null,"venue_city":null,"venue_state":null,"venue_zip":null,"event_date":null,"event_date_iso8601":null,"available_locations":["In Person","Phone"],"formatted_date":"Tuesday, June 16, 2026","formatted_datetime_range":"Tuesday, June 16, 2026 • 1:55 PM - 2:55 PM","formatted_time_range":"1:55 PM - 2:55 PM","staff_member_abbreviations":"LM","custom_questions":{}},"relationships":{"user_appointments":{"data":[{"id":"19","type":"user_appointment"}]}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"guest_name":{"type":"string","description":"Guest name"},"guest_email":{"type":"string","description":"Guest email address"},"guest_phone":{"type":"string","description":"Guest phone number"},"additional_guests":{"type":"string","description":"Additional guest names or details"},"starts_at_date":{"type":"string","description":"New appointment date (YYYY-MM-DD)"},"starts_at_time":{"type":"string","description":"New appointment start time (e.g., \"2:00 PM\")"},"length_in_minutes":{"type":"integer","description":"Duration in minutes"},"location":{"type":"string","description":"Appointment location"},"location_details":{"type":"string","description":"Additional location details"},"private_notes":{"type":"string","description":"Private internal notes"},"custom_title":{"type":"string","description":"Custom title override"},"brand_id":{"type":"integer","description":"Brand ID"}}}}}}},"delete":{"summary":"Delete an appointment","tags":["Appointments"],"description":"Soft-deletes an appointment. The appointment is marked as deleted but not permanently removed.\n\n**Required permission:** `assigned_appointment_write` or `unassigned_appointment_write`","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"id","in":"path","description":"The unique ID of the appointment","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"appointment deleted","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"20","type":"appointment","attributes":{"id":20,"title":null,"guest_name":"John Doe","guest_email":"jdoe@example.com","guest_phone":"555-555-5555","starts_at":"2026-06-16T13:55:58.198-07:00","ends_at":"2026-06-16T14:55:58.198-07:00","length_in_minutes":60,"brand_id":673,"brand_name":"Russel Inc 95","additional_guests":null,"additional_guest_list":[],"location":"Phone","location_details":null,"private_notes":null,"canceled":false,"zoom_meeting_id":null,"zoom_meeting_invitation":null,"zoom_join_url":null,"google_meet_link":null,"google_meet_conference_id":null,"google_meet_invitation":null,"user_appointment_calendar_id":null,"event_time":null,"event_length":null,"venue_name":null,"venue_address":null,"venue_city":null,"venue_state":null,"venue_zip":null,"event_date":null,"event_date_iso8601":null,"available_locations":["In Person","Phone"],"formatted_date":"Tuesday, June 16, 2026","formatted_datetime_range":"Tuesday, June 16, 2026 • 1:55 PM - 2:55 PM","formatted_time_range":"1:55 PM - 2:55 PM","staff_member_abbreviations":"TB","custom_questions":{}},"relationships":{"user_appointments":{"data":[{"id":"20","type":"user_appointment"}]}}}}}}}}}},"/api/v1/appointments/{id}/cancel":{"put":{"summary":"Cancel an appointment","tags":["Appointments"],"description":"Cancels an appointment and sends cancellation notifications to the guest.\n\n**Required permission:** `assigned_appointment_write` or `unassigned_appointment_write`","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"id","in":"path","description":"The unique ID of the appointment","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"appointment canceled","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"21","type":"appointment","attributes":{"id":21,"title":null,"guest_name":"John Doe","guest_email":"jdoe@example.com","guest_phone":"555-555-5555","starts_at":"2026-06-16T13:55:58.257-07:00","ends_at":"2026-06-16T14:55:58.257-07:00","length_in_minutes":60,"brand_id":674,"brand_name":"Wolff, Rodriguez and Dickens 96","additional_guests":null,"additional_guest_list":[],"location":"Phone","location_details":null,"private_notes":null,"canceled":true,"zoom_meeting_id":null,"zoom_meeting_invitation":null,"zoom_join_url":null,"google_meet_link":null,"google_meet_conference_id":null,"google_meet_invitation":null,"user_appointment_calendar_id":null,"event_time":null,"event_length":null,"venue_name":null,"venue_address":null,"venue_city":null,"venue_state":null,"venue_zip":null,"event_date":null,"event_date_iso8601":null,"available_locations":["In Person","Phone"],"formatted_date":"Tuesday, June 16, 2026","formatted_datetime_range":"Tuesday, June 16, 2026 • 1:55 PM - 2:55 PM","formatted_time_range":"1:55 PM - 2:55 PM","staff_member_abbreviations":"QC","custom_questions":{}},"relationships":{"user_appointments":{"data":[{"id":"21","type":"user_appointment"}]}}}}}}}}}},"/api/v1/appointments/{id}/uncancel":{"put":{"summary":"Uncancel an appointment","tags":["Appointments"],"description":"Restores a previously canceled appointment.\n\n**Required permission:** `assigned_appointment_write` or `unassigned_appointment_write`","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"id","in":"path","description":"The unique ID of the appointment","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"appointment uncanceled","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"22","type":"appointment","attributes":{"id":22,"title":null,"guest_name":"John Doe","guest_email":"jdoe@example.com","guest_phone":"555-555-5555","starts_at":"2026-06-16T13:55:58.377-07:00","ends_at":"2026-06-16T14:55:58.377-07:00","length_in_minutes":60,"brand_id":675,"brand_name":"Beer-Mayer 97","additional_guests":null,"additional_guest_list":[],"location":"Phone","location_details":null,"private_notes":null,"canceled":false,"zoom_meeting_id":null,"zoom_meeting_invitation":null,"zoom_join_url":null,"google_meet_link":null,"google_meet_conference_id":null,"google_meet_invitation":null,"user_appointment_calendar_id":null,"event_time":null,"event_length":null,"venue_name":null,"venue_address":null,"venue_city":null,"venue_state":null,"venue_zip":null,"event_date":null,"event_date_iso8601":null,"available_locations":["In Person","Phone"],"formatted_date":"Tuesday, June 16, 2026","formatted_datetime_range":"Tuesday, June 16, 2026 • 1:55 PM - 2:55 PM","formatted_time_range":"1:55 PM - 2:55 PM","staff_member_abbreviations":"RM","custom_questions":{}},"relationships":{"user_appointments":{"data":[{"id":"22","type":"user_appointment"}]}}}}}}}}}},"/api/v1/appointments/{id}/duplicate":{"post":{"summary":"Duplicate an appointment","tags":["Appointments"],"description":"Creates a copy of an existing appointment with a new date and time. The guest details and other settings are carried over from the original.\n\n**Required permission:** `unassigned_appointment_write`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"id","in":"path","description":"The unique ID of the appointment to duplicate","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"appointment duplicated","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"24","type":"appointment","attributes":{"id":24,"title":"John Doe’s Phone Appointment","guest_name":"John Doe","guest_email":"jdoe@example.com","guest_phone":"555-555-5555","starts_at":"2026-06-23T15:00:00.000-07:00","ends_at":"2026-06-23T16:00:00.000-07:00","length_in_minutes":60,"brand_id":676,"brand_name":"Witting LLC 98","additional_guests":null,"additional_guest_list":[],"location":"Phone","location_details":null,"private_notes":null,"canceled":false,"zoom_meeting_id":null,"zoom_meeting_invitation":null,"zoom_join_url":null,"google_meet_link":null,"google_meet_conference_id":null,"google_meet_invitation":null,"user_appointment_calendar_id":null,"event_time":null,"event_length":null,"venue_name":null,"venue_address":null,"venue_city":null,"venue_state":null,"venue_zip":null,"event_date":null,"event_date_iso8601":null,"available_locations":["In Person","Phone"],"formatted_date":"Tuesday, June 23, 2026","formatted_datetime_range":"Tuesday, June 23, 2026 • 3:00 PM - 4:00 PM","formatted_time_range":"3:00 PM - 4:00 PM","staff_member_abbreviations":"CW","custom_questions":{}},"relationships":{"user_appointments":{"data":[{"id":"24","type":"user_appointment"}]}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"starts_at_date":{"type":"string","description":"Date for the new appointment (YYYY-MM-DD)"},"starts_at_time":{"type":"string","description":"Start time for the new appointment (e.g., \"2:00 PM\")"}},"required":["starts_at_date","starts_at_time"]}}}}}},"/api/v1/availability":{"get":{"summary":"Check availability for a date","tags":["Availability"],"description":"Checks whether the business has availability on a given date or date range for a specific package. Returns inventory information indicating whether the date is available, partially available, or fully booked.\n\nProvide either a single `event_date` or a range via `starts_at` and `ends_at`.\n\n**Required permission:** `availability_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"event_date","in":"query","description":"Date to check (YYYY-MM-DD)","required":false,"schema":{"type":"string"}},{"name":"starts_at","in":"query","description":"Start of date range (YYYY-MM-DD)","required":false,"schema":{"type":"string"}},{"name":"ends_at","in":"query","description":"End of date range (YYYY-MM-DD)","required":false,"schema":{"type":"string"}},{"name":"package_id","in":"query","description":"Package (event type) ID to check availability for","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"availability result","content":{"application/json":{"example":{"data":{"id":"357881ea-f3be-485c-9828-74c3fc8dc371","type":"availability_result","attributes":{"id":"357881ea-f3be-485c-9828-74c3fc8dc371","available":true,"event_type_id":24,"starts_at":"2026-07-09T00:00:00.000-07:00","ends_at":"2026-07-09T23:59:59.999-07:00"},"relationships":{"event_type":{"data":{"id":"24","type":"event_type"}}}}}}}}}}},"/api/v1/availability/detailed":{"get":{"summary":"Check detailed availability","tags":["Availability"],"description":"Returns detailed availability information for a specific date, time, and resource combination. Use this to check whether a particular staff member, add-on, or backdrop is available for a given time slot.\n\nThis endpoint supports multiple lookup types and can check availability for packages, add-ons, backdrops, and specific staff members simultaneously.\n\n**Required permission:** `availability_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"starts_at_date","in":"query","description":"Date to check (YYYY-MM-DD)","required":false,"schema":{"type":"string"}},{"name":"starts_at_time","in":"query","description":"Start time to check","required":false,"schema":{"type":"string"}},{"name":"ends_at_time","in":"query","description":"End time to check","required":false,"schema":{"type":"string"}},{"name":"starts_at","in":"query","description":"Start datetime (ISO 8601)","required":false,"schema":{"type":"string"}},{"name":"ends_at","in":"query","description":"End datetime (ISO 8601)","required":false,"schema":{"type":"string"}},{"name":"package_id","in":"query","description":"Package (event type) ID","required":false,"schema":{"type":"integer"}},{"name":"add_on_id","in":"query","description":"Add-on ID to check availability for","required":false,"schema":{"type":"integer"}},{"name":"backdrop_id","in":"query","description":"Backdrop ID to check availability for","required":false,"schema":{"type":"integer"}},{"name":"staff_id","in":"query","description":"Staff member ID to check availability for","required":false,"schema":{"type":"integer"}},{"name":"lookup_type","in":"query","description":"Type of availability lookup","required":false,"schema":{"type":"string"}},{"name":"quantity","in":"query","description":"Quantity to check availability for","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"detailed availability result","content":{"application/json":{"example":{"available":true,"messages":[],"overlapping_bookings":[]}}}}}}},"/api/v1/available_slots":{"get":{"summary":"Fetch available time slots for a date","tags":["Availability"],"description":"Returns the available time slots for a specific date and package. Each slot includes the start time, availability status, and formatted display name.\n\nThis is useful for building booking interfaces where customers select a time slot.\n\n**Required permission:** `availability_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"event_date","in":"query","description":"Date to check (YYYY-MM-DD)","required":true,"schema":{"type":"string"}},{"name":"package_id","in":"query","description":"Package (event type) ID","required":true,"schema":{"type":"integer"}},{"name":"length_in_minutes","in":"query","description":"Event duration in minutes (overrides package default)","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"available slots found","content":{"application/json":{"example":{"data":[{"id":"d11dcbdd-ca39-4f08-9129-b74f7f8d9b01","type":"availability_slot","attributes":{"id":"d11dcbdd-ca39-4f08-9129-b74f7f8d9b01","available":true,"starts_at":"2026-07-09T00:00:00.000-07:00","formatted_slot_name":"12:00 AM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"12:00 AM"}},{"id":"c36d8fd3-bb05-43fe-99ea-5e27b5319884","type":"availability_slot","attributes":{"id":"c36d8fd3-bb05-43fe-99ea-5e27b5319884","available":true,"starts_at":"2026-07-09T00:30:00.000-07:00","formatted_slot_name":"12:30 AM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"12:30 AM"}},{"id":"2fffc4c7-974a-4fd0-8fe5-0418cf0bfaa9","type":"availability_slot","attributes":{"id":"2fffc4c7-974a-4fd0-8fe5-0418cf0bfaa9","available":true,"starts_at":"2026-07-09T01:00:00.000-07:00","formatted_slot_name":"1:00 AM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"1:00 AM"}},{"id":"94adfe66-7c3b-4f96-bb37-e1b4e70a38b6","type":"availability_slot","attributes":{"id":"94adfe66-7c3b-4f96-bb37-e1b4e70a38b6","available":true,"starts_at":"2026-07-09T01:30:00.000-07:00","formatted_slot_name":"1:30 AM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"1:30 AM"}},{"id":"57a578ac-5875-452a-a6b2-6a9234a46bd8","type":"availability_slot","attributes":{"id":"57a578ac-5875-452a-a6b2-6a9234a46bd8","available":true,"starts_at":"2026-07-09T02:00:00.000-07:00","formatted_slot_name":"2:00 AM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"2:00 AM"}},{"id":"9f62d3d9-5597-4f4a-a7c0-17d33c2307df","type":"availability_slot","attributes":{"id":"9f62d3d9-5597-4f4a-a7c0-17d33c2307df","available":true,"starts_at":"2026-07-09T02:30:00.000-07:00","formatted_slot_name":"2:30 AM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"2:30 AM"}},{"id":"7dd22941-f7f5-4d74-9ae9-1f1115751f6c","type":"availability_slot","attributes":{"id":"7dd22941-f7f5-4d74-9ae9-1f1115751f6c","available":true,"starts_at":"2026-07-09T03:00:00.000-07:00","formatted_slot_name":"3:00 AM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"3:00 AM"}},{"id":"28a70cd3-7cbd-4e73-b160-d19f6d8d1fb6","type":"availability_slot","attributes":{"id":"28a70cd3-7cbd-4e73-b160-d19f6d8d1fb6","available":true,"starts_at":"2026-07-09T03:30:00.000-07:00","formatted_slot_name":"3:30 AM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"3:30 AM"}},{"id":"ba483edb-065b-44b9-8e43-cff6c161f4b4","type":"availability_slot","attributes":{"id":"ba483edb-065b-44b9-8e43-cff6c161f4b4","available":true,"starts_at":"2026-07-09T04:00:00.000-07:00","formatted_slot_name":"4:00 AM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"4:00 AM"}},{"id":"bf43cd20-907a-4615-8b31-66335580dc2f","type":"availability_slot","attributes":{"id":"bf43cd20-907a-4615-8b31-66335580dc2f","available":true,"starts_at":"2026-07-09T04:30:00.000-07:00","formatted_slot_name":"4:30 AM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"4:30 AM"}},{"id":"7ab6ebd8-efdd-4c72-b796-1b7ef47c04af","type":"availability_slot","attributes":{"id":"7ab6ebd8-efdd-4c72-b796-1b7ef47c04af","available":true,"starts_at":"2026-07-09T05:00:00.000-07:00","formatted_slot_name":"5:00 AM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"5:00 AM"}},{"id":"439e5e3c-c935-4c08-9b1f-e0f6eb900563","type":"availability_slot","attributes":{"id":"439e5e3c-c935-4c08-9b1f-e0f6eb900563","available":true,"starts_at":"2026-07-09T05:30:00.000-07:00","formatted_slot_name":"5:30 AM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"5:30 AM"}},{"id":"18666104-136a-44cc-9cc1-82de4f650874","type":"availability_slot","attributes":{"id":"18666104-136a-44cc-9cc1-82de4f650874","available":true,"starts_at":"2026-07-09T06:00:00.000-07:00","formatted_slot_name":"6:00 AM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"6:00 AM"}},{"id":"92078dc4-1c2c-430d-a9b5-bcd706deac25","type":"availability_slot","attributes":{"id":"92078dc4-1c2c-430d-a9b5-bcd706deac25","available":true,"starts_at":"2026-07-09T06:30:00.000-07:00","formatted_slot_name":"6:30 AM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"6:30 AM"}},{"id":"14bf268d-2c5f-4d6e-9b3b-8fc0ae2f0478","type":"availability_slot","attributes":{"id":"14bf268d-2c5f-4d6e-9b3b-8fc0ae2f0478","available":true,"starts_at":"2026-07-09T07:00:00.000-07:00","formatted_slot_name":"7:00 AM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"7:00 AM"}},{"id":"ff6c8c98-f198-40bd-94f3-7a58b5a46f69","type":"availability_slot","attributes":{"id":"ff6c8c98-f198-40bd-94f3-7a58b5a46f69","available":true,"starts_at":"2026-07-09T07:30:00.000-07:00","formatted_slot_name":"7:30 AM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"7:30 AM"}},{"id":"122420b4-9e7e-4fea-a799-b5fe1d082ada","type":"availability_slot","attributes":{"id":"122420b4-9e7e-4fea-a799-b5fe1d082ada","available":true,"starts_at":"2026-07-09T08:00:00.000-07:00","formatted_slot_name":"8:00 AM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"8:00 AM"}},{"id":"1d616b53-1d34-4b45-a4d3-836d3ba091fa","type":"availability_slot","attributes":{"id":"1d616b53-1d34-4b45-a4d3-836d3ba091fa","available":true,"starts_at":"2026-07-09T08:30:00.000-07:00","formatted_slot_name":"8:30 AM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"8:30 AM"}},{"id":"d157bc25-491e-44dc-a4a2-351f1cf5c4f4","type":"availability_slot","attributes":{"id":"d157bc25-491e-44dc-a4a2-351f1cf5c4f4","available":true,"starts_at":"2026-07-09T09:00:00.000-07:00","formatted_slot_name":"9:00 AM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"9:00 AM"}},{"id":"51330fe8-1f12-431e-95bb-40454b4b6437","type":"availability_slot","attributes":{"id":"51330fe8-1f12-431e-95bb-40454b4b6437","available":true,"starts_at":"2026-07-09T09:30:00.000-07:00","formatted_slot_name":"9:30 AM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"9:30 AM"}},{"id":"555cf25b-9593-4dac-aa93-fee30879cbb5","type":"availability_slot","attributes":{"id":"555cf25b-9593-4dac-aa93-fee30879cbb5","available":true,"starts_at":"2026-07-09T10:00:00.000-07:00","formatted_slot_name":"10:00 AM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"10:00 AM"}},{"id":"efe7e811-83ad-4ca2-adde-777566dde8ba","type":"availability_slot","attributes":{"id":"efe7e811-83ad-4ca2-adde-777566dde8ba","available":true,"starts_at":"2026-07-09T10:30:00.000-07:00","formatted_slot_name":"10:30 AM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"10:30 AM"}},{"id":"25b3e26b-b6c7-4153-8673-f18819ceb405","type":"availability_slot","attributes":{"id":"25b3e26b-b6c7-4153-8673-f18819ceb405","available":true,"starts_at":"2026-07-09T11:00:00.000-07:00","formatted_slot_name":"11:00 AM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"11:00 AM"}},{"id":"3c961f3b-38cd-42df-8c36-6d81c330fd4a","type":"availability_slot","attributes":{"id":"3c961f3b-38cd-42df-8c36-6d81c330fd4a","available":true,"starts_at":"2026-07-09T11:30:00.000-07:00","formatted_slot_name":"11:30 AM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"11:30 AM"}},{"id":"01128768-3ef3-425c-9ac4-8ab02a0ec6bc","type":"availability_slot","attributes":{"id":"01128768-3ef3-425c-9ac4-8ab02a0ec6bc","available":true,"starts_at":"2026-07-09T12:00:00.000-07:00","formatted_slot_name":"12:00 PM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"12:00 PM"}},{"id":"50225e0c-c595-4a74-869c-15d126824d69","type":"availability_slot","attributes":{"id":"50225e0c-c595-4a74-869c-15d126824d69","available":true,"starts_at":"2026-07-09T12:30:00.000-07:00","formatted_slot_name":"12:30 PM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"12:30 PM"}},{"id":"5bad3d25-fe22-454b-af7a-03569fceea76","type":"availability_slot","attributes":{"id":"5bad3d25-fe22-454b-af7a-03569fceea76","available":true,"starts_at":"2026-07-09T13:00:00.000-07:00","formatted_slot_name":"1:00 PM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"1:00 PM"}},{"id":"a340dffb-221a-4b6c-abed-431983064edf","type":"availability_slot","attributes":{"id":"a340dffb-221a-4b6c-abed-431983064edf","available":true,"starts_at":"2026-07-09T13:30:00.000-07:00","formatted_slot_name":"1:30 PM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"1:30 PM"}},{"id":"e71a54de-5e42-4f04-8537-4a363fa830f7","type":"availability_slot","attributes":{"id":"e71a54de-5e42-4f04-8537-4a363fa830f7","available":true,"starts_at":"2026-07-09T14:00:00.000-07:00","formatted_slot_name":"2:00 PM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"2:00 PM"}},{"id":"204ab635-3557-48df-8010-b26d868c84c8","type":"availability_slot","attributes":{"id":"204ab635-3557-48df-8010-b26d868c84c8","available":true,"starts_at":"2026-07-09T14:30:00.000-07:00","formatted_slot_name":"2:30 PM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"2:30 PM"}},{"id":"79da03cf-6119-40e8-b6c1-08055cf32f38","type":"availability_slot","attributes":{"id":"79da03cf-6119-40e8-b6c1-08055cf32f38","available":true,"starts_at":"2026-07-09T15:00:00.000-07:00","formatted_slot_name":"3:00 PM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"3:00 PM"}},{"id":"84830c01-043c-4650-9628-2b2be9b6a0b0","type":"availability_slot","attributes":{"id":"84830c01-043c-4650-9628-2b2be9b6a0b0","available":true,"starts_at":"2026-07-09T15:30:00.000-07:00","formatted_slot_name":"3:30 PM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"3:30 PM"}},{"id":"2be9b9b8-e0d8-455c-9333-f5575ac73d3c","type":"availability_slot","attributes":{"id":"2be9b9b8-e0d8-455c-9333-f5575ac73d3c","available":true,"starts_at":"2026-07-09T16:00:00.000-07:00","formatted_slot_name":"4:00 PM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"4:00 PM"}},{"id":"db522169-4d4e-4d70-964d-c9bab2bfa5bd","type":"availability_slot","attributes":{"id":"db522169-4d4e-4d70-964d-c9bab2bfa5bd","available":true,"starts_at":"2026-07-09T16:30:00.000-07:00","formatted_slot_name":"4:30 PM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"4:30 PM"}},{"id":"83c3e99d-e150-4410-837a-92b7ed441f7c","type":"availability_slot","attributes":{"id":"83c3e99d-e150-4410-837a-92b7ed441f7c","available":true,"starts_at":"2026-07-09T17:00:00.000-07:00","formatted_slot_name":"5:00 PM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"5:00 PM"}},{"id":"74436cdd-6f60-4117-8349-3bb56002cc4c","type":"availability_slot","attributes":{"id":"74436cdd-6f60-4117-8349-3bb56002cc4c","available":true,"starts_at":"2026-07-09T17:30:00.000-07:00","formatted_slot_name":"5:30 PM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"5:30 PM"}},{"id":"ee7cab81-bc24-4623-91e2-d092c6e4e18b","type":"availability_slot","attributes":{"id":"ee7cab81-bc24-4623-91e2-d092c6e4e18b","available":true,"starts_at":"2026-07-09T18:00:00.000-07:00","formatted_slot_name":"6:00 PM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"6:00 PM"}},{"id":"252767ef-f3d7-4121-9eef-9b289e9bd9aa","type":"availability_slot","attributes":{"id":"252767ef-f3d7-4121-9eef-9b289e9bd9aa","available":true,"starts_at":"2026-07-09T18:30:00.000-07:00","formatted_slot_name":"6:30 PM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"6:30 PM"}},{"id":"6009cae7-aece-4e7b-9188-9ae8c95024b6","type":"availability_slot","attributes":{"id":"6009cae7-aece-4e7b-9188-9ae8c95024b6","available":true,"starts_at":"2026-07-09T19:00:00.000-07:00","formatted_slot_name":"7:00 PM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"7:00 PM"}},{"id":"7b367900-6b4f-442c-a61a-36b0b52b54a4","type":"availability_slot","attributes":{"id":"7b367900-6b4f-442c-a61a-36b0b52b54a4","available":true,"starts_at":"2026-07-09T19:30:00.000-07:00","formatted_slot_name":"7:30 PM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"7:30 PM"}},{"id":"5a66bbeb-45b5-4185-9dc1-d2cce8f02f1a","type":"availability_slot","attributes":{"id":"5a66bbeb-45b5-4185-9dc1-d2cce8f02f1a","available":true,"starts_at":"2026-07-09T20:00:00.000-07:00","formatted_slot_name":"8:00 PM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"8:00 PM"}},{"id":"514133d6-0f2f-4249-8ad4-6c977cf466b0","type":"availability_slot","attributes":{"id":"514133d6-0f2f-4249-8ad4-6c977cf466b0","available":true,"starts_at":"2026-07-09T20:30:00.000-07:00","formatted_slot_name":"8:30 PM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"8:30 PM"}},{"id":"2d619140-bb17-4f76-abf3-a867ba36b015","type":"availability_slot","attributes":{"id":"2d619140-bb17-4f76-abf3-a867ba36b015","available":true,"starts_at":"2026-07-09T21:00:00.000-07:00","formatted_slot_name":"9:00 PM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"9:00 PM"}},{"id":"98629cb5-99f9-4a26-8e26-97e95c58ebd2","type":"availability_slot","attributes":{"id":"98629cb5-99f9-4a26-8e26-97e95c58ebd2","available":true,"starts_at":"2026-07-09T21:30:00.000-07:00","formatted_slot_name":"9:30 PM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"9:30 PM"}},{"id":"69439539-dac6-4994-9e95-99922d28f528","type":"availability_slot","attributes":{"id":"69439539-dac6-4994-9e95-99922d28f528","available":true,"starts_at":"2026-07-09T22:00:00.000-07:00","formatted_slot_name":"10:00 PM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"10:00 PM"}},{"id":"c19aa0d7-546e-47d1-92bf-d62fa1086059","type":"availability_slot","attributes":{"id":"c19aa0d7-546e-47d1-92bf-d62fa1086059","available":true,"starts_at":"2026-07-09T22:30:00.000-07:00","formatted_slot_name":"10:30 PM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"10:30 PM"}},{"id":"0c8cb57f-df86-472e-8c3d-177bc95e1cae","type":"availability_slot","attributes":{"id":"0c8cb57f-df86-472e-8c3d-177bc95e1cae","available":true,"starts_at":"2026-07-09T23:00:00.000-07:00","formatted_slot_name":"11:00 PM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"11:00 PM"}},{"id":"824a4b16-cf7c-4cd3-84cc-a87c77f40220","type":"availability_slot","attributes":{"id":"824a4b16-cf7c-4cd3-84cc-a87c77f40220","available":true,"starts_at":"2026-07-09T23:30:00.000-07:00","formatted_slot_name":"11:30 PM","length_in_minutes":60,"localized_date":"07-09-2026","localized_time":"11:30 PM"}}]}}}}}}},"/api/v1/available_appointment_slots":{"get":{"summary":"Fetch available appointment slots","tags":["Availability"],"description":"Returns available appointment time slots for a specific staff member's appointment calendar on a given date. Each slot shows whether it is available or already booked.\n\nRequires a `user_id` and `user_appointment_calendar_id` to identify which staff member's calendar to check.\n\n**Required permission:** `user_appointment_calendar_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"user_id","in":"query","description":"Staff member user ID","required":true,"schema":{"type":"integer"}},{"name":"user_appointment_calendar_id","in":"query","description":"Appointment calendar ID for the staff member","required":true,"schema":{"type":"integer"}},{"name":"selected_date","in":"query","description":"Date to check (YYYY-MM-DD)","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"available appointment slots found","content":{"application/json":{"example":{"data":[{"id":"7bac8b28-1b63-4c66-b372-b817f7157ad4","type":"availability_slot","attributes":{"id":"7bac8b28-1b63-4c66-b372-b817f7157ad4","available":true,"starts_at":"2026-07-09T00:00:00.000-07:00","formatted_slot_name":"12:00 AM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"12:00 AM"}},{"id":"8519129f-78be-4e67-9711-790dd9c2d062","type":"availability_slot","attributes":{"id":"8519129f-78be-4e67-9711-790dd9c2d062","available":true,"starts_at":"2026-07-09T00:30:00.000-07:00","formatted_slot_name":"12:30 AM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"12:30 AM"}},{"id":"9595ae73-c41a-4cf5-b8bb-aad749923552","type":"availability_slot","attributes":{"id":"9595ae73-c41a-4cf5-b8bb-aad749923552","available":true,"starts_at":"2026-07-09T01:00:00.000-07:00","formatted_slot_name":"1:00 AM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"1:00 AM"}},{"id":"47658b29-839d-4b79-ab94-9f1ca6d2e83b","type":"availability_slot","attributes":{"id":"47658b29-839d-4b79-ab94-9f1ca6d2e83b","available":true,"starts_at":"2026-07-09T01:30:00.000-07:00","formatted_slot_name":"1:30 AM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"1:30 AM"}},{"id":"4551fab2-f7c2-4748-8e3c-33545421c8d9","type":"availability_slot","attributes":{"id":"4551fab2-f7c2-4748-8e3c-33545421c8d9","available":true,"starts_at":"2026-07-09T02:00:00.000-07:00","formatted_slot_name":"2:00 AM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"2:00 AM"}},{"id":"96f92399-213a-4975-8b33-ddb64ce5f95a","type":"availability_slot","attributes":{"id":"96f92399-213a-4975-8b33-ddb64ce5f95a","available":true,"starts_at":"2026-07-09T02:30:00.000-07:00","formatted_slot_name":"2:30 AM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"2:30 AM"}},{"id":"89087570-f4c9-4712-90f1-2c9e64e462f0","type":"availability_slot","attributes":{"id":"89087570-f4c9-4712-90f1-2c9e64e462f0","available":true,"starts_at":"2026-07-09T03:00:00.000-07:00","formatted_slot_name":"3:00 AM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"3:00 AM"}},{"id":"61ec71ac-c81b-4eef-afc6-bd2612844c27","type":"availability_slot","attributes":{"id":"61ec71ac-c81b-4eef-afc6-bd2612844c27","available":true,"starts_at":"2026-07-09T03:30:00.000-07:00","formatted_slot_name":"3:30 AM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"3:30 AM"}},{"id":"46790fdc-f68e-44f0-80e6-36268d4ddfaf","type":"availability_slot","attributes":{"id":"46790fdc-f68e-44f0-80e6-36268d4ddfaf","available":true,"starts_at":"2026-07-09T04:00:00.000-07:00","formatted_slot_name":"4:00 AM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"4:00 AM"}},{"id":"8eb8d7c4-d7ae-4f85-9a01-7cd07fd84abd","type":"availability_slot","attributes":{"id":"8eb8d7c4-d7ae-4f85-9a01-7cd07fd84abd","available":true,"starts_at":"2026-07-09T04:30:00.000-07:00","formatted_slot_name":"4:30 AM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"4:30 AM"}},{"id":"e44c3aa9-da4c-44f6-a25a-9153df99dfcb","type":"availability_slot","attributes":{"id":"e44c3aa9-da4c-44f6-a25a-9153df99dfcb","available":true,"starts_at":"2026-07-09T05:00:00.000-07:00","formatted_slot_name":"5:00 AM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"5:00 AM"}},{"id":"6394ac43-f6bc-4803-8484-d6e5736cd8d2","type":"availability_slot","attributes":{"id":"6394ac43-f6bc-4803-8484-d6e5736cd8d2","available":true,"starts_at":"2026-07-09T05:30:00.000-07:00","formatted_slot_name":"5:30 AM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"5:30 AM"}},{"id":"df18f258-8d63-46e8-a5b2-67ccf31f5772","type":"availability_slot","attributes":{"id":"df18f258-8d63-46e8-a5b2-67ccf31f5772","available":true,"starts_at":"2026-07-09T06:00:00.000-07:00","formatted_slot_name":"6:00 AM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"6:00 AM"}},{"id":"7f5fccef-cfc3-4896-aeda-f4edbd43cbcf","type":"availability_slot","attributes":{"id":"7f5fccef-cfc3-4896-aeda-f4edbd43cbcf","available":true,"starts_at":"2026-07-09T06:30:00.000-07:00","formatted_slot_name":"6:30 AM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"6:30 AM"}},{"id":"b948e843-3288-4829-8a24-913a76b93854","type":"availability_slot","attributes":{"id":"b948e843-3288-4829-8a24-913a76b93854","available":true,"starts_at":"2026-07-09T07:00:00.000-07:00","formatted_slot_name":"7:00 AM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"7:00 AM"}},{"id":"cef050c8-1985-42fa-8bc6-2090636da356","type":"availability_slot","attributes":{"id":"cef050c8-1985-42fa-8bc6-2090636da356","available":true,"starts_at":"2026-07-09T07:30:00.000-07:00","formatted_slot_name":"7:30 AM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"7:30 AM"}},{"id":"1dcc4bcd-0e47-4c2a-aea1-ea98cecc1049","type":"availability_slot","attributes":{"id":"1dcc4bcd-0e47-4c2a-aea1-ea98cecc1049","available":true,"starts_at":"2026-07-09T08:00:00.000-07:00","formatted_slot_name":"8:00 AM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"8:00 AM"}},{"id":"68df5f02-c2bb-426a-aecc-e2fd90716abd","type":"availability_slot","attributes":{"id":"68df5f02-c2bb-426a-aecc-e2fd90716abd","available":true,"starts_at":"2026-07-09T08:30:00.000-07:00","formatted_slot_name":"8:30 AM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"8:30 AM"}},{"id":"230c430d-37c3-4775-8ce9-2cb091e29b82","type":"availability_slot","attributes":{"id":"230c430d-37c3-4775-8ce9-2cb091e29b82","available":true,"starts_at":"2026-07-09T09:00:00.000-07:00","formatted_slot_name":"9:00 AM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"9:00 AM"}},{"id":"b21d9a57-5b2d-42fc-9b5b-9c6715172145","type":"availability_slot","attributes":{"id":"b21d9a57-5b2d-42fc-9b5b-9c6715172145","available":true,"starts_at":"2026-07-09T09:30:00.000-07:00","formatted_slot_name":"9:30 AM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"9:30 AM"}},{"id":"3b71f1a1-3baf-4382-970c-a7b0230c7ff0","type":"availability_slot","attributes":{"id":"3b71f1a1-3baf-4382-970c-a7b0230c7ff0","available":true,"starts_at":"2026-07-09T10:00:00.000-07:00","formatted_slot_name":"10:00 AM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"10:00 AM"}},{"id":"51b587e7-5877-4a69-8ccf-cd91977ad151","type":"availability_slot","attributes":{"id":"51b587e7-5877-4a69-8ccf-cd91977ad151","available":true,"starts_at":"2026-07-09T10:30:00.000-07:00","formatted_slot_name":"10:30 AM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"10:30 AM"}},{"id":"a6ba0a07-796a-4c23-8731-e0993f3252bb","type":"availability_slot","attributes":{"id":"a6ba0a07-796a-4c23-8731-e0993f3252bb","available":true,"starts_at":"2026-07-09T11:00:00.000-07:00","formatted_slot_name":"11:00 AM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"11:00 AM"}},{"id":"57f74797-58b0-4038-a504-623c679ed2d4","type":"availability_slot","attributes":{"id":"57f74797-58b0-4038-a504-623c679ed2d4","available":true,"starts_at":"2026-07-09T11:30:00.000-07:00","formatted_slot_name":"11:30 AM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"11:30 AM"}},{"id":"8c1edb4a-de86-45d8-a832-ef577b2b56a7","type":"availability_slot","attributes":{"id":"8c1edb4a-de86-45d8-a832-ef577b2b56a7","available":true,"starts_at":"2026-07-09T12:00:00.000-07:00","formatted_slot_name":"12:00 PM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"12:00 PM"}},{"id":"5d748309-6022-42cd-bdb9-4d7cfe52ba59","type":"availability_slot","attributes":{"id":"5d748309-6022-42cd-bdb9-4d7cfe52ba59","available":true,"starts_at":"2026-07-09T12:30:00.000-07:00","formatted_slot_name":"12:30 PM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"12:30 PM"}},{"id":"790fc2a0-6ffb-4af1-bb54-51946dc176b6","type":"availability_slot","attributes":{"id":"790fc2a0-6ffb-4af1-bb54-51946dc176b6","available":true,"starts_at":"2026-07-09T13:00:00.000-07:00","formatted_slot_name":"1:00 PM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"1:00 PM"}},{"id":"ac79df1a-029e-4464-94ab-63f61cfda9ee","type":"availability_slot","attributes":{"id":"ac79df1a-029e-4464-94ab-63f61cfda9ee","available":true,"starts_at":"2026-07-09T13:30:00.000-07:00","formatted_slot_name":"1:30 PM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"1:30 PM"}},{"id":"3fb1f945-d38d-4d80-9606-6f66d280c0eb","type":"availability_slot","attributes":{"id":"3fb1f945-d38d-4d80-9606-6f66d280c0eb","available":true,"starts_at":"2026-07-09T14:00:00.000-07:00","formatted_slot_name":"2:00 PM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"2:00 PM"}},{"id":"9638d66a-fb7d-4fa8-8544-96db1e636baf","type":"availability_slot","attributes":{"id":"9638d66a-fb7d-4fa8-8544-96db1e636baf","available":true,"starts_at":"2026-07-09T14:30:00.000-07:00","formatted_slot_name":"2:30 PM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"2:30 PM"}},{"id":"1c0108e6-2f38-4fd4-b38f-3a429720fa49","type":"availability_slot","attributes":{"id":"1c0108e6-2f38-4fd4-b38f-3a429720fa49","available":true,"starts_at":"2026-07-09T15:00:00.000-07:00","formatted_slot_name":"3:00 PM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"3:00 PM"}},{"id":"bbb23c4b-a931-45e0-a821-37d26c7d0ee7","type":"availability_slot","attributes":{"id":"bbb23c4b-a931-45e0-a821-37d26c7d0ee7","available":true,"starts_at":"2026-07-09T15:30:00.000-07:00","formatted_slot_name":"3:30 PM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"3:30 PM"}},{"id":"d646a864-2efd-469b-b3d2-76d7c4e24a1c","type":"availability_slot","attributes":{"id":"d646a864-2efd-469b-b3d2-76d7c4e24a1c","available":true,"starts_at":"2026-07-09T16:00:00.000-07:00","formatted_slot_name":"4:00 PM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"4:00 PM"}},{"id":"13373452-7a61-4ed9-9eaf-d0a4daf5a300","type":"availability_slot","attributes":{"id":"13373452-7a61-4ed9-9eaf-d0a4daf5a300","available":true,"starts_at":"2026-07-09T16:30:00.000-07:00","formatted_slot_name":"4:30 PM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"4:30 PM"}},{"id":"5d46c588-0372-4b3a-9083-371e2cd34fea","type":"availability_slot","attributes":{"id":"5d46c588-0372-4b3a-9083-371e2cd34fea","available":true,"starts_at":"2026-07-09T17:00:00.000-07:00","formatted_slot_name":"5:00 PM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"5:00 PM"}},{"id":"dbde2319-7267-45e9-8ad8-93c841fa504f","type":"availability_slot","attributes":{"id":"dbde2319-7267-45e9-8ad8-93c841fa504f","available":true,"starts_at":"2026-07-09T17:30:00.000-07:00","formatted_slot_name":"5:30 PM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"5:30 PM"}},{"id":"8daa06de-f2cc-441d-ba45-98f56a3456eb","type":"availability_slot","attributes":{"id":"8daa06de-f2cc-441d-ba45-98f56a3456eb","available":true,"starts_at":"2026-07-09T18:00:00.000-07:00","formatted_slot_name":"6:00 PM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"6:00 PM"}},{"id":"e7700510-1482-497a-bdc9-22e6fb343dae","type":"availability_slot","attributes":{"id":"e7700510-1482-497a-bdc9-22e6fb343dae","available":true,"starts_at":"2026-07-09T18:30:00.000-07:00","formatted_slot_name":"6:30 PM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"6:30 PM"}},{"id":"f6750b4a-f3d6-4ff9-938c-e0ea83b9807b","type":"availability_slot","attributes":{"id":"f6750b4a-f3d6-4ff9-938c-e0ea83b9807b","available":true,"starts_at":"2026-07-09T19:00:00.000-07:00","formatted_slot_name":"7:00 PM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"7:00 PM"}},{"id":"3db855b0-f507-4f57-a702-07015134b254","type":"availability_slot","attributes":{"id":"3db855b0-f507-4f57-a702-07015134b254","available":true,"starts_at":"2026-07-09T19:30:00.000-07:00","formatted_slot_name":"7:30 PM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"7:30 PM"}},{"id":"e935b648-8906-4a44-82af-8733ecc78a6f","type":"availability_slot","attributes":{"id":"e935b648-8906-4a44-82af-8733ecc78a6f","available":true,"starts_at":"2026-07-09T20:00:00.000-07:00","formatted_slot_name":"8:00 PM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"8:00 PM"}},{"id":"a37cf83d-8e6d-4c93-b98d-c5bd8647efbf","type":"availability_slot","attributes":{"id":"a37cf83d-8e6d-4c93-b98d-c5bd8647efbf","available":true,"starts_at":"2026-07-09T20:30:00.000-07:00","formatted_slot_name":"8:30 PM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"8:30 PM"}},{"id":"fa1c3af7-6e42-4998-887a-d87639afa4b2","type":"availability_slot","attributes":{"id":"fa1c3af7-6e42-4998-887a-d87639afa4b2","available":true,"starts_at":"2026-07-09T21:00:00.000-07:00","formatted_slot_name":"9:00 PM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"9:00 PM"}},{"id":"2ac1b30b-3b56-4396-a3d8-06a509a26fc7","type":"availability_slot","attributes":{"id":"2ac1b30b-3b56-4396-a3d8-06a509a26fc7","available":true,"starts_at":"2026-07-09T21:30:00.000-07:00","formatted_slot_name":"9:30 PM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"9:30 PM"}},{"id":"b96e163d-9904-4ccf-b333-7c8adbaac3cb","type":"availability_slot","attributes":{"id":"b96e163d-9904-4ccf-b333-7c8adbaac3cb","available":true,"starts_at":"2026-07-09T22:00:00.000-07:00","formatted_slot_name":"10:00 PM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"10:00 PM"}},{"id":"7eb11bd5-c9b3-4493-b152-8719ccf4ac2c","type":"availability_slot","attributes":{"id":"7eb11bd5-c9b3-4493-b152-8719ccf4ac2c","available":true,"starts_at":"2026-07-09T22:30:00.000-07:00","formatted_slot_name":"10:30 PM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"10:30 PM"}},{"id":"6ec41eed-4089-4708-bf95-eee2d457d2de","type":"availability_slot","attributes":{"id":"6ec41eed-4089-4708-bf95-eee2d457d2de","available":true,"starts_at":"2026-07-09T23:00:00.000-07:00","formatted_slot_name":"11:00 PM","length_in_minutes":1800,"localized_date":"07-09-2026","localized_time":"11:00 PM"}}]}}}}}}},"/api/v1/backdrop_categories":{"get":{"summary":"Fetch all backdrop categories","tags":["Backdrops"],"description":"Returns all active backdrop categories for the business, ordered by position.\n\nBackdrop categories organize photo booth backdrops into groups (e.g., \"Sequin Walls\", \"Flower Walls\", \"Custom Prints\"). Each category contains one or more backdrops.\n\nUse the `include` query parameter to sideload related resources (comma-separated). Available: `photobooth_backgrounds`.\n\n**Required permission:** `offerings_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}}],"responses":{"200":{"description":"backdrop categories found","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":[{"id":"10","type":"backdrop_category","attributes":{"id":10,"name":"Sequin Walls","sub_header":null,"position":1,"sync_with_pb_backdrops":false,"recently_created":true},"relationships":{"photobooth_backgrounds":{"data":[]}}},{"id":"11","type":"backdrop_category","attributes":{"id":11,"name":"Flower Walls","sub_header":null,"position":2,"sync_with_pb_backdrops":false,"recently_created":true},"relationships":{"photobooth_backgrounds":{"data":[]}}}]}}}}}}},"/api/v1/backdrop_categories/{id}":{"get":{"summary":"Fetch a backdrop category by ID","tags":["Backdrops"],"description":"Returns the details of a single backdrop category, including its name, position, and whether it syncs with Photo Booth backdrops.\n\nUse the `include` query parameter to sideload related resources (comma-separated). Available: `photobooth_backgrounds`.\n\n**Required permission:** `offerings_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"id","in":"path","description":"The unique ID of the backdrop category","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"backdrop category found","content":{"application/json":{"example":{"data":{"id":"12","type":"backdrop_category","attributes":{"id":12,"name":"Sequin Walls","sub_header":null,"position":1,"sync_with_pb_backdrops":false,"recently_created":true},"relationships":{"photobooth_backgrounds":{"data":[]}}}}}}}}}},"/api/v1/brands/links":{"get":{"summary":"List public-facing links for every brand on the account","tags":["Brands"],"description":"Returns the canonical public URLs for each active brand on the franchise — the online booking flow, sign-in page, availability calendar, mini sessions index, add-on gallery, photo booth backdrop gallery, design template gallery, and team page. Use this when a customer asks \"what's the link to my X\" or when an agent needs to point a user at the right hosted page.\n\nA franchise can have multiple brands, each with its own custom domain. The response includes one entry per active brand with that brand's links resolved against its primary custom domain.\n\n**Required permission:** `offerings_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}}],"responses":{"200":{"description":"brand links returned","content":{"application/json":{"example":{"data":[{"id":"683","type":"brand_links","attributes":{"name":"Wehner-Blick 105","host":"test-105-9d272217.cc.localhost","primary":true,"links":{"online_booking":"https://test-105-9d272217.cc.localhost/reservation","sign_in":"https://test-105-9d272217.cc.localhost/users/sign_in","availability_calendar":"https://test-105-9d272217.cc.localhost/availability_calendar","mini_sessions":"https://test-105-9d272217.cc.localhost/mini_sessions","add_on_gallery":"https://test-105-9d272217.cc.localhost/add_ons","backdrop_gallery":"https://test-105-9d272217.cc.localhost/photobooth_backdrops","design_template_gallery":"https://test-105-9d272217.cc.localhost/design_templates","staff_profiles":"https://test-105-9d272217.cc.localhost/team","lead_forms":[{"id":5,"name":"Wedding Inquiry","default":false,"url":"https://test-105-9d272217.cc.localhost/contact/5"}],"appointment_schedulers":[{"id":50,"title":"30-minute consult","user_id":315,"user_full_name":"Stanford Swift","url":"https://test-105-9d272217.cc.localhost/schedule/315/50"}]}}}]}}}}}}},"/api/v1/checklist_categories":{"get":{"summary":"Fetch checklist categories","tags":["Checklists"],"description":"Returns the checklist categories visible to the authenticated user. Categories are the templates new checklists can be seeded from — pass a category's `id` as `checklist_category_id` when creating a checklist to copy its items and view/edit flags onto the new checklist.\n\nAdmin users see every category; non-admin staff (and integration keys minted by them) only see categories with `allow_staff_view` enabled.\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}}],"responses":{"200":{"description":"checklist categories found","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":[{"id":"29","type":"checklist_category","attributes":{"id":29,"name":"Day-of Setup"}}]}}}}}}},"/api/v1/checklist_items":{"get":{"summary":"Fetch checklist items","tags":["Checklists"],"description":"Returns a paginated list of checklist items visible to the authenticated user. Results can be scoped to a single checklist, filtered by status, assignment, or full-text search, and sorted by due date, event date, or recency.\n\nVisibility is determined automatically based on the authenticated user's role: admins see every item; staff see items on their personal checklist, items assigned to them, and items on event or franchise checklists they have view access to; customers see items on their event checklists where customer view is allowed.\n\nThe response includes `meta.total_count` and `meta.per_page` for pagination.\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"checklist_id","in":"query","description":"Filter to items on a single checklist","required":false,"schema":{"type":"integer"}},{"name":"checkable_type","in":"query","description":"Filter to items whose checklist is attached to this type:\n * `Event` \n * `User` \n * `Franchise` \n ","enum":["Event","User","Franchise"],"required":false,"schema":{"type":"string"}},{"name":"checkable_id","in":"query","description":"Filter to items whose checklist is attached to the record with this ID","required":false,"schema":{"type":"integer"}},{"name":"filter","in":"query","description":"Status filter","enum":["Show All","Show Unchecked","Show Checked","Show Past Due","Show Due Soon","Show Without Due Date","Show With Notes"],"required":false,"schema":{"type":"string"}},{"name":"assigned_filter","in":"query","description":"Assignment filter relative to the authenticated user","enum":["Show All","Assigned to Me","Unassigned"],"required":false,"schema":{"type":"string"}},{"name":"query","in":"query","description":"Full-text search across item titles and notes","required":false,"schema":{"type":"string"}},{"name":"sort_by","in":"query","description":"Sort order","enum":["Sort Manually","Sort by Due Date","Sort by Event Date","Sort by Recently Created"],"required":false,"schema":{"type":"string"}},{"name":"show_proposals","in":"query","description":"Include items on proposal-status event checklists (default: true)","required":false,"schema":{"type":"boolean"}},{"name":"only_show_items_in_global_list","in":"query","description":"Only return items flagged to appear in the global task list","required":false,"schema":{"type":"boolean"}},{"name":"page","in":"query","description":"Page number for pagination (default: 1)","required":false,"schema":{"type":"integer"}},{"name":"per","in":"query","description":"Number of results per page (default: 50)","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"checklist items found","content":{"application/json":{"example":{"meta":{"status":"ok","total_count":1,"per_page":50},"data":[{"id":"20","type":"checklist_item","attributes":{"id":20,"title":"Confirm venue arrival time","notes":null,"checked_at":null,"deleted":false,"position":0,"due_on":null,"taskable_type":null,"taskable_id":null,"taskable_description":null,"checklist_id":28,"user_ids":[],"updated_at":"2026-06-09T13:55:59.908-07:00","created_at":"2026-06-09T13:55:59.908-07:00","checkable_description":"Sarah and John's Wedding on Jun 16 / Sample Checklist","checked":false,"editable":true,"checkable_id":78,"checkable_type":"Event","checkable_status":"confirmed","checklist_name":"Sample Checklist","user_full_names":[]},"relationships":{"checklist":{"data":{"id":"28","type":"checklist"}},"users":{"data":[]}}}]}}}}}},"post":{"summary":"Create a checklist item","tags":["Checklists"],"description":"Adds a new item to a checklist. When `checklist_id` is supplied, the item is added to that checklist. When it's omitted, the item is added to the franchise-wide \"Shared Checklist\" (created on first use).\n\n**Required permission:** `assigned_event_write` (when the authenticated user is assigned to the target checklist's event) or `unassigned_event_write` (otherwise). Staff users without admin role also need the per-checklist `allow_staff_edit` flag; customers need `allow_customer_edit`. Items on user-checklists (personal task lists) can only be created by their owner.\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}}],"responses":{"200":{"description":"checklist item created","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"21","type":"checklist_item","attributes":{"id":21,"title":"Confirm venue arrival time","notes":null,"checked_at":null,"deleted":false,"position":0,"due_on":null,"taskable_type":null,"taskable_id":null,"taskable_description":null,"checklist_id":29,"user_ids":[],"updated_at":"2026-06-09T13:56:00.227-07:00","created_at":"2026-06-09T13:56:00.227-07:00","checkable_description":"Sarah and John's Wedding on Jun 16 / Sample Checklist","checked":false,"editable":true,"checkable_id":79,"checkable_type":"Event","checkable_status":"confirmed","checklist_name":"Sample Checklist","user_full_names":[]},"relationships":{"checklist":{"data":{"id":"29","type":"checklist"}},"users":{"data":[]}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","description":"Item title"},"notes":{"type":"string","description":"Free-form notes"},"due_on":{"type":"string","description":"Due date (YYYY-MM-DD)"},"checklist_id":{"type":"integer","description":"Optional ID of the checklist to add the item to. Omit to use the franchise-wide Shared Checklist."},"checked":{"type":"boolean","description":"Whether the new item should start in the checked state"},"user_ids":{"type":"array","items":{"type":"integer"},"description":"Staff member IDs to assign to this item"}},"required":["title"]}}}}}},"/api/v1/checklist_items/{id}":{"get":{"summary":"Fetch checklist item by ID","tags":["Checklists"],"description":"Returns the full details of a single checklist item, including its title, notes, due date, checked state, assigned staff, and the type/status of the record its checklist is attached to.\n\nVisibility is inherited from the parent checklist — see the Checklists tag overview for details.\n\n**Required permission:** `assigned_event_read` (when the authenticated user is assigned to the item's checklist's event) or `unassigned_event_read` (otherwise). Items on user-checklists (personal task lists) are only visible to their owner.\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"id","in":"path","description":"The unique ID of the checklist item","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"checklist item found","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"22","type":"checklist_item","attributes":{"id":22,"title":"Confirm venue arrival time","notes":null,"checked_at":null,"deleted":false,"position":0,"due_on":null,"taskable_type":null,"taskable_id":null,"taskable_description":null,"checklist_id":30,"user_ids":[],"updated_at":"2026-06-09T13:56:00.335-07:00","created_at":"2026-06-09T13:56:00.335-07:00","checkable_description":"Sarah and John's Wedding on Jun 16 / Sample Checklist","checked":false,"editable":true,"checkable_id":80,"checkable_type":"Event","checkable_status":"confirmed","checklist_name":"Sample Checklist","user_full_names":[]},"relationships":{"checklist":{"data":{"id":"30","type":"checklist"}},"users":{"data":[]}}}}}}}}},"put":{"summary":"Update a checklist item","tags":["Checklists"],"description":"Updates an existing checklist item. Only fields included in the request body are modified — omitted fields remain unchanged. Use this to change the title, notes, due date, checked state, or assigned staff. Toggling `checked` is also exposed as dedicated `/mark_as_checked` and `/mark_as_unchecked` endpoints.\n\n**Required permission:** `assigned_event_write` (when the authenticated user is assigned to the item's checklist's event) or `unassigned_event_write` (otherwise). Staff users without admin role also need the per-checklist `allow_staff_edit` flag; customers need `allow_customer_edit`. Items on user-checklists (personal task lists) can only be edited by their owner.\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"id","in":"path","description":"The unique ID of the checklist item","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"checklist item updated","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"23","type":"checklist_item","attributes":{"id":23,"title":"Confirm venue arrival time and load-in door","notes":"Loading dock is on 4th St","checked_at":null,"deleted":false,"position":0,"due_on":null,"taskable_type":null,"taskable_id":null,"taskable_description":null,"checklist_id":31,"user_ids":[],"updated_at":"2026-06-09T13:56:00.532-07:00","created_at":"2026-06-09T13:56:00.501-07:00","checkable_description":"Sarah and John's Wedding on Jun 16 / Sample Checklist","checked":false,"editable":true,"checkable_id":81,"checkable_type":"Event","checkable_status":"confirmed","checklist_name":"Sample Checklist","user_full_names":[]},"relationships":{"checklist":{"data":{"id":"31","type":"checklist"}},"users":{"data":[]}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","description":"Item title"},"notes":{"type":"string","description":"Free-form notes"},"due_on":{"type":"string","description":"Due date (YYYY-MM-DD)"},"checked":{"type":"boolean","description":"Whether the item is checked"},"user_ids":{"type":"array","items":{"type":"integer"},"description":"Staff member IDs assigned to this item"}}}}}}},"delete":{"summary":"Delete a checklist item","tags":["Checklists"],"description":"Soft-deletes a checklist item. The item is hidden from listings but retained in the database for record-keeping.\n\n**Required permission:** `assigned_event_write` (when the authenticated user is assigned to the item's checklist's event) or `unassigned_event_write` (otherwise). Staff users without admin role also need the per-checklist `allow_staff_edit` flag; customers need `allow_customer_edit`. Items on user-checklists (personal task lists) can only be deleted by their owner.\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"id","in":"path","description":"The unique ID of the checklist item","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"checklist item deleted","content":{"application/json":{"example":{"meta":{"status":"ok"}}}}}}}},"/api/v1/checklist_items/{id}/move_to_position":{"put":{"summary":"Move a checklist item to a new position","tags":["Checklists"],"description":"Reorders the checklist item within its checklist by inserting it at the given zero-indexed position. Other items shift to make room.\n\n**Required permission:** `assigned_event_write` (when the authenticated user is assigned to the item's checklist's event) or `unassigned_event_write` (otherwise). Reordering is treated as editing the list — staff users without admin role also need the per-checklist `allow_staff_edit` flag, and customers need `allow_customer_edit`. Items on user-checklists can only be reordered by their owner.\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"id","in":"path","description":"The unique ID of the checklist item","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"checklist item moved","content":{"application/json":{"example":{"meta":{"status":"ok"}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"position":{"type":"integer","description":"Zero-indexed position to move the item to"}},"required":["position"]}}}}}},"/api/v1/checklist_items/{id}/mark_as_checked":{"put":{"summary":"Mark a checklist item as checked","tags":["Checklists"],"description":"Marks a checklist item as checked. This is the same as updating the item with `checked: true`, but exposed as a dedicated endpoint for convenience.\n\nChecking and unchecking items is treated as part of viewing a checklist — staff and customers only need the per-checklist `allow_staff_view` or `allow_customer_view` flag plus the corresponding event-read permission.\n\n**Required permission:** `assigned_event_read` (when the authenticated user is assigned to the item's checklist's event) or `unassigned_event_read` (otherwise). Items on user-checklists can only be checked by their owner.\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"id","in":"path","description":"The unique ID of the checklist item","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"checklist item checked","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"26","type":"checklist_item","attributes":{"id":26,"title":"Confirm venue arrival time","notes":null,"checked_at":"2026-06-09T13:56:00.946-07:00","deleted":false,"position":0,"due_on":null,"taskable_type":null,"taskable_id":null,"taskable_description":null,"checklist_id":34,"user_ids":[],"updated_at":"2026-06-09T13:56:00.946-07:00","created_at":"2026-06-09T13:56:00.914-07:00","checkable_description":"Sarah and John's Wedding on Jun 16 / Sample Checklist","checked":true,"editable":true,"checkable_id":84,"checkable_type":"Event","checkable_status":"confirmed","checklist_name":"Sample Checklist","user_full_names":[]},"relationships":{"checklist":{"data":{"id":"34","type":"checklist"}},"users":{"data":[]}}}}}}}}}},"/api/v1/checklist_items/{id}/mark_as_unchecked":{"put":{"summary":"Mark a checklist item as unchecked","tags":["Checklists"],"description":"Marks a checklist item as unchecked. This is the same as updating the item with `checked: false`, but exposed as a dedicated endpoint for convenience.\n\nChecking and unchecking items is treated as part of viewing a checklist — staff and customers only need the per-checklist `allow_staff_view` or `allow_customer_view` flag plus the corresponding event-read permission.\n\n**Required permission:** `assigned_event_read` (when the authenticated user is assigned to the item's checklist's event) or `unassigned_event_read` (otherwise). Items on user-checklists can only be unchecked by their owner.\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"id","in":"path","description":"The unique ID of the checklist item","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"checklist item unchecked","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"27","type":"checklist_item","attributes":{"id":27,"title":"Confirm venue arrival time","notes":null,"checked_at":null,"deleted":false,"position":0,"due_on":null,"taskable_type":null,"taskable_id":null,"taskable_description":null,"checklist_id":35,"user_ids":[],"updated_at":"2026-06-09T13:56:01.084-07:00","created_at":"2026-06-09T13:56:01.052-07:00","checkable_description":"Sarah and John's Wedding on Jun 16 / Sample Checklist","checked":false,"editable":true,"checkable_id":85,"checkable_type":"Event","checkable_status":"confirmed","checklist_name":"Sample Checklist","user_full_names":[]},"relationships":{"checklist":{"data":{"id":"35","type":"checklist"}},"users":{"data":[]}}}}}}}}}},"/api/v1/checklists":{"get":{"summary":"Fetch checklists","tags":["Checklists"],"description":"Returns the checklists visible to the authenticated user. Pass an `event_id` to limit results to checklists attached to a specific event (booking or proposal); omit it to get every checklist the user can see across the franchise (event checklists, the user's personal staff checklist, and any franchise-level checklists).\n\nVisibility is determined automatically based on the authenticated user's role: admins see every checklist; staff see their personal checklist plus event checklists they're assigned to or that allow staff view; customers see their event checklists where customer view is allowed.\n\nEach checklist includes a `complete_count` (number of checked items) and `count` (total items) to support progress displays without a separate request.\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"event_id","in":"query","description":"Filter checklists by event ID","required":false,"schema":{"type":"integer"}},{"name":"page","in":"query","required":false,"description":"Page number (default: 1)","schema":{"type":"integer"}},{"name":"per","in":"query","required":false,"description":"Results per page (default: 50)","schema":{"type":"integer"}}],"responses":{"200":{"description":"checklists found","content":{"application/json":{"example":{"meta":{"status":"ok","total_count":1,"per_page":50},"data":[{"id":"36","type":"checklist","attributes":{"id":36,"name":"Day-of Setup","checkable_type":"Event","checkable_id":86,"allow_edit":true,"complete_count":0,"count":0}}]}}}}}},"post":{"summary":"Create a checklist","tags":["Checklists"],"description":"Creates a new checklist on an event. When a `checklist_category_id` is supplied, the new checklist's items, view/edit flags, and name are seeded from the chosen category. When it's omitted, an empty checklist named \"Checklist\" is created with no items.\n\n**Required permission:** `assigned_event_write` (when the authenticated user is assigned to the event) or `unassigned_event_write` (otherwise). If a `checklist_category_id` is supplied, the category must also be accessible to the user — admins can use any category; non-admin staff can only use categories with `allow_staff_view` enabled.\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}}],"responses":{"200":{"description":"checklist created","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"37","type":"checklist","attributes":{"id":37,"name":"Day-of Setup","checkable_type":"Event","checkable_id":87,"allow_edit":true,"complete_count":0,"count":0}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"event_id":{"type":"integer","description":"ID of the event the checklist should be attached to"},"checklist_category_id":{"type":"integer","description":"Optional checklist category to seed the new checklist from"}},"required":["event_id"]}}}}}},"/api/v1/checklists/{id}":{"get":{"summary":"Fetch checklist by ID","tags":["Checklists"],"description":"Returns a single checklist along with its `name`, `checkable_type`/`checkable_id` (the record the checklist is attached to), `allow_edit` for the authenticated user, and progress counts (`complete_count` and `count`).\n\nVisibility is determined automatically based on the authenticated user's role and the checklist's view flags — see the Checklists tag overview for details.\n\n**Required permission:** `assigned_event_read` (when the authenticated user is assigned to the checklist's event) or `unassigned_event_read` (otherwise). User-checklists (personal task lists) are only visible to their owner.\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"id","in":"path","description":"The unique ID of the checklist","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"checklist found","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"38","type":"checklist","attributes":{"id":38,"name":"Day-of Setup","checkable_type":"Event","checkable_id":88,"allow_edit":true,"complete_count":0,"count":0}}}}}}}},"delete":{"summary":"Delete a checklist","tags":["Checklists"],"description":"Permanently removes a checklist and all of its items. The deletion is logged on the attached event's change history when applicable.\n\n**Required permission:** `assigned_event_write` (when the authenticated user is assigned to the checklist's event) or `unassigned_event_write` (otherwise). Staff users without admin role also need the per-checklist `allow_staff_edit` flag. Customers cannot delete checklists. User-checklists (personal task lists) cannot be deleted via the API — they are singletons that recreate themselves on next access.\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"id","in":"path","description":"The unique ID of the checklist","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"checklist deleted","content":{"application/json":{"example":{"meta":{"status":"ok"}}}}}}}},"/api/v1/checklists/{id}/reset":{"put":{"summary":"Reset a checklist","tags":["Checklists"],"description":"Resets the checklist back to its starting state. All existing items are deleted — any notes, due dates, or staff assignments on those items are lost. If the checklist was seeded from a checklist category, items are repopulated from the category template and the checklist's name plus view/edit flags are restored to the category defaults. If no category is associated, the result is an empty checklist. The reset is logged on the attached event's change history when applicable.\n\n**Required permission:** `assigned_event_write` (when the authenticated user is assigned to the checklist's event) or `unassigned_event_write` (otherwise). Staff users without admin role also need the per-checklist `allow_staff_edit` flag. Customers cannot reset checklists. User-checklists (personal task lists) can only be reset by their owner.\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"id","in":"path","description":"The unique ID of the checklist","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"checklist reset","content":{"application/json":{"example":{"meta":{"status":"ok"}}}}}}}},"/api/v1/design_templates":{"get":{"summary":"Fetch all design templates","tags":["Design Templates"],"description":"Fetch all design templates for a business.\n\n**Required permission:** `design_template_read`","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}}],"responses":{"200":{"description":"design templates found","content":{"application/json":{"example":{"data":[{"id":"15","type":"design_template","attributes":{"id":15,"name":"Sample Template","description":"Sample description","video_url":null,"purchase_url":"https://example.com/gallery/123/download","number_of_photos":3,"design_category_tag_ids":[],"design_category_tag_names":[],"design_category_layout_ids":[],"design_category_layout_names":[],"primary_image":{"video_variant":null},"additional_images":[]},"relationships":{"design_template_category":{"data":{"id":"28","type":"design_template_category"}},"design_category_tags":{"data":[]},"design_category_layouts":{"data":[]}}}]}}}}}}},"/api/v1/design_templates?include=design_template_category,design_category_tags,design_category_layouts":{"get":{"summary":"Fetch all design templates with includes","tags":["Design Templates"],"description":"Can fetch categories and tags for design templates.\n\n**Required permission:** `design_template_read`","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}}],"responses":{"200":{"description":"design templates with includes found","content":{"application/json":{"example":{"data":[{"id":"16","type":"design_template","attributes":{"id":16,"name":"Sample Template","description":"Sample description","video_url":null,"purchase_url":"https://example.com/gallery/123/download","number_of_photos":3,"design_category_tag_ids":[],"design_category_tag_names":[],"design_category_layout_ids":[],"design_category_layout_names":[],"primary_image":{"video_variant":null},"additional_images":[]},"relationships":{"design_template_category":{"data":{"id":"29","type":"design_template_category"}},"design_category_tags":{"data":[]},"design_category_layouts":{"data":[]}}}],"included":[{"id":"29","type":"design_template_category","attributes":{"id":29,"name":"Category 11","kind":"DesignTemplate"}}]}}}}}}},"/api/v1/events/{event_id}/booking_questions":{"get":{"summary":"Fetch booking question answers for an event","tags":["Proposals/Confirmed Bookings"],"description":"Returns the full set of booking questions and their current answers for an event. Each entry includes the question's `column_name`, `label`, `kind`, current `value`, and `formatted_value`.\n\nUse the `column_name` of each entry as the key when sending updates via the `PATCH /api/v1/events/{event_id}/booking_questions` endpoint.\n\n**Required permission:** `assigned_event_read` or `unassigned_event_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"event_id","in":"path","description":"The unique ID of the event","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"booking questions returned","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":[{"id":"13","type":"event_booking_question","attributes":{"id":13,"event_id":91,"booking_question_id":13,"editable":true,"column_name":"guest_count","name":"Estimated Guest Count","label":"Estimated guest count","kind":"text","link":null,"value":null,"formatted_value":null,"options":null,"archived":false}},{"id":"utm_source","type":"event_booking_question","attributes":{"id":"utm_source","event_id":91,"booking_question_id":null,"editable":false,"column_name":"utm_source","name":"UTM Source","label":null,"kind":null,"link":null,"value":null,"formatted_value":null,"options":null,"archived":false}},{"id":"utm_campaign","type":"event_booking_question","attributes":{"id":"utm_campaign","event_id":91,"booking_question_id":null,"editable":false,"column_name":"utm_campaign","name":"UTM Campaign","label":null,"kind":null,"link":null,"value":null,"formatted_value":null,"options":null,"archived":false}},{"id":"utm_medium","type":"event_booking_question","attributes":{"id":"utm_medium","event_id":91,"booking_question_id":null,"editable":false,"column_name":"utm_medium","name":"UTM Medium","label":null,"kind":null,"link":null,"value":null,"formatted_value":null,"options":null,"archived":false}},{"id":"utm_term","type":"event_booking_question","attributes":{"id":"utm_term","event_id":91,"booking_question_id":null,"editable":false,"column_name":"utm_term","name":"UTM Term","label":null,"kind":null,"link":null,"value":null,"formatted_value":null,"options":null,"archived":false}},{"id":"utm_content","type":"event_booking_question","attributes":{"id":"utm_content","event_id":91,"booking_question_id":null,"editable":false,"column_name":"utm_content","name":"UTM Content","label":null,"kind":null,"link":null,"value":null,"formatted_value":null,"options":null,"archived":false}}]}}}}}},"patch":{"summary":"Update booking question answers for an event","tags":["Proposals/Confirmed Bookings"],"description":"Updates one or more booking question answers on the event. The body's `custom_questions` keys must match the `column_name` of each booking question (as returned by the `GET` endpoint).\n\nOnly the keys you include are touched — other answers on the event are preserved.\n\n**Required permission:** `assigned_event_write` or `unassigned_event_write`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"event_id","in":"path","description":"The unique ID of the event","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"booking questions updated","content":{"application/json":{"example":{"meta":{"status":"ok"}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"custom_questions":{"type":"object","description":"Keys are booking-question column names; values are the answer to record.","additionalProperties":true}},"required":["custom_questions"]}}}}}},"/api/v1/event_bookings":{"get":{"summary":"Fetch all event bookings","tags":["Proposals/Confirmed Bookings"],"description":"Returns a paginated list of event bookings for the specified business. Results can be filtered by date range.\n\nUse the `include` query parameter to sideload related resources (comma-separated). Available: `event_add_ons`, `event_extras`, `event_photobooth_background`, `event_booking_extra_categories`.\n\n**Required permission:** `assigned_event_read` or `unassigned_event_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"event_date_start","in":"query","description":"Event Date (Start)","required":false,"schema":{"type":"string"}},{"name":"event_date_end","in":"query","description":"Event Date (End)","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","description":"Page number for pagination (default: 1)","required":false,"schema":{"type":"integer"}},{"name":"per","in":"query","description":"Number of results per page","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"event bookings found","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":[{"id":"11","type":"event_booking","attributes":{"id":11,"event_id":93,"event_type_id":27,"title":"Sarah and John's Wedding","name":"Judson","starts_at":"2026-06-30T13:56:02.551-07:00","ends_at":"2026-06-30T14:56:02.551-07:00","status":"confirmed","formatted_status":"Confirmed","formatted_status_with_context":"Confirmed","brand_name":"Marks LLC 167","canceled":false,"postponed":false,"date_mode":"date_time","description_html":"","override_ends_at":null,"length_in_minutes":"60.0","length_in_days":1,"event_type_unit_range":null,"units":null,"formatted_datetime_range":"Tuesday, June 30, 2026 • 1:56 PM - 2:56 PM","formatted_date_range":"Tuesday, June 30, 2026","formatted_time_range":"1:56 PM - 2:56 PM","formatted_units":null,"staff_member_ids":[],"staff_member_names":null,"staff_member_abbreviations":null,"expired_proposal":false,"primary_image_attachment":{"video_variant":"/assets/video_dimensions_no-addon-51d25c35216ac7f3ea621f74772120bbea123405e2fa3f25d97050af78f5804e.png"},"package_group_name":"Sample","service_name":"Photo booth 8","default_staff_title":null,"override_price":null,"override_price_cents":null,"override_price_currency":null,"override_price_formatted":null,"taxable":true},"relationships":{"event_add_ons":{"data":[]},"event_photobooth_background":{"data":null},"event_booking_extra_categories":{"data":[]},"event_extras":{"data":[]}}}]}}}}}}},"/api/v1/event_bookings/{event_booking_id}":{"get":{"summary":"Fetch event booking by ID","tags":["Proposals/Confirmed Bookings"],"description":"Returns the full details of a single event booking, including package, schedule, pricing, and venue information.\n\nUse the `include` query parameter to sideload related resources (comma-separated). Available: `event_add_ons`, `event_extras`, `event_photobooth_background`, `event_booking_extra_categories`.\n\n**Required permission:** `assigned_event_read` or `unassigned_event_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"event_booking_id","in":"path","description":"Event Booking ID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"event booking found","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"12","type":"event_booking","attributes":{"id":12,"event_id":94,"event_type_id":28,"title":"Sarah and John's Wedding","name":"Eusebio","starts_at":"2026-06-30T13:56:02.735-07:00","ends_at":"2026-06-30T14:56:02.735-07:00","status":"confirmed","formatted_status":"Confirmed","formatted_status_with_context":"Confirmed","brand_name":"Koch and Sons 171","canceled":false,"postponed":false,"date_mode":"date_time","description_html":"","override_ends_at":null,"length_in_minutes":"60.0","length_in_days":1,"event_type_unit_range":null,"units":null,"formatted_datetime_range":"Tuesday, June 30, 2026 • 1:56 PM - 2:56 PM","formatted_date_range":"Tuesday, June 30, 2026","formatted_time_range":"1:56 PM - 2:56 PM","formatted_units":null,"staff_member_ids":[],"staff_member_names":null,"staff_member_abbreviations":null,"expired_proposal":false,"primary_image_attachment":{"video_variant":"/assets/video_dimensions_no-addon-51d25c35216ac7f3ea621f74772120bbea123405e2fa3f25d97050af78f5804e.png"},"package_group_name":"Sample","service_name":"Photo booth 9","default_staff_title":null,"override_price":null,"override_price_cents":null,"override_price_currency":null,"override_price_formatted":null,"taxable":true},"relationships":{"event_add_ons":{"data":[]},"event_photobooth_background":{"data":null},"event_booking_extra_categories":{"data":[]},"event_extras":{"data":[]}}}}}}}}}},"/api/v1/event_categories":{"get":{"summary":"Fetch all services","tags":["Packages & Services"],"description":"Returns all active services (event categories) for the business, ordered by position.\n\nServices are the top-level grouping for your offerings (e.g., \"DJ Services\", \"Photo Booth\", \"Lighting\"). Each service contains one or more package groups, which in turn contain individual packages (event types).\n\n**Required permission:** `offerings_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}}],"responses":{"200":{"description":"services found","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":[{"id":"33","type":"event_category","attributes":{"id":33,"name":"DJ Services","position":1,"primary_image":{"panel_variant":null}},"relationships":{"package_groups":{"data":[]}}},{"id":"34","type":"event_category","attributes":{"id":34,"name":"Photo Booth","position":2,"primary_image":{"panel_variant":null}},"relationships":{"package_groups":{"data":[]}}}]}}}}}}},"/api/v1/event_categories/{id}":{"get":{"summary":"Fetch a service by ID","tags":["Packages & Services"],"description":"Returns the details of a single service (event category), including its name, position, and primary image.\n\nUse the `include` query parameter to sideload related resources (comma-separated). Available: `package_groups`.\n\n**Required permission:** `offerings_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"id","in":"path","description":"The unique ID of the service","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"service found","content":{"application/json":{"example":{"data":{"id":"35","type":"event_category","attributes":{"id":35,"name":"DJ Services","position":1,"primary_image":{"panel_variant":null}},"relationships":{"package_groups":{"data":[]}}}}}}}}}},"/api/v1/event_payments":{"get":{"summary":"Fetch all payments","tags":["Payments"],"description":"Returns a paginated list of payments across all events for the business. Results can be filtered by event ID or date range.\n\nEach payment includes amount breakdowns (charge, tip, tax, fees, net), processor details, and associated event information.\n\nThe response includes `meta.total_count` and `meta.per_page` for pagination.\n\n**Required permission:** `assigned_event_read_pricing` or `unassigned_event_read_pricing`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"event_id","in":"query","description":"Filter payments by event ID","required":false,"schema":{"type":"integer"}},{"name":"payment_date_start","in":"query","description":"Filter payments on or after this date (YYYY-MM-DD)","required":false,"schema":{"type":"string"}},{"name":"payment_date_end","in":"query","description":"Filter payments on or before this date (YYYY-MM-DD)","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","description":"Page number for pagination (default: 1)","required":false,"schema":{"type":"integer"}},{"name":"per","in":"query","description":"Number of results per page (default: 25)","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"payments found","content":{"application/json":{"example":{"meta":{"status":"ok","total_count":1,"per_page":25},"data":[{"id":"8","type":"event_payment","attributes":{"id":8,"event_id":95,"paid_at":"2026-06-09T13:56:03.116-07:00","payment_method":"Other","reference":"Check Number #123","processor":null,"refund":false,"amount":"30.00","amount_cents":3000,"amount_currency":"USD","amount_formatted":"$30","tip_amount":"0.00","tip_amount_cents":0,"tip_amount_currency":"USD","tip_amount_formatted":"$0","total_amount":"0.00","total_amount_cents":0,"total_amount_currency":"USD","total_amount_formatted":"$0","paid_by":"Wade Lynch","paid_at_formatted":"06-09-2026  1:56 PM","event_starts_at":"2026-06-16T13:56:03.066-07:00","invoice_number":null,"event_title":"Sarah and John's Wedding","event_total":"0.00","event_total_cents":0,"event_total_currency":"USD","event_total_formatted":"$0","taxable_amount":"0.00","taxable_amount_cents":0,"taxable_amount_currency":"USD","taxable_amount_formatted":"$0","non_taxable_amount":"0.00","non_taxable_amount_cents":0,"non_taxable_amount_currency":"USD","non_taxable_amount_formatted":"$0","tax_rate":"0.0","tax_collected":"0.00","tax_collected_cents":0,"tax_collected_currency":"USD","tax_collected_formatted":"$0","amount_collected_excluding_tax":"30.00","amount_collected_excluding_tax_cents":3000,"amount_collected_excluding_tax_currency":"USD","amount_collected_excluding_tax_formatted":"$30","processing_fees":null,"processing_fees_cents":null,"processing_fees_currency":null,"processing_fees_formatted":"$0","net_amount":"30.00","net_amount_cents":3000,"net_amount_currency":"USD","net_amount_formatted":"$30","taxjar_city":null,"taxjar_county":null,"taxjar_state":null,"taxjar_country":null,"taxjar_postal_code":null,"taxjar_city_rate":null,"taxjar_county_rate":null,"taxjar_state_rate":null,"taxjar_country_rate":null,"taxjar_combined_district_rate":null,"taxjar_combined_rate":null,"brand_id":756,"brand_name":"Hammes, Ruecker and Gutkowski 177","check_cherry_payment_id":"18adb819-af1c-49af-aa93-5333ed76026d"}}]}}}}}}},"/api/v1/event_payments/{id}":{"get":{"summary":"Fetch payment by ID","tags":["Payments"],"description":"Returns the full details of a single payment, including amount breakdowns, tax information, processor details, and associated event data.\n\n**Required permission:** `assigned_event_read_pricing` or `unassigned_event_read_pricing`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"id","in":"path","description":"The unique ID of the payment to retrieve","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"payment found","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"9","type":"event_payment","attributes":{"id":9,"event_id":96,"paid_at":"2026-06-09T13:56:03.256-07:00","payment_method":"Other","reference":"Check Number #123","processor":null,"refund":false,"amount":"30.00","amount_cents":3000,"amount_currency":"USD","amount_formatted":"$30","tip_amount":"0.00","tip_amount_cents":0,"tip_amount_currency":"USD","tip_amount_formatted":"$0","total_amount":"0.00","total_amount_cents":0,"total_amount_currency":"USD","total_amount_formatted":"$0","paid_by":"Piedad Rogahn","paid_at_formatted":"06-09-2026  1:56 PM","event_starts_at":"2026-06-16T13:56:03.196-07:00","invoice_number":null,"event_title":"Sarah and John's Wedding","event_total":"0.00","event_total_cents":0,"event_total_currency":"USD","event_total_formatted":"$0","taxable_amount":"0.00","taxable_amount_cents":0,"taxable_amount_currency":"USD","taxable_amount_formatted":"$0","non_taxable_amount":"0.00","non_taxable_amount_cents":0,"non_taxable_amount_currency":"USD","non_taxable_amount_formatted":"$0","tax_rate":"0.0","tax_collected":"0.00","tax_collected_cents":0,"tax_collected_currency":"USD","tax_collected_formatted":"$0","amount_collected_excluding_tax":"30.00","amount_collected_excluding_tax_cents":3000,"amount_collected_excluding_tax_currency":"USD","amount_collected_excluding_tax_formatted":"$30","processing_fees":null,"processing_fees_cents":null,"processing_fees_currency":null,"processing_fees_formatted":"$0","net_amount":"30.00","net_amount_cents":3000,"net_amount_currency":"USD","net_amount_formatted":"$30","taxjar_city":null,"taxjar_county":null,"taxjar_state":null,"taxjar_country":null,"taxjar_postal_code":null,"taxjar_city_rate":null,"taxjar_county_rate":null,"taxjar_state_rate":null,"taxjar_country_rate":null,"taxjar_combined_district_rate":null,"taxjar_combined_rate":null,"brand_id":759,"brand_name":"Bechtelar-Jacobs 180","check_cherry_payment_id":"145aabed-11e6-42f0-abf6-df37c066246a"}}}}}}}}},"/api/v1/events/{event_id}/event_staff_members":{"post":{"summary":"Assign a staff member to an event","tags":["Proposals/Confirmed Bookings"],"description":"Assigns a staff member to an event (booking or proposal). The staff member must belong to the same franchise. Use the `role` field to label what the staff member is doing on the event (e.g., \"DJ\", \"Photographer\", \"Assistant\"). The same user can be assigned to the same event multiple times with different roles.\n\nFor confirmed bookings, assigning a staff member also applies any configured staff expenses, sends the \"Employee Assigned\" automated message, dispatches push notifications, and fires the staff-assigned webhook. None of these side effects run for proposals.\n\n**Required permission:** `assigned_event_write` or `unassigned_event_write`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"event_id","in":"path","description":"The ID of the event to assign the staff member to","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"staff member assigned","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"3","type":"event_staff_member","attributes":{"role":"DJ"},"relationships":{"event":{"data":{"id":"97","type":"event"}},"user":{"data":{"id":"342","type":"user"}}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"staff_id":{"type":"integer","description":"The ID of the staff user to assign"},"role":{"type":"string","description":"The role this staff member will fill on the event (e.g., \"DJ\", \"Photographer\")"}},"required":["staff_id"]}}}}}},"/api/v1/events/{event_id}/event_staff_members/{id}":{"delete":{"summary":"Remove a staff member from an event","tags":["Proposals/Confirmed Bookings"],"description":"Removes a previously-assigned staff member from an event. When the authenticated user is assigned to the event, `assigned_event_write` is required; otherwise `unassigned_event_write` is required.\n\n**Required permission:** `assigned_event_write` or `unassigned_event_write`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"event_id","in":"path","description":"The ID of the event the assignment belongs to","required":true,"schema":{"type":"integer"}},{"name":"id","in":"path","description":"The unique ID of the EventStaffMember assignment","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"staff member removed","content":{"application/json":{"example":{"meta":{"status":"ok"}}}}}}}},"/api/v1/event_types":{"get":{"summary":"Fetch all packages","tags":["Packages & Services"],"description":"Returns all packages (event types) for the business. Packages define the services offered, including pricing, duration, availability windows, and booking configuration.\n\nResults can be filtered by visibility (e.g., public-only packages shown on the booking page vs. all packages including private ones).\n\nUse the `include` query parameter to sideload related resources (comma-separated). Available: `package_group`, `package_unit_ranges`, `event_type_extra_categories`.\n\n**Required permission:** `offerings_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"visibility","in":"query","description":"Filter by visibility (e.g., 'public_only')","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"packages found","content":{"application/json":{"example":{"data":[{"id":"29","type":"event_type","attributes":{"id":29,"name":"4-Hour DJ Package","description_html":null,"advertised_rate":"$100 includes 5 hours","base_rate_cents":10000,"position":1,"hourly":true,"package_group_id":30,"default_length":300,"min_length":60,"max_length":null,"step":60,"default_length_in_minutes":300,"min_length_in_minutes":60,"max_length_in_minutes":null,"min_length_in_days":1,"max_length_in_days":1,"default_length_in_days":1,"date_mode":"date_time","calendar_mode":"minimal","deposit_method":"percent","deposit_multiplier_percent":25,"enable_customer_can_book_extra_hours":true,"enable_customer_can_book_extra_days":false,"deposit_amount":"0.00","deposit_amount_cents":0,"deposit_amount_currency":"USD","deposit_amount_formatted":"$0","base_rate":"100.00","base_rate_currency":"USD","base_rate_formatted":"$100","price_per_extra_hour":"50.00","price_per_extra_hour_cents":5000,"price_per_extra_hour_currency":"USD","price_per_extra_hour_formatted":"$50","price_per_extra_day":"0.00","price_per_extra_day_cents":0,"price_per_extra_day_currency":"USD","price_per_extra_day_formatted":"$0","taxable":true,"step_in_minutes":60,"slot_interval_minutes":30,"available_every_day_of_the_week":"yes","available_starts_at_time":null,"available_ends_at_time":null,"available_sunday":"yes","available_sunday_starts_at_time":null,"available_sunday_ends_at_time":null,"available_monday":"yes","available_monday_starts_at_time":null,"available_monday_ends_at_time":null,"available_tuesday":"yes","available_tuesday_starts_at_time":null,"available_tuesday_ends_at_time":null,"available_wednesday":"yes","available_wednesday_starts_at_time":null,"available_wednesday_ends_at_time":null,"available_thursday":"yes","available_thursday_starts_at_time":null,"available_thursday_ends_at_time":null,"available_friday":"yes","available_friday_starts_at_time":null,"available_friday_ends_at_time":null,"available_saturday":"yes","available_saturday_starts_at_time":null,"available_saturday_ends_at_time":null,"enable_customer_can_book_per_unit":false,"unit_name":"unit","enable_customer_can_book_per_unit_range":false,"primary_image":{"large_variant":"/assets/prize-dddddd-b0dab4555d253a9daf0e6b30d4ad5572dd37fbfad501fb8eec6a1d53eb7629ad.png"},"has_backdrops":false,"unit_title":"Unit","units_title":"Units","units_how_many":"How many units would you like to book?","location_booking_type":"yes"},"relationships":{"package_unit_ranges":{"data":[]},"event_type_extra_categories":{"data":[]},"package_group":{"data":{"id":"30","type":"package_group"}}}}]}}}}}}},"/api/v1/event_types/{id}":{"get":{"summary":"Fetch a package by ID","tags":["Packages & Services"],"description":"Returns the full details of a single package (event type), including pricing, duration settings, availability windows, deposit configuration, and booking options.\n\nUse the `include` query parameter to sideload related resources (comma-separated). Available: `package_group`, `package_unit_ranges`, `event_type_extra_categories`.\n\n**Required permission:** `offerings_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"id","in":"path","description":"The unique ID of the package","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"package found","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"30","type":"event_type","attributes":{"id":30,"name":"4-Hour DJ Package","description_html":null,"advertised_rate":"$100 includes 5 hours","base_rate_cents":10000,"position":1,"hourly":true,"package_group_id":31,"default_length":300,"min_length":60,"max_length":null,"step":60,"default_length_in_minutes":300,"min_length_in_minutes":60,"max_length_in_minutes":null,"min_length_in_days":1,"max_length_in_days":1,"default_length_in_days":1,"date_mode":"date_time","calendar_mode":"minimal","deposit_method":"percent","deposit_multiplier_percent":25,"enable_customer_can_book_extra_hours":true,"enable_customer_can_book_extra_days":false,"deposit_amount":"0.00","deposit_amount_cents":0,"deposit_amount_currency":"USD","deposit_amount_formatted":"$0","base_rate":"100.00","base_rate_currency":"USD","base_rate_formatted":"$100","price_per_extra_hour":"50.00","price_per_extra_hour_cents":5000,"price_per_extra_hour_currency":"USD","price_per_extra_hour_formatted":"$50","price_per_extra_day":"0.00","price_per_extra_day_cents":0,"price_per_extra_day_currency":"USD","price_per_extra_day_formatted":"$0","taxable":true,"step_in_minutes":60,"slot_interval_minutes":30,"available_every_day_of_the_week":"yes","available_starts_at_time":null,"available_ends_at_time":null,"available_sunday":"yes","available_sunday_starts_at_time":null,"available_sunday_ends_at_time":null,"available_monday":"yes","available_monday_starts_at_time":null,"available_monday_ends_at_time":null,"available_tuesday":"yes","available_tuesday_starts_at_time":null,"available_tuesday_ends_at_time":null,"available_wednesday":"yes","available_wednesday_starts_at_time":null,"available_wednesday_ends_at_time":null,"available_thursday":"yes","available_thursday_starts_at_time":null,"available_thursday_ends_at_time":null,"available_friday":"yes","available_friday_starts_at_time":null,"available_friday_ends_at_time":null,"available_saturday":"yes","available_saturday_starts_at_time":null,"available_saturday_ends_at_time":null,"enable_customer_can_book_per_unit":false,"unit_name":"unit","enable_customer_can_book_per_unit_range":false,"primary_image":{"large_variant":"/assets/prize-dddddd-b0dab4555d253a9daf0e6b30d4ad5572dd37fbfad501fb8eec6a1d53eb7629ad.png"},"has_backdrops":false,"unit_title":"Unit","units_title":"Units","units_how_many":"How many units would you like to book?","location_booking_type":"yes"},"relationships":{"package_unit_ranges":{"data":[]},"event_type_extra_categories":{"data":[]},"package_group":{"data":{"id":"31","type":"package_group"}}}}}}}}}}},"/api/v1/events":{"get":{"summary":"Fetch all events","tags":["Proposals/Confirmed Bookings"],"description":"Returns a paginated list of events for the specified business. Results can be filtered by status, date range, package, and text search.\n\nThe response includes `meta.total_count` (total matching events) and `meta.per_page` (results per page) to support pagination.\n\nUse the `include` query parameter to sideload related resources (comma-separated). Available: `event_bookings`, `proposal_alternatives`, `event_users`, `event_staff_members`, `event_staff_requests`, `contacts`, `notes`.\n\n**Required permission:** `assigned_event_read` or `unassigned_event_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"event_status","in":"query","description":"Status filter","required":false,"schema":{"type":"string"}},{"name":"past_or_future","in":"query","description":"When filter","required":false,"schema":{"type":"string"}},{"name":"event_date_start","in":"query","description":"Event Date (Start)","required":false,"schema":{"type":"string"}},{"name":"event_date_end","in":"query","description":"Event Date (End)","required":false,"schema":{"type":"string"}},{"name":"booked_date_start","in":"query","description":"Booked Date (Start)","required":false,"schema":{"type":"string"}},{"name":"booked_date_end","in":"query","description":"Booked Date (End)","required":false,"schema":{"type":"string"}},{"name":"package_id","in":"query","description":"Package ID","required":false,"schema":{"type":"integer"}},{"name":"text","in":"query","description":"Text Search","required":false,"schema":{"type":"string"}},{"name":"sort_by","in":"query","description":"Sort Order","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","description":"Page number for pagination (default: 1)","required":false,"schema":{"type":"integer"}},{"name":"per","in":"query","description":"Number of results per page (default: 25)","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"events found","content":{"application/json":{"example":{"meta":{"status":"ok","total_count":1,"per_page":10},"data":[{"id":"99","type":"event","attributes":{"id":99,"title":"Sarah and John's Wedding","status":"confirmed","formatted_status":"Confirmed","formatted_status_with_context":"Confirmed","booked_at":"2026-06-09T13:56:03.880-07:00","created_at":"2026-06-09T13:56:03.881-07:00","created_via":"quick_add","venue_name":"The Mission Inn","venue_address":"123 Some St","venue_city":"Riverside","venue_state":"CA","venue_zip":"92506","venue_map_url":"https://www.google.com/maps/search/123+Some+St%2C+Riverside%2C+CA%2C+92506","venue_google_place_id":null,"public_notes":null,"private_notes":"","coupon_code":null,"photo_album_url":null,"photo_album_instructions":null,"video_url":null,"video_album_instructions":null,"completed":false,"canceled":false,"archived":false,"postponed":false,"invoice_number":null,"billable_distance":null,"total_distance":null,"distance_unit":null,"latitude":null,"longitude":null,"tax_rate":"0.0","source":null,"estimated_number_guests":null,"indoor_outdoor":null,"lead_event_type":null,"contact_preference":null,"po_number":null,"stair_setup":null,"token":"ZTX-6G3K-4CZ","utm_source":null,"utm_campaign":null,"utm_medium":null,"utm_term":null,"utm_content":null,"gclid":null,"starts_at":"2026-06-16T13:56:03.842-07:00","ends_at":"2026-06-16T16:56:03.842-07:00","length_in_minutes":"","length_in_hours":"","starting_balance":"0.00","starting_balance_cents":0,"starting_balance_currency":"USD","starting_balance_formatted":"$0.00","deposit_amount_due":"0.00","deposit_amount_due_cents":0,"deposit_amount_due_currency":"USD","deposit_amount_due_formatted":"$0.00","custom_deposit_amount":null,"custom_deposit_amount_cents":null,"custom_deposit_amount_currency":null,"custom_deposit_amount_formatted":null,"balance_amount_due":"0.00","balance_amount_due_cents":0,"balance_amount_due_currency":"USD","balance_amount_due_formatted":"$0.00","starts_at_date":"06-16-2026","starts_at_date_iso8601":"2026-06-16","starts_at_time":"1:56 PM","invoice_date":"06-09-2026","invoice_date_iso8601":"2026-06-09","proposal_theme":"classic","proposal_valid_through":null,"proposal_viewed_at":null,"next_follow_up_on":null,"package_name":"","package_group_name":"","service_name":"","package_description_html":"","add_on_names":"","add_on_quantities_name_and_price":"","extra_names":"","extra_quantities_name_and_price":"","backdrop_names":"","backdrop_name_and_price":"","design_statuses":null,"due_at":"2026-06-16T00:00:00.000-07:00","customer_ids":"","customer_names":"","customer_emails":"","customer_phones":"","customer_addresses":"","customer_and_contact_ids":"","customer_and_contact_names":"","customer_and_contact_emails":"","customer_and_contact_phones":"","additional_contact_ids":"","additional_contact_names":"","additional_contact_emails":"","additional_contact_phones":"","assigned_staff_ids":"","assigned_staff_names":"","assigned_staff_abbreviations":"","assigned_staff_emails":"","change_summary":null,"brand_id":770,"brand_name":"Sawayn-Kling 191","primary_image":{"hero_variant":null},"booked_at_description":"Booked less than a minute ago via Quick add","current_user_assigned":false,"event_url":"https://test-192-c1473e92.cc.localhost/events/99-sarah-and-john-s-wedding?token=ZTX-6G3K-4CZ","questionnaires_url":"https://test-192-c1473e92.cc.localhost/events/99-sarah-and-john-s-wedding/forms?token=ZTX-6G3K-4CZ","payment_url":"https://test-192-c1473e92.cc.localhost/events/99-sarah-and-john-s-wedding/payments/new?token=ZTX-6G3K-4CZ","invoice_url":"https://test-192-c1473e92.cc.localhost/events/99-sarah-and-john-s-wedding/invoice?token=ZTX-6G3K-4CZ","designs_url":"https://test-192-c1473e92.cc.localhost/events/99-sarah-and-john-s-wedding/designs?token=ZTX-6G3K-4CZ","proposal_url":null,"referred_by_user_id":null,"referred_by_user_name":null,"referred_by_user_email":null,"custom_fields":[]},"relationships":{"event_bookings":{"data":[]},"proposal_alternatives":{"data":[]},"event_users":{"data":[]},"event_staff_members":{"data":[]},"event_staff_requests":{"data":[]},"contacts":{"data":[]},"notes":{"data":[]}}}]}}}}}},"post":{"summary":"Create an event","tags":["Proposals/Confirmed Bookings"],"description":"**Required permission:** `event_create`","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}}],"responses":{"200":{"description":"confirmed event created","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"100","type":"event","attributes":{"id":100,"title":"John Smith’s Paul","status":"confirmed","formatted_status":"Confirmed","formatted_status_with_context":"Confirmed","booked_at":"2026-06-09T13:56:04.347-07:00","created_at":"2026-06-09T13:56:04.350-07:00","created_via":"api","venue_name":null,"venue_address":null,"venue_city":null,"venue_state":null,"venue_zip":null,"venue_map_url":"https://www.google.com/maps/search/","venue_google_place_id":null,"public_notes":null,"private_notes":"","coupon_code":null,"photo_album_url":null,"photo_album_instructions":null,"video_url":null,"video_album_instructions":null,"completed":false,"canceled":false,"archived":false,"postponed":false,"invoice_number":"20260609-01","billable_distance":null,"total_distance":null,"distance_unit":null,"latitude":null,"longitude":null,"tax_rate":"0.0","source":null,"estimated_number_guests":null,"indoor_outdoor":null,"lead_event_type":null,"contact_preference":null,"po_number":null,"stair_setup":null,"token":"CHW-NPK7-C22","utm_source":null,"utm_campaign":null,"utm_medium":null,"utm_term":null,"utm_content":null,"gclid":null,"starts_at":"2023-12-31T11:00:00.000-08:00","ends_at":"2023-12-31T14:00:00.000-08:00","length_in_minutes":"180.0","length_in_hours":"3.0","starting_balance":"100.00","starting_balance_cents":10000,"starting_balance_currency":"USD","starting_balance_formatted":"$100.00","deposit_amount_due":"25.00","deposit_amount_due_cents":2500,"deposit_amount_due_currency":"USD","deposit_amount_due_formatted":"$25.00","custom_deposit_amount":null,"custom_deposit_amount_cents":null,"custom_deposit_amount_currency":null,"custom_deposit_amount_formatted":null,"balance_amount_due":"100.00","balance_amount_due_cents":10000,"balance_amount_due_currency":"USD","balance_amount_due_formatted":"$100.00","starts_at_date":"12-31-2023","starts_at_date_iso8601":"2023-12-31","starts_at_time":"11:00 AM","invoice_date":"06-09-2026","invoice_date_iso8601":"2026-06-09","proposal_theme":"classic","proposal_valid_through":null,"proposal_viewed_at":null,"next_follow_up_on":null,"package_name":"Paul","package_group_name":"Sample","service_name":"Photo booth 12","package_description_html":"","add_on_names":"","add_on_quantities_name_and_price":"","extra_names":"","extra_quantities_name_and_price":"","backdrop_names":"","backdrop_name_and_price":"","design_statuses":null,"due_at":"2026-06-09T00:00:00.000-07:00","customer_ids":"349","customer_names":"John Smith","customer_emails":"jsmith@example.com","customer_phones":"555-555-5555","customer_addresses":"","customer_and_contact_ids":"349","customer_and_contact_names":"John Smith","customer_and_contact_emails":"jsmith@example.com","customer_and_contact_phones":"555-555-5555","additional_contact_ids":"","additional_contact_names":"","additional_contact_emails":"","additional_contact_phones":"","assigned_staff_ids":"","assigned_staff_names":"","assigned_staff_abbreviations":"","assigned_staff_emails":"","change_summary":null,"brand_id":771,"brand_name":"Lindgren, Frami and DuBuque 193","primary_image":{"hero_variant":null},"booked_at_description":"Booked less than a minute ago via Api","current_user_assigned":false,"event_url":"https://test-193-33715fb6.cc.localhost/events/100-john-smith-s-paul?token=CHW-NPK7-C22","questionnaires_url":"https://test-193-33715fb6.cc.localhost/events/100-john-smith-s-paul/forms?token=CHW-NPK7-C22","payment_url":"https://test-193-33715fb6.cc.localhost/events/100-john-smith-s-paul/payments/new?token=CHW-NPK7-C22","invoice_url":"https://test-193-33715fb6.cc.localhost/events/100-john-smith-s-paul/invoice?token=CHW-NPK7-C22","designs_url":"https://test-193-33715fb6.cc.localhost/events/100-john-smith-s-paul/designs?token=CHW-NPK7-C22","proposal_url":null,"referred_by_user_id":null,"referred_by_user_name":null,"referred_by_user_email":null,"custom_fields":[]},"relationships":{"event_bookings":{"data":[{"id":"13","type":"event_booking"}]},"proposal_alternatives":{"data":[]},"event_users":{"data":[{"id":"2","type":"event_user"}]},"event_staff_members":{"data":[]},"event_staff_requests":{"data":[]},"contacts":{"data":[]},"notes":{"data":[]}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"is_proposal":{"type":"boolean","description":"Set to true to create a proposal"},"proposal_date_reserved":{"type":"boolean","description":"Reserve the date?"},"signature_collected":{"type":"boolean","description":"Has signature been collected?"},"contact_type":{"type":"string","description":"Contact Type"},"contact_name":{"type":"string","description":"Contact's Name"},"contact_email":{"type":"string","description":"Contact's Email"},"contact_phone":{"type":"string","description":"Contact's Phone"},"send_contact_invitation_to_create_account":{"type":"boolean"},"send_booking_confirmation_emails":{"type":"boolean"},"quick_event_bookings_attributes":{"type":"array","items":{"type":"object","properties":{"event_type_id":{"type":"integer","description":"Package ID"},"starts_at_date":{"type":"string","description":"Starts At Date"},"starts_at_time":{"type":"string","description":"Starts At Time"},"length_in_minutes":{"type":"integer","description":"Length in Minutes"}},"required":["event_type_id","starts_at_date"]}}},"required":["contact_type"]}}}}}},"/api/v1/events/{event_id}":{"get":{"summary":"Fetch event by ID","tags":["Proposals/Confirmed Bookings"],"description":"Returns the full details of a single event, including status, venue, pricing, and contact information.\n\nUse the `include` query parameter to sideload related resources (comma-separated). Available: `event_bookings`, `proposal_alternatives`, `event_users`, `event_staff_members`, `event_staff_requests`, `contacts`, `notes`. Nested includes are also supported — e.g. `?include=event_bookings.event_add_ons` will include add-ons within each booking. Other nested includes: `event_bookings.event_extras`, `event_bookings.event_photobooth_background`, `event_bookings.event_booking_extra_categories`.\n\n**Required permission:** `assigned_event_read` or `unassigned_event_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"event_id","in":"path","description":"Event ID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"event found","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"101","type":"event","attributes":{"id":101,"title":"Sarah and John's Wedding","status":"confirmed","formatted_status":"Confirmed","formatted_status_with_context":"Confirmed","booked_at":"2026-06-09T13:56:04.597-07:00","created_at":"2026-06-09T13:56:04.598-07:00","created_via":"quick_add","venue_name":"The Mission Inn","venue_address":"123 Some St","venue_city":"Riverside","venue_state":"CA","venue_zip":"92506","venue_map_url":"https://www.google.com/maps/search/123+Some+St%2C+Riverside%2C+CA%2C+92506","venue_google_place_id":null,"public_notes":null,"private_notes":"","coupon_code":null,"photo_album_url":null,"photo_album_instructions":null,"video_url":null,"video_album_instructions":null,"completed":false,"canceled":false,"archived":false,"postponed":false,"invoice_number":null,"billable_distance":null,"total_distance":null,"distance_unit":null,"latitude":null,"longitude":null,"tax_rate":"0.0","source":null,"estimated_number_guests":null,"indoor_outdoor":null,"lead_event_type":null,"contact_preference":null,"po_number":null,"stair_setup":null,"token":"EH7-3E4E-V2X","utm_source":null,"utm_campaign":null,"utm_medium":null,"utm_term":null,"utm_content":null,"gclid":null,"starts_at":"2026-06-16T13:56:04.554-07:00","ends_at":"2026-06-16T16:56:04.554-07:00","length_in_minutes":"","length_in_hours":"","starting_balance":"0.00","starting_balance_cents":0,"starting_balance_currency":"USD","starting_balance_formatted":"$0.00","deposit_amount_due":"0.00","deposit_amount_due_cents":0,"deposit_amount_due_currency":"USD","deposit_amount_due_formatted":"$0.00","custom_deposit_amount":null,"custom_deposit_amount_cents":null,"custom_deposit_amount_currency":null,"custom_deposit_amount_formatted":null,"balance_amount_due":"0.00","balance_amount_due_cents":0,"balance_amount_due_currency":"USD","balance_amount_due_formatted":"$0.00","starts_at_date":"06-16-2026","starts_at_date_iso8601":"2026-06-16","starts_at_time":"1:56 PM","invoice_date":"06-09-2026","invoice_date_iso8601":"2026-06-09","proposal_theme":"classic","proposal_valid_through":null,"proposal_viewed_at":null,"next_follow_up_on":null,"package_name":"","package_group_name":"","service_name":"","package_description_html":"","add_on_names":"","add_on_quantities_name_and_price":"","extra_names":"","extra_quantities_name_and_price":"","backdrop_names":"","backdrop_name_and_price":"","design_statuses":null,"due_at":"2026-06-16T00:00:00.000-07:00","customer_ids":"","customer_names":"","customer_emails":"","customer_phones":"","customer_addresses":"","customer_and_contact_ids":"","customer_and_contact_names":"","customer_and_contact_emails":"","customer_and_contact_phones":"","additional_contact_ids":"","additional_contact_names":"","additional_contact_emails":"","additional_contact_phones":"","assigned_staff_ids":"","assigned_staff_names":"","assigned_staff_abbreviations":"","assigned_staff_emails":"","change_summary":null,"brand_id":775,"brand_name":"Huels-Shields 196","primary_image":{"hero_variant":null},"booked_at_description":"Booked less than a minute ago via Quick add","current_user_assigned":false,"event_url":"https://test-197-ca94fd66.cc.localhost/events/101-sarah-and-john-s-wedding?token=EH7-3E4E-V2X","questionnaires_url":"https://test-197-ca94fd66.cc.localhost/events/101-sarah-and-john-s-wedding/forms?token=EH7-3E4E-V2X","payment_url":"https://test-197-ca94fd66.cc.localhost/events/101-sarah-and-john-s-wedding/payments/new?token=EH7-3E4E-V2X","invoice_url":"https://test-197-ca94fd66.cc.localhost/events/101-sarah-and-john-s-wedding/invoice?token=EH7-3E4E-V2X","designs_url":"https://test-197-ca94fd66.cc.localhost/events/101-sarah-and-john-s-wedding/designs?token=EH7-3E4E-V2X","proposal_url":null,"referred_by_user_id":null,"referred_by_user_name":null,"referred_by_user_email":null,"custom_fields":[]},"relationships":{"event_bookings":{"data":[]},"proposal_alternatives":{"data":[]},"event_users":{"data":[]},"event_staff_members":{"data":[]},"event_staff_requests":{"data":[]},"contacts":{"data":[]},"notes":{"data":[]}}}}}}}}},"put":{"summary":"Update an event","tags":["Proposals/Confirmed Bookings"],"description":"**Required permission:** `assigned_event_write` or `unassigned_event_write`","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"event_id","in":"path","description":"Event ID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"event updated","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"102","type":"event","attributes":{"id":102,"title":"Sarah and John's Wedding","status":"confirmed","formatted_status":"Confirmed","formatted_status_with_context":"Confirmed","booked_at":"2026-06-09T13:56:04.731-07:00","created_at":"2026-06-09T13:56:04.732-07:00","created_via":"quick_add","venue_name":"The Mission Inn","venue_address":"123 Some St","venue_city":"Riverside","venue_state":"CA","venue_zip":"92506","venue_map_url":"https://www.google.com/maps/search/123+Some+St%2C+Riverside%2C+CA%2C+92506","venue_google_place_id":null,"public_notes":"Updated notes for the customer","private_notes":"","coupon_code":null,"photo_album_url":null,"photo_album_instructions":null,"video_url":null,"video_album_instructions":null,"completed":false,"canceled":false,"archived":false,"postponed":false,"invoice_number":null,"billable_distance":null,"total_distance":null,"distance_unit":null,"latitude":null,"longitude":null,"tax_rate":"0.0","source":null,"estimated_number_guests":null,"indoor_outdoor":null,"lead_event_type":null,"contact_preference":null,"po_number":null,"stair_setup":null,"token":"7WH-PAR2-JMG","utm_source":null,"utm_campaign":null,"utm_medium":null,"utm_term":null,"utm_content":null,"gclid":null,"starts_at":"2026-06-16T13:56:04.691-07:00","ends_at":"2026-06-16T16:56:04.691-07:00","length_in_minutes":"","length_in_hours":"","starting_balance":"0.00","starting_balance_cents":0,"starting_balance_currency":"USD","starting_balance_formatted":"$0.00","deposit_amount_due":"0.00","deposit_amount_due_cents":0,"deposit_amount_due_currency":"USD","deposit_amount_due_formatted":"$0.00","custom_deposit_amount":null,"custom_deposit_amount_cents":null,"custom_deposit_amount_currency":null,"custom_deposit_amount_formatted":null,"balance_amount_due":"0.00","balance_amount_due_cents":0,"balance_amount_due_currency":"USD","balance_amount_due_formatted":"$0.00","starts_at_date":"06-16-2026","starts_at_date_iso8601":"2026-06-16","starts_at_time":"1:56 PM","invoice_date":"06-09-2026","invoice_date_iso8601":"2026-06-09","proposal_theme":"classic","proposal_valid_through":null,"proposal_viewed_at":null,"next_follow_up_on":null,"package_name":"","package_group_name":"","service_name":"","package_description_html":"","add_on_names":"","add_on_quantities_name_and_price":"","extra_names":"","extra_quantities_name_and_price":"","backdrop_names":"","backdrop_name_and_price":"","design_statuses":null,"due_at":"2026-06-16T00:00:00.000-07:00","customer_ids":"","customer_names":"","customer_emails":"","customer_phones":"","customer_addresses":"","customer_and_contact_ids":"","customer_and_contact_names":"","customer_and_contact_emails":"","customer_and_contact_phones":"","additional_contact_ids":"","additional_contact_names":"","additional_contact_emails":"","additional_contact_phones":"","assigned_staff_ids":"","assigned_staff_names":"","assigned_staff_abbreviations":"","assigned_staff_emails":"","change_summary":null,"brand_id":778,"brand_name":"Hauck and Sons 199","primary_image":{"hero_variant":null},"booked_at_description":"Booked less than a minute ago via Quick add","current_user_assigned":false,"event_url":"https://test-200-d60d1aa8.cc.localhost/events/102-sarah-and-john-s-wedding?token=7WH-PAR2-JMG","questionnaires_url":"https://test-200-d60d1aa8.cc.localhost/events/102-sarah-and-john-s-wedding/forms?token=7WH-PAR2-JMG","payment_url":"https://test-200-d60d1aa8.cc.localhost/events/102-sarah-and-john-s-wedding/payments/new?token=7WH-PAR2-JMG","invoice_url":"https://test-200-d60d1aa8.cc.localhost/events/102-sarah-and-john-s-wedding/invoice?token=7WH-PAR2-JMG","designs_url":"https://test-200-d60d1aa8.cc.localhost/events/102-sarah-and-john-s-wedding/designs?token=7WH-PAR2-JMG","proposal_url":null,"referred_by_user_id":null,"referred_by_user_name":null,"referred_by_user_email":null,"custom_fields":[]},"relationships":{"event_bookings":{"data":[]},"proposal_alternatives":{"data":[]},"event_users":{"data":[]},"event_staff_members":{"data":[]},"event_staff_requests":{"data":[]},"contacts":{"data":[]},"notes":{"data":[]}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"public_notes":{"type":"string","description":"Public notes visible to the customer"},"photo_album_url":{"type":"string","description":"URL to the photo album"},"photo_album_instructions":{"type":"string","description":"Instructions for the photo album"},"video_url":{"type":"string","description":"URL to the video"},"video_album_instructions":{"type":"string","description":"Instructions for the video album"},"next_follow_up_on":{"type":"string","description":"Next follow-up date (YYYY-MM-DD)"}}}}}}},"delete":{"summary":"Delete an event","tags":["Proposals/Confirmed Bookings"],"description":"**Required permission:** `assigned_event_write` or `unassigned_event_write`","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"event_id","in":"path","description":"Event ID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"event deleted","content":{"application/json":{"example":{"meta":{"status":"ok"}}}}}}}},"/api/v1/events/{event_id}/update_location":{"put":{"summary":"Update event location","tags":["Proposals/Confirmed Bookings"],"description":"Update the venue/location for an event. Can optionally recalculate tax and travel fees based on the new location.\n\n**Required permission:** `assigned_event_write` or `unassigned_event_write`","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"event_id","in":"path","description":"Event ID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"location updated","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"104","type":"event","attributes":{"id":104,"title":"Sarah and John's Wedding","status":"confirmed","formatted_status":"Confirmed","formatted_status_with_context":"Confirmed","booked_at":"2026-06-09T13:56:04.965-07:00","created_at":"2026-06-09T13:56:04.966-07:00","created_via":"quick_add","venue_name":"The Grand Ballroom","venue_address":"123 Main St","venue_city":"Austin","venue_state":"TX","venue_zip":"78701","venue_map_url":"https://www.google.com/maps/search/123+Main+St%2C+Austin%2C+TX%2C+78701","venue_google_place_id":null,"public_notes":null,"private_notes":"","coupon_code":null,"photo_album_url":null,"photo_album_instructions":null,"video_url":null,"video_album_instructions":null,"completed":false,"canceled":false,"archived":false,"postponed":false,"invoice_number":null,"billable_distance":null,"total_distance":null,"distance_unit":null,"latitude":null,"longitude":null,"tax_rate":"0.0","source":null,"estimated_number_guests":null,"indoor_outdoor":null,"lead_event_type":null,"contact_preference":null,"po_number":null,"stair_setup":null,"token":"K4G-QKXE-KXW","utm_source":null,"utm_campaign":null,"utm_medium":null,"utm_term":null,"utm_content":null,"gclid":null,"starts_at":"2026-06-16T13:56:04.929-07:00","ends_at":"2026-06-16T16:56:04.929-07:00","length_in_minutes":"","length_in_hours":"","starting_balance":"0.00","starting_balance_cents":0,"starting_balance_currency":"USD","starting_balance_formatted":"$0.00","deposit_amount_due":"0.00","deposit_amount_due_cents":0,"deposit_amount_due_currency":"USD","deposit_amount_due_formatted":"$0.00","custom_deposit_amount":null,"custom_deposit_amount_cents":null,"custom_deposit_amount_currency":null,"custom_deposit_amount_formatted":null,"balance_amount_due":"0.00","balance_amount_due_cents":0,"balance_amount_due_currency":"USD","balance_amount_due_formatted":"$0.00","starts_at_date":"06-16-2026","starts_at_date_iso8601":"2026-06-16","starts_at_time":"1:56 PM","invoice_date":"06-09-2026","invoice_date_iso8601":"2026-06-09","proposal_theme":"classic","proposal_valid_through":null,"proposal_viewed_at":null,"next_follow_up_on":null,"package_name":"","package_group_name":"","service_name":"","package_description_html":"","add_on_names":"","add_on_quantities_name_and_price":"","extra_names":"","extra_quantities_name_and_price":"","backdrop_names":"","backdrop_name_and_price":"","design_statuses":null,"due_at":"2026-06-16T00:00:00.000-07:00","customer_ids":"","customer_names":"","customer_emails":"","customer_phones":"","customer_addresses":"","customer_and_contact_ids":"","customer_and_contact_names":"","customer_and_contact_emails":"","customer_and_contact_phones":"","additional_contact_ids":"","additional_contact_names":"","additional_contact_emails":"","additional_contact_phones":"","assigned_staff_ids":"","assigned_staff_names":"","assigned_staff_abbreviations":"","assigned_staff_emails":"","change_summary":null,"brand_id":784,"brand_name":"Kris Inc 205","primary_image":{"hero_variant":null},"booked_at_description":"Booked less than a minute ago via Quick add","current_user_assigned":false,"event_url":"https://test-206-cf9f9f30.cc.localhost/events/104-sarah-and-john-s-wedding?token=K4G-QKXE-KXW","questionnaires_url":"https://test-206-cf9f9f30.cc.localhost/events/104-sarah-and-john-s-wedding/forms?token=K4G-QKXE-KXW","payment_url":"https://test-206-cf9f9f30.cc.localhost/events/104-sarah-and-john-s-wedding/payments/new?token=K4G-QKXE-KXW","invoice_url":"https://test-206-cf9f9f30.cc.localhost/events/104-sarah-and-john-s-wedding/invoice?token=K4G-QKXE-KXW","designs_url":"https://test-206-cf9f9f30.cc.localhost/events/104-sarah-and-john-s-wedding/designs?token=K4G-QKXE-KXW","proposal_url":null,"referred_by_user_id":null,"referred_by_user_name":null,"referred_by_user_email":null,"custom_fields":[]},"relationships":{"event_bookings":{"data":[]},"proposal_alternatives":{"data":[]},"event_users":{"data":[]},"event_staff_members":{"data":[]},"event_staff_requests":{"data":[]},"contacts":{"data":[]},"notes":{"data":[]}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"google_place_id":{"type":"string","description":"Google Place ID for the venue"},"venue_name":{"type":"string","description":"Name of the venue"},"venue_address":{"type":"string","description":"Street address"},"venue_city":{"type":"string","description":"City"},"venue_state":{"type":"string","description":"State"},"venue_zip":{"type":"string","description":"ZIP/Postal code"},"latitude":{"type":"number","description":"Latitude coordinate"},"longitude":{"type":"number","description":"Longitude coordinate"},"recalculate_tax":{"type":"boolean","description":"Recalculate tax based on new location"},"recalculate_travel":{"type":"boolean","description":"Recalculate travel fee based on new location"}}}}}}}},"/api/v1/events/{event_id}/update_status":{"put":{"summary":"Update event status","tags":["Proposals/Confirmed Bookings"],"description":"Update the status of an event (e.g. convert a proposal to a confirmed booking).\n\n**Required permission:** `assigned_event_write` or `unassigned_event_write`","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"event_id","in":"path","description":"Event ID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"status updated","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"105","type":"event","attributes":{"id":105,"title":"Sarah and John's Wedding","status":"confirmed","formatted_status":"Confirmed","formatted_status_with_context":"Confirmed","booked_at":"2026-06-09T13:56:05.229-07:00","created_at":"2026-06-09T13:56:05.159-07:00","created_via":"quick_add","venue_name":"The Mission Inn","venue_address":"123 Some St","venue_city":"Riverside","venue_state":"CA","venue_zip":"92506","venue_map_url":"https://www.google.com/maps/search/123+Some+St%2C+Riverside%2C+CA%2C+92506","venue_google_place_id":null,"public_notes":null,"private_notes":"","coupon_code":null,"photo_album_url":null,"photo_album_instructions":null,"video_url":null,"video_album_instructions":null,"completed":false,"canceled":false,"archived":false,"postponed":false,"invoice_number":null,"billable_distance":null,"total_distance":null,"distance_unit":null,"latitude":null,"longitude":null,"tax_rate":"0.0","source":null,"estimated_number_guests":null,"indoor_outdoor":null,"lead_event_type":null,"contact_preference":null,"po_number":null,"stair_setup":null,"token":"GPZ-QA2Y-NVP","utm_source":null,"utm_campaign":null,"utm_medium":null,"utm_term":null,"utm_content":null,"gclid":null,"starts_at":"2026-06-16T13:56:05.118-07:00","ends_at":"2026-06-16T16:56:05.118-07:00","length_in_minutes":"","length_in_hours":"","starting_balance":"0.00","starting_balance_cents":0,"starting_balance_currency":"USD","starting_balance_formatted":"$0.00","deposit_amount_due":"0.00","deposit_amount_due_cents":0,"deposit_amount_due_currency":"USD","deposit_amount_due_formatted":"$0.00","custom_deposit_amount":null,"custom_deposit_amount_cents":null,"custom_deposit_amount_currency":null,"custom_deposit_amount_formatted":null,"balance_amount_due":"0.00","balance_amount_due_cents":0,"balance_amount_due_currency":"USD","balance_amount_due_formatted":"$0.00","starts_at_date":"06-16-2026","starts_at_date_iso8601":"2026-06-16","starts_at_time":"1:56 PM","invoice_date":"06-09-2026","invoice_date_iso8601":"2026-06-09","proposal_theme":"classic","proposal_valid_through":null,"proposal_viewed_at":null,"next_follow_up_on":null,"package_name":"","package_group_name":"","service_name":"","package_description_html":"","add_on_names":"","add_on_quantities_name_and_price":"","extra_names":"","extra_quantities_name_and_price":"","backdrop_names":"","backdrop_name_and_price":"","design_statuses":null,"due_at":"2026-06-16T00:00:00.000-07:00","customer_ids":"","customer_names":"","customer_emails":"","customer_phones":"","customer_addresses":"","customer_and_contact_ids":"","customer_and_contact_names":"","customer_and_contact_emails":"","customer_and_contact_phones":"","additional_contact_ids":"","additional_contact_names":"","additional_contact_emails":"","additional_contact_phones":"","assigned_staff_ids":"","assigned_staff_names":"","assigned_staff_abbreviations":"","assigned_staff_emails":"","change_summary":null,"brand_id":787,"brand_name":"Zboncak, Deckow and Lueilwitz 208","primary_image":{"hero_variant":null},"booked_at_description":"Booked less than a minute ago via Quick add","current_user_assigned":false,"event_url":"https://test-209-ab1996fb.cc.localhost/events/105-sarah-and-john-s-wedding?token=GPZ-QA2Y-NVP","questionnaires_url":"https://test-209-ab1996fb.cc.localhost/events/105-sarah-and-john-s-wedding/forms?token=GPZ-QA2Y-NVP","payment_url":"https://test-209-ab1996fb.cc.localhost/events/105-sarah-and-john-s-wedding/payments/new?token=GPZ-QA2Y-NVP","invoice_url":"https://test-209-ab1996fb.cc.localhost/events/105-sarah-and-john-s-wedding/invoice?token=GPZ-QA2Y-NVP","designs_url":"https://test-209-ab1996fb.cc.localhost/events/105-sarah-and-john-s-wedding/designs?token=GPZ-QA2Y-NVP","proposal_url":null,"referred_by_user_id":null,"referred_by_user_name":null,"referred_by_user_email":null,"custom_fields":[]},"relationships":{"event_bookings":{"data":[]},"proposal_alternatives":{"data":[]},"event_users":{"data":[]},"event_staff_members":{"data":[]},"event_staff_requests":{"data":[]},"contacts":{"data":[]},"notes":{"data":[]}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","description":"New status for the event"},"postponed":{"type":"boolean","description":"Mark as postponed"},"canceled":{"type":"boolean","description":"Mark as canceled"},"send_booking_confirmation_emails":{"type":"boolean","description":"Send booking confirmation emails"},"send_contact_invitation_to_create_account":{"type":"boolean","description":"Send contact an invitation to create an account"}}}}}}}},"/api/v1/events/{event_id}/update_settings":{"put":{"summary":"Update event settings","tags":["Proposals/Confirmed Bookings"],"description":"Update event settings such as title, due date, invoice date, deposit amount, tax rate, and brand.\n\n**Required permission:** `assigned_event_write` or `unassigned_event_write`","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"event_id","in":"path","description":"Event ID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"settings updated","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"106","type":"event","attributes":{"id":106,"title":"Updated Event Title","status":"confirmed","formatted_status":"Confirmed","formatted_status_with_context":"Confirmed","booked_at":"2026-06-09T13:56:05.346-07:00","created_at":"2026-06-09T13:56:05.347-07:00","created_via":"quick_add","venue_name":"The Mission Inn","venue_address":"123 Some St","venue_city":"Riverside","venue_state":"CA","venue_zip":"92506","venue_map_url":"https://www.google.com/maps/search/123+Some+St%2C+Riverside%2C+CA%2C+92506","venue_google_place_id":null,"public_notes":null,"private_notes":"","coupon_code":null,"photo_album_url":null,"photo_album_instructions":null,"video_url":null,"video_album_instructions":null,"completed":false,"canceled":false,"archived":false,"postponed":false,"invoice_number":null,"billable_distance":null,"total_distance":null,"distance_unit":null,"latitude":null,"longitude":null,"tax_rate":"0.0","source":null,"estimated_number_guests":null,"indoor_outdoor":null,"lead_event_type":null,"contact_preference":null,"po_number":null,"stair_setup":null,"token":"C36-HAP7-CQW","utm_source":null,"utm_campaign":null,"utm_medium":null,"utm_term":null,"utm_content":null,"gclid":null,"starts_at":"2026-06-16T13:56:05.296-07:00","ends_at":"2026-06-16T16:56:05.297-07:00","length_in_minutes":"","length_in_hours":"","starting_balance":"0.00","starting_balance_cents":0,"starting_balance_currency":"USD","starting_balance_formatted":"$0.00","deposit_amount_due":"0.00","deposit_amount_due_cents":0,"deposit_amount_due_currency":"USD","deposit_amount_due_formatted":"$0.00","custom_deposit_amount":null,"custom_deposit_amount_cents":null,"custom_deposit_amount_currency":null,"custom_deposit_amount_formatted":null,"balance_amount_due":"0.00","balance_amount_due_cents":0,"balance_amount_due_currency":"USD","balance_amount_due_formatted":"$0.00","starts_at_date":"06-16-2026","starts_at_date_iso8601":"2026-06-16","starts_at_time":"1:56 PM","invoice_date":"06-09-2026","invoice_date_iso8601":"2026-06-09","proposal_theme":"classic","proposal_valid_through":null,"proposal_viewed_at":null,"next_follow_up_on":null,"package_name":"","package_group_name":"","service_name":"","package_description_html":"","add_on_names":"","add_on_quantities_name_and_price":"","extra_names":"","extra_quantities_name_and_price":"","backdrop_names":"","backdrop_name_and_price":"","design_statuses":null,"due_at":"2026-06-16T00:00:00.000-07:00","customer_ids":"","customer_names":"","customer_emails":"","customer_phones":"","customer_addresses":"","customer_and_contact_ids":"","customer_and_contact_names":"","customer_and_contact_emails":"","customer_and_contact_phones":"","additional_contact_ids":"","additional_contact_names":"","additional_contact_emails":"","additional_contact_phones":"","assigned_staff_ids":"","assigned_staff_names":"","assigned_staff_abbreviations":"","assigned_staff_emails":"","change_summary":null,"brand_id":790,"brand_name":"Schiller, Will and Abbott 211","primary_image":{"hero_variant":null},"booked_at_description":"Booked less than a minute ago via Quick add","current_user_assigned":false,"event_url":"https://test-212-5b6b907c.cc.localhost/events/106-updated-event-title?token=C36-HAP7-CQW","questionnaires_url":"https://test-212-5b6b907c.cc.localhost/events/106-updated-event-title/forms?token=C36-HAP7-CQW","payment_url":"https://test-212-5b6b907c.cc.localhost/events/106-updated-event-title/payments/new?token=C36-HAP7-CQW","invoice_url":"https://test-212-5b6b907c.cc.localhost/events/106-updated-event-title/invoice?token=C36-HAP7-CQW","designs_url":"https://test-212-5b6b907c.cc.localhost/events/106-updated-event-title/designs?token=C36-HAP7-CQW","proposal_url":null,"referred_by_user_id":null,"referred_by_user_name":null,"referred_by_user_email":null,"custom_fields":[]},"relationships":{"event_bookings":{"data":[]},"proposal_alternatives":{"data":[]},"event_users":{"data":[]},"event_staff_members":{"data":[]},"event_staff_requests":{"data":[]},"contacts":{"data":[]},"notes":{"data":[]}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","description":"Event title"},"due_at":{"type":"string","description":"Payment due date (YYYY-MM-DD)"},"invoice_date":{"type":"string","description":"Invoice date (YYYY-MM-DD)"},"proposal_valid_through":{"type":"string","description":"Proposal valid through date (YYYY-MM-DD)"},"custom_deposit_amount":{"type":"number","description":"Custom deposit amount"},"tax_rate":{"type":"number","description":"Tax rate (e.g. 8.25)"},"brand_id":{"type":"integer","description":"Brand ID"}}}}}}}},"/api/v1/events/{event_id}/cancel":{"put":{"summary":"Cancel an event","tags":["Proposals/Confirmed Bookings"],"description":"Cancel an event with an optional reason and option to send cancellation messages to contacts.\n\n**Required permission:** `assigned_event_write` or `unassigned_event_write`","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"event_id","in":"path","description":"Event ID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"event canceled","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"107","type":"event","attributes":{"id":107,"title":"Sarah and John's Wedding","status":"confirmed","formatted_status":"Confirmed","formatted_status_with_context":"Canceled Booking","booked_at":"2026-06-09T13:56:05.535-07:00","created_at":"2026-06-09T13:56:05.536-07:00","created_via":"quick_add","venue_name":"The Mission Inn","venue_address":"123 Some St","venue_city":"Riverside","venue_state":"CA","venue_zip":"92506","venue_map_url":"https://www.google.com/maps/search/123+Some+St%2C+Riverside%2C+CA%2C+92506","venue_google_place_id":null,"public_notes":null,"private_notes":"","coupon_code":null,"photo_album_url":null,"photo_album_instructions":null,"video_url":null,"video_album_instructions":null,"completed":false,"canceled":true,"archived":false,"postponed":false,"invoice_number":null,"billable_distance":null,"total_distance":null,"distance_unit":null,"latitude":null,"longitude":null,"tax_rate":"0.0","source":null,"estimated_number_guests":null,"indoor_outdoor":null,"lead_event_type":null,"contact_preference":null,"po_number":null,"stair_setup":null,"token":"V6H-KR6A-PKG","utm_source":null,"utm_campaign":null,"utm_medium":null,"utm_term":null,"utm_content":null,"gclid":null,"starts_at":"2026-06-16T13:56:05.496-07:00","ends_at":"2026-06-16T16:56:05.496-07:00","length_in_minutes":"","length_in_hours":"","starting_balance":"0.00","starting_balance_cents":0,"starting_balance_currency":"USD","starting_balance_formatted":"$0.00","deposit_amount_due":"0.00","deposit_amount_due_cents":0,"deposit_amount_due_currency":"USD","deposit_amount_due_formatted":"$0.00","custom_deposit_amount":null,"custom_deposit_amount_cents":null,"custom_deposit_amount_currency":null,"custom_deposit_amount_formatted":null,"balance_amount_due":"0.00","balance_amount_due_cents":0,"balance_amount_due_currency":"USD","balance_amount_due_formatted":"$0.00","starts_at_date":"06-16-2026","starts_at_date_iso8601":"2026-06-16","starts_at_time":"1:56 PM","invoice_date":"06-09-2026","invoice_date_iso8601":"2026-06-09","proposal_theme":"classic","proposal_valid_through":null,"proposal_viewed_at":null,"next_follow_up_on":null,"package_name":"","package_group_name":"","service_name":"","package_description_html":"","add_on_names":"","add_on_quantities_name_and_price":"","extra_names":"","extra_quantities_name_and_price":"","backdrop_names":"","backdrop_name_and_price":"","design_statuses":null,"due_at":"2026-06-16T00:00:00.000-07:00","customer_ids":"","customer_names":"","customer_emails":"","customer_phones":"","customer_addresses":"","customer_and_contact_ids":"","customer_and_contact_names":"","customer_and_contact_emails":"","customer_and_contact_phones":"","additional_contact_ids":"","additional_contact_names":"","additional_contact_emails":"","additional_contact_phones":"","assigned_staff_ids":"","assigned_staff_names":"","assigned_staff_abbreviations":"","assigned_staff_emails":"","change_summary":null,"brand_id":793,"brand_name":"Kirlin, Beier and O'Hara 214","primary_image":{"hero_variant":null},"booked_at_description":"Booked less than a minute ago via Quick add","current_user_assigned":false,"event_url":"https://test-215-fcd9e1fd.cc.localhost/events/107-sarah-and-john-s-wedding?token=V6H-KR6A-PKG","questionnaires_url":"https://test-215-fcd9e1fd.cc.localhost/events/107-sarah-and-john-s-wedding/forms?token=V6H-KR6A-PKG","payment_url":"https://test-215-fcd9e1fd.cc.localhost/events/107-sarah-and-john-s-wedding/payments/new?token=V6H-KR6A-PKG","invoice_url":"https://test-215-fcd9e1fd.cc.localhost/events/107-sarah-and-john-s-wedding/invoice?token=V6H-KR6A-PKG","designs_url":"https://test-215-fcd9e1fd.cc.localhost/events/107-sarah-and-john-s-wedding/designs?token=V6H-KR6A-PKG","proposal_url":null,"referred_by_user_id":null,"referred_by_user_name":null,"referred_by_user_email":null,"custom_fields":[]},"relationships":{"event_bookings":{"data":[]},"proposal_alternatives":{"data":[]},"event_users":{"data":[]},"event_staff_members":{"data":[]},"event_staff_requests":{"data":[]},"contacts":{"data":[]},"notes":{"data":[]}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"cancel_reason":{"type":"string","description":"Reason for cancellation"},"send_cancellation_messages":{"type":"boolean","description":"Send cancellation messages to contacts"}}}}}}}},"/api/v1/events/{event_id}/uncancel":{"put":{"summary":"Uncancel an event","tags":["Proposals/Confirmed Bookings"],"description":"Remove the canceled status from a previously canceled event.\n\n**Required permission:** `assigned_event_write` or `unassigned_event_write`","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"event_id","in":"path","description":"Event ID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"event uncanceled","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"108","type":"event","attributes":{"id":108,"title":"Sarah and John's Wedding","status":"confirmed","formatted_status":"Confirmed","formatted_status_with_context":"Confirmed","booked_at":"2026-06-09T13:56:05.720-07:00","created_at":"2026-06-09T13:56:05.721-07:00","created_via":"quick_add","venue_name":"The Mission Inn","venue_address":"123 Some St","venue_city":"Riverside","venue_state":"CA","venue_zip":"92506","venue_map_url":"https://www.google.com/maps/search/123+Some+St%2C+Riverside%2C+CA%2C+92506","venue_google_place_id":null,"public_notes":null,"private_notes":"","coupon_code":null,"photo_album_url":null,"photo_album_instructions":null,"video_url":null,"video_album_instructions":null,"completed":false,"canceled":false,"archived":false,"postponed":false,"invoice_number":null,"billable_distance":null,"total_distance":null,"distance_unit":null,"latitude":null,"longitude":null,"tax_rate":"0.0","source":null,"estimated_number_guests":null,"indoor_outdoor":null,"lead_event_type":null,"contact_preference":null,"po_number":null,"stair_setup":null,"token":"9FK-PHTR-ACF","utm_source":null,"utm_campaign":null,"utm_medium":null,"utm_term":null,"utm_content":null,"gclid":null,"starts_at":"2026-06-16T13:56:05.680-07:00","ends_at":"2026-06-16T16:56:05.680-07:00","length_in_minutes":"","length_in_hours":"","starting_balance":"0.00","starting_balance_cents":0,"starting_balance_currency":"USD","starting_balance_formatted":"$0.00","deposit_amount_due":"0.00","deposit_amount_due_cents":0,"deposit_amount_due_currency":"USD","deposit_amount_due_formatted":"$0.00","custom_deposit_amount":null,"custom_deposit_amount_cents":null,"custom_deposit_amount_currency":null,"custom_deposit_amount_formatted":null,"balance_amount_due":"0.00","balance_amount_due_cents":0,"balance_amount_due_currency":"USD","balance_amount_due_formatted":"$0.00","starts_at_date":"06-16-2026","starts_at_date_iso8601":"2026-06-16","starts_at_time":"1:56 PM","invoice_date":"06-09-2026","invoice_date_iso8601":"2026-06-09","proposal_theme":"classic","proposal_valid_through":null,"proposal_viewed_at":null,"next_follow_up_on":null,"package_name":"","package_group_name":"","service_name":"","package_description_html":"","add_on_names":"","add_on_quantities_name_and_price":"","extra_names":"","extra_quantities_name_and_price":"","backdrop_names":"","backdrop_name_and_price":"","design_statuses":null,"due_at":"2026-06-16T00:00:00.000-07:00","customer_ids":"","customer_names":"","customer_emails":"","customer_phones":"","customer_addresses":"","customer_and_contact_ids":"","customer_and_contact_names":"","customer_and_contact_emails":"","customer_and_contact_phones":"","additional_contact_ids":"","additional_contact_names":"","additional_contact_emails":"","additional_contact_phones":"","assigned_staff_ids":"","assigned_staff_names":"","assigned_staff_abbreviations":"","assigned_staff_emails":"","change_summary":null,"brand_id":796,"brand_name":"King LLC 217","primary_image":{"hero_variant":null},"booked_at_description":"Booked less than a minute ago via Quick add","current_user_assigned":false,"event_url":"https://test-218-88aa0f74.cc.localhost/events/108-sarah-and-john-s-wedding?token=9FK-PHTR-ACF","questionnaires_url":"https://test-218-88aa0f74.cc.localhost/events/108-sarah-and-john-s-wedding/forms?token=9FK-PHTR-ACF","payment_url":"https://test-218-88aa0f74.cc.localhost/events/108-sarah-and-john-s-wedding/payments/new?token=9FK-PHTR-ACF","invoice_url":"https://test-218-88aa0f74.cc.localhost/events/108-sarah-and-john-s-wedding/invoice?token=9FK-PHTR-ACF","designs_url":"https://test-218-88aa0f74.cc.localhost/events/108-sarah-and-john-s-wedding/designs?token=9FK-PHTR-ACF","proposal_url":null,"referred_by_user_id":null,"referred_by_user_name":null,"referred_by_user_email":null,"custom_fields":[]},"relationships":{"event_bookings":{"data":[]},"proposal_alternatives":{"data":[]},"event_users":{"data":[]},"event_staff_members":{"data":[]},"event_staff_requests":{"data":[]},"contacts":{"data":[]},"notes":{"data":[]}}}}}}}}}},"/api/v1/events/{event_id}/postpone":{"put":{"summary":"Postpone an event","tags":["Proposals/Confirmed Bookings"],"description":"Mark an event as postponed.\n\n**Required permission:** `assigned_event_write` or `unassigned_event_write`","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"event_id","in":"path","description":"Event ID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"event postponed","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"109","type":"event","attributes":{"id":109,"title":"Sarah and John's Wedding","status":"confirmed","formatted_status":"Confirmed","formatted_status_with_context":"Postponed Booking","booked_at":"2026-06-09T13:56:05.887-07:00","created_at":"2026-06-09T13:56:05.890-07:00","created_via":"quick_add","venue_name":"The Mission Inn","venue_address":"123 Some St","venue_city":"Riverside","venue_state":"CA","venue_zip":"92506","venue_map_url":"https://www.google.com/maps/search/123+Some+St%2C+Riverside%2C+CA%2C+92506","venue_google_place_id":null,"public_notes":null,"private_notes":"","coupon_code":null,"photo_album_url":null,"photo_album_instructions":null,"video_url":null,"video_album_instructions":null,"completed":false,"canceled":false,"archived":false,"postponed":true,"invoice_number":null,"billable_distance":null,"total_distance":null,"distance_unit":null,"latitude":null,"longitude":null,"tax_rate":"0.0","source":null,"estimated_number_guests":null,"indoor_outdoor":null,"lead_event_type":null,"contact_preference":null,"po_number":null,"stair_setup":null,"token":"DZR-RN9W-CGT","utm_source":null,"utm_campaign":null,"utm_medium":null,"utm_term":null,"utm_content":null,"gclid":null,"starts_at":"2026-06-16T13:56:05.809-07:00","ends_at":"2026-06-16T16:56:05.809-07:00","length_in_minutes":"","length_in_hours":"","starting_balance":"0.00","starting_balance_cents":0,"starting_balance_currency":"USD","starting_balance_formatted":"$0.00","deposit_amount_due":"0.00","deposit_amount_due_cents":0,"deposit_amount_due_currency":"USD","deposit_amount_due_formatted":"$0.00","custom_deposit_amount":null,"custom_deposit_amount_cents":null,"custom_deposit_amount_currency":null,"custom_deposit_amount_formatted":null,"balance_amount_due":"0.00","balance_amount_due_cents":0,"balance_amount_due_currency":"USD","balance_amount_due_formatted":"$0.00","starts_at_date":"06-16-2026","starts_at_date_iso8601":"2026-06-16","starts_at_time":"1:56 PM","invoice_date":"06-09-2026","invoice_date_iso8601":"2026-06-09","proposal_theme":"classic","proposal_valid_through":null,"proposal_viewed_at":null,"next_follow_up_on":null,"package_name":"","package_group_name":"","service_name":"","package_description_html":"","add_on_names":"","add_on_quantities_name_and_price":"","extra_names":"","extra_quantities_name_and_price":"","backdrop_names":"","backdrop_name_and_price":"","design_statuses":null,"due_at":"2026-06-16T00:00:00.000-07:00","customer_ids":"","customer_names":"","customer_emails":"","customer_phones":"","customer_addresses":"","customer_and_contact_ids":"","customer_and_contact_names":"","customer_and_contact_emails":"","customer_and_contact_phones":"","additional_contact_ids":"","additional_contact_names":"","additional_contact_emails":"","additional_contact_phones":"","assigned_staff_ids":"","assigned_staff_names":"","assigned_staff_abbreviations":"","assigned_staff_emails":"","change_summary":null,"brand_id":799,"brand_name":"Luettgen-Howe 220","primary_image":{"hero_variant":null},"booked_at_description":"Booked less than a minute ago via Quick add","current_user_assigned":false,"event_url":"https://test-221-063dbfd6.cc.localhost/events/109-sarah-and-john-s-wedding?token=DZR-RN9W-CGT","questionnaires_url":"https://test-221-063dbfd6.cc.localhost/events/109-sarah-and-john-s-wedding/forms?token=DZR-RN9W-CGT","payment_url":"https://test-221-063dbfd6.cc.localhost/events/109-sarah-and-john-s-wedding/payments/new?token=DZR-RN9W-CGT","invoice_url":"https://test-221-063dbfd6.cc.localhost/events/109-sarah-and-john-s-wedding/invoice?token=DZR-RN9W-CGT","designs_url":"https://test-221-063dbfd6.cc.localhost/events/109-sarah-and-john-s-wedding/designs?token=DZR-RN9W-CGT","proposal_url":null,"referred_by_user_id":null,"referred_by_user_name":null,"referred_by_user_email":null,"custom_fields":[]},"relationships":{"event_bookings":{"data":[]},"proposal_alternatives":{"data":[]},"event_users":{"data":[]},"event_staff_members":{"data":[]},"event_staff_requests":{"data":[]},"contacts":{"data":[]},"notes":{"data":[]}}}}}}}}}},"/api/v1/events/{event_id}/unpostpone":{"put":{"summary":"Unpostpone an event","tags":["Proposals/Confirmed Bookings"],"description":"Remove the postponed status from a previously postponed event.\n\n**Required permission:** `assigned_event_write` or `unassigned_event_write`","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"event_id","in":"path","description":"Event ID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"event unpostponed","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"110","type":"event","attributes":{"id":110,"title":"Sarah and John's Wedding","status":"confirmed","formatted_status":"Confirmed","formatted_status_with_context":"Confirmed","booked_at":"2026-06-09T13:56:06.066-07:00","created_at":"2026-06-09T13:56:06.067-07:00","created_via":"quick_add","venue_name":"The Mission Inn","venue_address":"123 Some St","venue_city":"Riverside","venue_state":"CA","venue_zip":"92506","venue_map_url":"https://www.google.com/maps/search/123+Some+St%2C+Riverside%2C+CA%2C+92506","venue_google_place_id":null,"public_notes":null,"private_notes":"","coupon_code":null,"photo_album_url":null,"photo_album_instructions":null,"video_url":null,"video_album_instructions":null,"completed":false,"canceled":false,"archived":false,"postponed":false,"invoice_number":null,"billable_distance":null,"total_distance":null,"distance_unit":null,"latitude":null,"longitude":null,"tax_rate":"0.0","source":null,"estimated_number_guests":null,"indoor_outdoor":null,"lead_event_type":null,"contact_preference":null,"po_number":null,"stair_setup":null,"token":"JA7-GJVJ-AQA","utm_source":null,"utm_campaign":null,"utm_medium":null,"utm_term":null,"utm_content":null,"gclid":null,"starts_at":"2026-06-16T13:56:06.025-07:00","ends_at":"2026-06-16T16:56:06.025-07:00","length_in_minutes":"","length_in_hours":"","starting_balance":"0.00","starting_balance_cents":0,"starting_balance_currency":"USD","starting_balance_formatted":"$0.00","deposit_amount_due":"0.00","deposit_amount_due_cents":0,"deposit_amount_due_currency":"USD","deposit_amount_due_formatted":"$0.00","custom_deposit_amount":null,"custom_deposit_amount_cents":null,"custom_deposit_amount_currency":null,"custom_deposit_amount_formatted":null,"balance_amount_due":"0.00","balance_amount_due_cents":0,"balance_amount_due_currency":"USD","balance_amount_due_formatted":"$0.00","starts_at_date":"06-16-2026","starts_at_date_iso8601":"2026-06-16","starts_at_time":"1:56 PM","invoice_date":"06-09-2026","invoice_date_iso8601":"2026-06-09","proposal_theme":"classic","proposal_valid_through":null,"proposal_viewed_at":null,"next_follow_up_on":null,"package_name":"","package_group_name":"","service_name":"","package_description_html":"","add_on_names":"","add_on_quantities_name_and_price":"","extra_names":"","extra_quantities_name_and_price":"","backdrop_names":"","backdrop_name_and_price":"","design_statuses":null,"due_at":"2026-06-16T00:00:00.000-07:00","customer_ids":"","customer_names":"","customer_emails":"","customer_phones":"","customer_addresses":"","customer_and_contact_ids":"","customer_and_contact_names":"","customer_and_contact_emails":"","customer_and_contact_phones":"","additional_contact_ids":"","additional_contact_names":"","additional_contact_emails":"","additional_contact_phones":"","assigned_staff_ids":"","assigned_staff_names":"","assigned_staff_abbreviations":"","assigned_staff_emails":"","change_summary":null,"brand_id":802,"brand_name":"Graham, Rempel and Bruen 223","primary_image":{"hero_variant":null},"booked_at_description":"Booked less than a minute ago via Quick add","current_user_assigned":false,"event_url":"https://test-224-d87a3125.cc.localhost/events/110-sarah-and-john-s-wedding?token=JA7-GJVJ-AQA","questionnaires_url":"https://test-224-d87a3125.cc.localhost/events/110-sarah-and-john-s-wedding/forms?token=JA7-GJVJ-AQA","payment_url":"https://test-224-d87a3125.cc.localhost/events/110-sarah-and-john-s-wedding/payments/new?token=JA7-GJVJ-AQA","invoice_url":"https://test-224-d87a3125.cc.localhost/events/110-sarah-and-john-s-wedding/invoice?token=JA7-GJVJ-AQA","designs_url":"https://test-224-d87a3125.cc.localhost/events/110-sarah-and-john-s-wedding/designs?token=JA7-GJVJ-AQA","proposal_url":null,"referred_by_user_id":null,"referred_by_user_name":null,"referred_by_user_email":null,"custom_fields":[]},"relationships":{"event_bookings":{"data":[]},"proposal_alternatives":{"data":[]},"event_users":{"data":[]},"event_staff_members":{"data":[]},"event_staff_requests":{"data":[]},"contacts":{"data":[]},"notes":{"data":[]}}}}}}}}}},"/api/v1/events/{event_id}/approve_proposal_awaiting_review":{"put":{"summary":"Approve a proposal awaiting review","tags":["Proposals/Confirmed Bookings"],"description":"Approve a proposal that is currently in the awaiting review state.\n\n**Required permission:** `assigned_event_write` or `unassigned_event_write`","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"event_id","in":"path","description":"Event ID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"proposal approved","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"111","type":"event","attributes":{"id":111,"title":"Sarah and John's Wedding","status":"proposal_date_reserved","formatted_status":"Proposal (Date Reserved)","formatted_status_with_context":"Proposal (Date Reserved)","booked_at":null,"created_at":"2026-06-09T13:56:06.191-07:00","created_via":"quick_add","venue_name":"The Mission Inn","venue_address":"123 Some St","venue_city":"Riverside","venue_state":"CA","venue_zip":"92506","venue_map_url":"https://www.google.com/maps/search/123+Some+St%2C+Riverside%2C+CA%2C+92506","venue_google_place_id":null,"public_notes":null,"private_notes":"","coupon_code":null,"photo_album_url":null,"photo_album_instructions":null,"video_url":null,"video_album_instructions":null,"completed":false,"canceled":false,"archived":false,"postponed":false,"invoice_number":null,"billable_distance":null,"total_distance":null,"distance_unit":null,"latitude":null,"longitude":null,"tax_rate":"0.0","source":null,"estimated_number_guests":null,"indoor_outdoor":null,"lead_event_type":null,"contact_preference":null,"po_number":null,"stair_setup":null,"token":"6P7-MFZ6-ZTZ","utm_source":null,"utm_campaign":null,"utm_medium":null,"utm_term":null,"utm_content":null,"gclid":null,"starts_at":"2026-06-16T13:56:06.153-07:00","ends_at":"2026-06-16T16:56:06.153-07:00","length_in_minutes":"","length_in_hours":"","starting_balance":"0.00","starting_balance_cents":0,"starting_balance_currency":"USD","starting_balance_formatted":"$0.00","deposit_amount_due":"0.00","deposit_amount_due_cents":0,"deposit_amount_due_currency":"USD","deposit_amount_due_formatted":"$0.00","custom_deposit_amount":null,"custom_deposit_amount_cents":null,"custom_deposit_amount_currency":null,"custom_deposit_amount_formatted":null,"balance_amount_due":"0.00","balance_amount_due_cents":0,"balance_amount_due_currency":"USD","balance_amount_due_formatted":"$0.00","starts_at_date":"06-16-2026","starts_at_date_iso8601":"2026-06-16","starts_at_time":"1:56 PM","invoice_date":"06-09-2026","invoice_date_iso8601":"2026-06-09","proposal_theme":"classic","proposal_valid_through":null,"proposal_viewed_at":null,"next_follow_up_on":null,"package_name":"","package_group_name":"","service_name":"","package_description_html":"","add_on_names":"","add_on_quantities_name_and_price":"","extra_names":"","extra_quantities_name_and_price":"","backdrop_names":"","backdrop_name_and_price":"","design_statuses":null,"due_at":"2026-06-16T00:00:00.000-07:00","customer_ids":"","customer_names":"","customer_emails":"","customer_phones":"","customer_addresses":"","customer_and_contact_ids":"","customer_and_contact_names":"","customer_and_contact_emails":"","customer_and_contact_phones":"","additional_contact_ids":"","additional_contact_names":"","additional_contact_emails":"","additional_contact_phones":"","assigned_staff_ids":"","assigned_staff_names":"","assigned_staff_abbreviations":"","assigned_staff_emails":"","change_summary":null,"brand_id":805,"brand_name":"Schiller and Sons 226","primary_image":{"hero_variant":null},"booked_at_description":"Created less than a minute ago","current_user_assigned":false,"event_url":"https://test-227-50a2a94f.cc.localhost/events/111-sarah-and-john-s-wedding?token=6P7-MFZ6-ZTZ","questionnaires_url":"https://test-227-50a2a94f.cc.localhost/events/111-sarah-and-john-s-wedding/forms?token=6P7-MFZ6-ZTZ","payment_url":"https://test-227-50a2a94f.cc.localhost/events/111-sarah-and-john-s-wedding/payments/new?token=6P7-MFZ6-ZTZ","invoice_url":"https://test-227-50a2a94f.cc.localhost/events/111-sarah-and-john-s-wedding/invoice?token=6P7-MFZ6-ZTZ","designs_url":"https://test-227-50a2a94f.cc.localhost/events/111-sarah-and-john-s-wedding/designs?token=6P7-MFZ6-ZTZ","proposal_url":"https://test-227-50a2a94f.cc.localhost/proposals/111-sarah-and-john-s-wedding?token=6P7-MFZ6-ZTZ","referred_by_user_id":null,"referred_by_user_name":null,"referred_by_user_email":null,"custom_fields":[]},"relationships":{"event_bookings":{"data":[]},"proposal_alternatives":{"data":[]},"event_users":{"data":[]},"event_staff_members":{"data":[]},"event_staff_requests":{"data":[]},"contacts":{"data":[]},"notes":{"data":[]}}}}}}}}}},"/api/v1/events/{event_id}/notes":{"post":{"summary":"Add a note to a booking","tags":["Proposals/Confirmed Bookings"],"description":"Adds a private internal note to a booking. Notes are visible to staff members only and are never shown to customers. Use them to log internal observations, follow-up activity, or any staff-only context tied to the booking.\n\nEach call appends a new note record with its own author and timestamp (a running timeline), which is distinct from the booking's free-form `public_notes` / `private_notes` text fields on the event itself (those are edited via `PUT /api/v1/events/{event_id}`).\n\nOptionally set or update the booking's next follow-up date in the same call.\n\n**Required permission:** `assigned_event_read` or `unassigned_event_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"event_id","in":"path","description":"The unique ID of the booking","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"note added","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"4","type":"note","attributes":{"id":4,"content":"Confirmed load-in time with venue manager","user_id":361,"byline":"06-09-2026  1:56 PM by Bong Metz","created_at":"2026-06-09T13:56:06.428-07:00"}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"note":{"type":"string","description":"The note text to add (private internal note, staff-only)"},"next_follow_up_on":{"type":"string","description":"Set or update the booking's next follow-up date (YYYY-MM-DD)"}},"required":["note"]}}}}}},"/api/v1/events/{event_id}/notes/{id}":{"put":{"summary":"Update a booking note","tags":["Proposals/Confirmed Bookings"],"description":"Updates the content of a private internal note on a booking. Notes are visible to staff members only and are never shown to customers.\n\nOnly the note's original author can update it (mirrors the web admin's edit rule).\n\n**Required permission:** `assigned_event_read` or `unassigned_event_read` (in addition, the authenticated user must be the note's original author)\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"event_id","in":"path","description":"The unique ID of the booking","required":true,"schema":{"type":"integer"}},{"name":"id","in":"path","description":"The unique ID of the note","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"note updated","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"5","type":"note","attributes":{"id":5,"content":"Updated content","user_id":362,"byline":"06-09-2026  1:56 PM by Sheldon White","created_at":"2026-06-09T13:56:06.546-07:00"}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"content":{"type":"string","description":"The new note text (private internal note, staff-only)"}},"required":["content"]}}}}},"delete":{"summary":"Delete a booking note","tags":["Proposals/Confirmed Bookings"],"description":"Deletes a private internal note from a booking. Notes are visible to staff members only and are never shown to customers.\n\nOnly the note's original author can delete it (mirrors the web admin's edit rule).\n\n**Required permission:** `assigned_event_read` or `unassigned_event_read` (in addition, the authenticated user must be the note's original author)\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"event_id","in":"path","description":"The unique ID of the booking","required":true,"schema":{"type":"integer"}},{"name":"id","in":"path","description":"The unique ID of the note","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"note deleted","content":{"application/json":{"example":{"meta":{"status":"ok"}}}}}}}},"/api/v1/expense_categories":{"get":{"summary":"Fetch all expense categories","tags":["Expenses"],"description":"Returns all expense categories for the business. Categories can be nested — each category may have a parent category, forming a hierarchy. The `nested_name` attribute shows the full path (e.g., \"Equipment → Audio\").\n\n**Required permission:** `expense_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}}],"responses":{"200":{"description":"expense categories found","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":[{"id":"9","type":"expense_category","attributes":{"id":9,"name":"Equipment","nested_name":"Equipment"},"relationships":{"parent_expense_category":{"data":null},"expenses":{"data":[]}}},{"id":"10","type":"expense_category","attributes":{"id":10,"name":"Audio","nested_name":"Equipment → Audio"},"relationships":{"parent_expense_category":{"data":{"id":"9","type":"expense_category"}},"expenses":{"data":[]}}}]}}}}}}},"/api/v1/expense_categories/{id}":{"get":{"summary":"Fetch expense category by ID","tags":["Expenses"],"description":"Returns the details of a single expense category.\n\n**Required permission:** `expense_read`","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"id","in":"path","description":"The unique ID of the expense category","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"expense category found","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"11","type":"expense_category","attributes":{"id":11,"name":"Equipment","nested_name":"Equipment"},"relationships":{"parent_expense_category":{"data":null},"expenses":{"data":[]}}}}}}}}}},"/api/v1/expenses":{"get":{"summary":"Fetch all expenses","tags":["Expenses"],"description":"Returns a paginated list of expenses for the business. Results can be filtered by event, expense category, date range, or full-text search.\n\nThe response includes `meta.total_count` and `meta.per_page` for pagination.\n\n**Required permission:** `expense_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"event_id","in":"query","description":"Filter expenses by event ID","required":false,"schema":{"type":"integer"}},{"name":"expense_category_id","in":"query","description":"Filter expenses by category ID","required":false,"schema":{"type":"integer"}},{"name":"payment_date_start","in":"query","description":"Filter expenses on or after this date (YYYY-MM-DD)","required":false,"schema":{"type":"string"}},{"name":"payment_date_end","in":"query","description":"Filter expenses on or before this date (YYYY-MM-DD)","required":false,"schema":{"type":"string"}},{"name":"query","in":"query","description":"Full-text search across reference number, payee, and description","required":false,"schema":{"type":"string"}},{"name":"sort_by","in":"query","description":"Sort order:\n * `paid_at_asc` \n * `paid_at_desc` \n * `relevance` \n ","enum":["paid_at_asc","paid_at_desc","relevance"],"required":false,"schema":{"type":"string"}},{"name":"page","in":"query","description":"Page number for pagination (default: 1)","required":false,"schema":{"type":"integer"}},{"name":"per","in":"query","description":"Number of results per page (default: 50)","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"expenses found","content":{"application/json":{"example":{"meta":{"status":"ok","total_count":1,"per_page":50},"data":[{"id":"6","type":"expense","attributes":{"id":6,"payment_date":"2026-06-02","amount":"100.00","amount_cents":10000,"amount_currency":"USD","amount_formatted":"$100","payee_type":"custom","payee_value":"John Smith","payee":"John Smith","ref_no":"abc123","description":"Hello abc123","expense_category_name":"Equipment","event_id":null,"event_title":null,"expense_category_id":12,"attachments":[]},"relationships":{"event":{"data":null},"created_by":{"data":{"id":"366","type":"user"}},"expense_category":{"data":{"id":"12","type":"expense_category"}},"staff":{"data":null}}}]}}}}}},"post":{"summary":"Create an expense","tags":["Expenses"],"description":"Create a new expense record for the business. Expenses track costs like equipment purchases, venue fees, staff payments, and other business expenditures.\n\nThe payee can be either a custom text value or a reference to a staff member. Set `payee_type` to `\"custom\"` and provide `payee_value`, or set `payee_type` to `\"staff\"` and provide `staff_id`.\n\n**Required permission:** `expense_create`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}}],"responses":{"200":{"description":"expense created","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"7","type":"expense","attributes":{"id":7,"payment_date":"2026-06-02","amount":"250.00","amount_cents":25000,"amount_currency":"USD","amount_formatted":"$250","payee_type":"custom","payee_value":"Best Buy","payee":"Best Buy","ref_no":"INV-2024-001","description":"Speaker cables and adapters","expense_category_name":"Equipment","event_id":null,"event_title":null,"expense_category_id":13,"attachments":[]},"relationships":{"event":{"data":null},"created_by":{"data":null},"expense_category":{"data":{"id":"13","type":"expense_category"}},"staff":{"data":null}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"payee_type":{"type":"string","description":"Payee type","enum":["custom","staff"]},"payee_value":{"type":"string","description":"Payee name (required when payee_type is \"custom\")"},"staff_id":{"type":"integer","description":"Staff member ID (required when payee_type is \"staff\")"},"payment_date":{"type":"string","description":"Date of payment (YYYY-MM-DD)"},"payment_method":{"type":"string","description":"Payment method (e.g., \"Cash\", \"Check\", \"Credit Card\")"},"amount":{"type":"number","description":"Expense amount"},"ref_no":{"type":"string","description":"Reference number"},"description":{"type":"string","description":"Description of the expense"},"expense_category_id":{"type":"integer","description":"Expense category ID"},"event_id":{"type":"integer","description":"Associated event ID (optional)"}},"required":["payment_date","ref_no","amount"]}}}}}},"/api/v1/expenses/{id}":{"get":{"summary":"Fetch expense by ID","tags":["Expenses"],"description":"Returns the full details of a single expense record.\n\n**Required permission:** `expense_read`","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"id","in":"path","description":"The unique ID of the expense","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"expense found","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"8","type":"expense","attributes":{"id":8,"payment_date":"2026-06-02","amount":"100.00","amount_cents":10000,"amount_currency":"USD","amount_formatted":"$100","payee_type":"custom","payee_value":"John Smith","payee":"John Smith","ref_no":"abc123","description":"Hello abc123","expense_category_name":"Equipment","event_id":null,"event_title":null,"expense_category_id":14,"attachments":[]},"relationships":{"event":{"data":null},"created_by":{"data":{"id":"368","type":"user"}},"expense_category":{"data":{"id":"14","type":"expense_category"}},"staff":{"data":null}}}}}}}}},"put":{"summary":"Update an expense","tags":["Expenses"],"description":"Update an existing expense record.\n\n**Required permission:** `expense_write`","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"id","in":"path","description":"The unique ID of the expense","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"expense updated","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"9","type":"expense","attributes":{"id":9,"payment_date":"2026-06-02","amount":"375.00","amount_cents":37500,"amount_currency":"USD","amount_formatted":"$375","payee_type":"custom","payee_value":"John Smith","payee":"John Smith","ref_no":"abc123","description":"Updated description","expense_category_name":"Equipment","event_id":null,"event_title":null,"expense_category_id":15,"attachments":[]},"relationships":{"event":{"data":null},"created_by":{"data":{"id":"369","type":"user"}},"expense_category":{"data":{"id":"15","type":"expense_category"}},"staff":{"data":null}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"payee_type":{"type":"string","description":"Payee type","enum":["custom","staff"]},"payee_value":{"type":"string","description":"Payee name"},"staff_id":{"type":"integer","description":"Staff member ID"},"payment_date":{"type":"string","description":"Date of payment (YYYY-MM-DD)"},"payment_method":{"type":"string","description":"Payment method"},"amount":{"type":"number","description":"Expense amount"},"ref_no":{"type":"string","description":"Reference number"},"description":{"type":"string","description":"Description of the expense"},"expense_category_id":{"type":"integer","description":"Expense category ID"},"event_id":{"type":"integer","description":"Associated event ID"}}}}}}},"delete":{"summary":"Delete an expense","tags":["Expenses"],"description":"Soft-deletes an expense record. The expense will no longer appear in listings but is retained in the database for record-keeping.\n\n**Required permission:** `expense_write`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"id","in":"path","description":"The unique ID of the expense","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"expense deleted","content":{"application/json":{"example":{"meta":{"status":"ok"}}}}}}}},"/api/v1/extra_categories":{"get":{"summary":"Fetch all extra categories","tags":["Extras"],"description":"Returns all active extra categories for the business, ordered by position.\n\nExtra categories organize extras into groups (e.g., \"Props\", \"Signage\", \"Decorations\"). Each category has a customer visibility setting that controls when it is shown to customers during the booking process.\n\nUse the `include` query parameter to sideload related resources (comma-separated). Available: `extras`, `extra_groups`.\n\n**Required permission:** `offerings_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}}],"responses":{"200":{"description":"extra categories found","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":[{"id":"18","type":"extra_category","attributes":{"id":18,"name":"Props","position":1,"customer_visibility":"always_show"},"relationships":{"franchise":{"data":{"id":"691","type":"franchise"}},"extra_groups":{"data":[]},"extras":{"data":[]}}},{"id":"19","type":"extra_category","attributes":{"id":19,"name":"Signage","position":2,"customer_visibility":"always_show"},"relationships":{"franchise":{"data":{"id":"691","type":"franchise"}},"extra_groups":{"data":[]},"extras":{"data":[]}}}]}}}}}}},"/api/v1/extra_categories/{id}":{"get":{"summary":"Fetch an extra category by ID","tags":["Extras"],"description":"Returns the details of a single extra category, including its name, position, and customer visibility setting.\n\nUse the `include` query parameter to sideload related resources (comma-separated). Available: `extras`, `extra_groups`.\n\n**Required permission:** `offerings_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"id","in":"path","description":"The unique ID of the extra category","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"extra category found","content":{"application/json":{"example":{"data":{"id":"20","type":"extra_category","attributes":{"id":20,"name":"Props","position":1,"customer_visibility":"always_show"},"relationships":{"franchise":{"data":{"id":"692","type":"franchise"}},"extra_groups":{"data":[]},"extras":{"data":[]}}}}}}}}}},"/api/v1/extras":{"get":{"summary":"Fetch all extras","tags":["Extras"],"description":"Returns all active extras for the business. Extras are additional items or services that customers can select when booking (e.g., premium props, custom signage, themed decorations).\n\nResults can be filtered by text search, widget visibility, category, and sort order.\n\n**Required permission:** `offerings_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"text","in":"query","description":"Search extras by name","required":false,"schema":{"type":"string"}},{"name":"only_widget_visible","in":"query","description":"Only return extras visible on the booking widget","required":false,"schema":{"type":"boolean"}},{"name":"order","in":"query","description":"Sort order for results","required":false,"schema":{"type":"string"}},{"name":"extra_category_id","in":"query","description":"Filter by a specific extra category ID","required":false,"schema":{"type":"integer"}},{"name":"category_ids[]","in":"query","items":{"type":"integer"},"description":"Filter by extra category IDs","required":false,"schema":{"type":"array"}}],"responses":{"200":{"description":"extras found","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":[{"id":"7","type":"extra","attributes":{"id":7,"name":"Premium Props Package","description":"A special extra item for your event","position":1,"price_method":"flat_rate","include_at_no_charge_with_certain_packages":false,"price":"25.00","price_cents":2500,"price_currency":"USD","price_formatted":"$25","hourly_price":"0.00","hourly_price_cents":0,"hourly_price_currency":"USD","hourly_price_formatted":"$0","daily_price":"0.00","daily_price_cents":0,"daily_price_currency":"USD","daily_price_formatted":"$0","primary_image":{"video_variant":"/assets/video_dimensions_no-addon-51d25c35216ac7f3ea621f74772120bbea123405e2fa3f25d97050af78f5804e.png"}},"relationships":{"extra_group":{"data":{"id":"11","type":"extra_group"}},"extra_category":{"data":{"id":"21","type":"extra_category"}}}}]}}}}}}},"/api/v1/extras/{id}":{"get":{"summary":"Fetch an extra by ID","tags":["Extras"],"description":"Returns the full details of a single extra, including its name, description, pricing (flat rate, hourly, or daily), position, and images.\n\nUse the `include` query parameter to sideload related resources (comma-separated). Available: `extra_group`, `extra_category`.\n\n**Required permission:** `offerings_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"id","in":"path","description":"The unique ID of the extra","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"extra found","content":{"application/json":{"example":{"data":{"id":"8","type":"extra","attributes":{"id":8,"name":"Premium Props Package","description":"A special extra item for your event","position":1,"price_method":"flat_rate","include_at_no_charge_with_certain_packages":false,"price":"25.00","price_cents":2500,"price_currency":"USD","price_formatted":"$25","hourly_price":"0.00","hourly_price_cents":0,"hourly_price_currency":"USD","hourly_price_formatted":"$0","daily_price":"0.00","daily_price_cents":0,"daily_price_currency":"USD","daily_price_formatted":"$0","primary_image":{"video_variant":"/assets/video_dimensions_no-addon-51d25c35216ac7f3ea621f74772120bbea123405e2fa3f25d97050af78f5804e.png"}},"relationships":{"extra_group":{"data":{"id":"12","type":"extra_group"}},"extra_category":{"data":{"id":"22","type":"extra_category"}}}}}}}}}}},"/api/v1/leads/{lead_id}/booking_questions":{"get":{"summary":"Fetch booking question answers for a lead","tags":["Leads"],"description":"Returns the full set of booking questions and their current answers for a lead. Each entry includes the question's `column_name`, `label`, `kind`, current `value`, and `formatted_value`.\n\nUse the `column_name` of each entry as the key when sending updates via the `PATCH /api/v1/leads/{lead_id}/booking_questions` endpoint.\n\n**Required permission:** `lead_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"lead_id","in":"path","description":"The unique ID of the lead","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"booking questions returned","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":[{"id":"15","type":"lead_booking_question","attributes":{"id":15,"lead_id":46,"booking_question_id":15,"editable":true,"column_name":"guest_count","name":"Estimated Guest Count","label":"Estimated guest count","kind":"text","link":null,"value":null,"formatted_value":null,"options":null,"archived":false}},{"id":"utm_source","type":"lead_booking_question","attributes":{"id":"utm_source","lead_id":46,"booking_question_id":null,"editable":false,"column_name":"utm_source","name":"UTM Source","label":null,"kind":null,"link":null,"value":null,"formatted_value":null,"options":null,"archived":false}},{"id":"utm_campaign","type":"lead_booking_question","attributes":{"id":"utm_campaign","lead_id":46,"booking_question_id":null,"editable":false,"column_name":"utm_campaign","name":"UTM Campaign","label":null,"kind":null,"link":null,"value":null,"formatted_value":null,"options":null,"archived":false}},{"id":"utm_medium","type":"lead_booking_question","attributes":{"id":"utm_medium","lead_id":46,"booking_question_id":null,"editable":false,"column_name":"utm_medium","name":"UTM Medium","label":null,"kind":null,"link":null,"value":null,"formatted_value":null,"options":null,"archived":false}},{"id":"utm_term","type":"lead_booking_question","attributes":{"id":"utm_term","lead_id":46,"booking_question_id":null,"editable":false,"column_name":"utm_term","name":"UTM Term","label":null,"kind":null,"link":null,"value":null,"formatted_value":null,"options":null,"archived":false}},{"id":"utm_content","type":"lead_booking_question","attributes":{"id":"utm_content","lead_id":46,"booking_question_id":null,"editable":false,"column_name":"utm_content","name":"UTM Content","label":null,"kind":null,"link":null,"value":null,"formatted_value":null,"options":null,"archived":false}}]}}}}}},"patch":{"summary":"Update booking question answers for a lead","tags":["Leads"],"description":"Updates one or more booking question answers on the lead. The body's `custom_questions` keys must match the `column_name` of each booking question (as returned by the `GET` endpoint).\n\nOnly the keys you include are touched — other answers on the lead are preserved.\n\n**Required permission:** `lead_write`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"lead_id","in":"path","description":"The unique ID of the lead","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"booking questions updated","content":{"application/json":{"example":{"meta":{"status":"ok"}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"custom_questions":{"type":"object","description":"Keys are booking-question column names; values are the answer to record.","additionalProperties":true}},"required":["custom_questions"]}}}}}},"/api/v1/leads":{"post":{"summary":"Add a lead to the database","tags":["Leads"],"description":"Creates a new lead for the specified business. A lead represents a potential customer inquiry that can later be converted into a confirmed event.\n\nAt minimum, an `email` address is required. All other fields are optional but recommended for a complete lead record.\n\nThe `employee_id` field assigns a staff member as the host/owner of the lead for follow-up purposes.\n\n**Required permission:** `lead_create`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}}],"responses":{"200":{"description":"lead created","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"48","type":"lead","attributes":{"id":48,"email":"jsmith@gmail.com","first_name":"John","last_name":"Smith","company_name":null,"venue_name":null,"venue_address":null,"venue_city":null,"venue_state":null,"venue_zip":null,"venue_map_url":"https://www.google.com/maps/search/","venue_latitude":null,"venue_longitude":null,"venue_google_place_id":null,"estimated_budget":null,"estimated_number_guests":null,"subject":null,"message":null,"source":"Test","notes":"","lead_event_type":null,"lead_type":null,"last_contact_at":null,"next_follow_up_on":null,"origin":"API","indoor_outdoor":null,"title":"John Smith","setup_at":null,"pickup_at":null,"dropoff_at":null,"brand_id":832,"brand_name":"Schmidt-Kuhn 254","created_at":"2026-06-09T13:56:08.457-07:00","token":"QWH-D7EK-YAW","spam":false,"archived":false,"converted_to_event":false,"utm_source":null,"utm_campaign":null,"utm_medium":null,"utm_term":null,"utm_content":null,"gclid":null,"phone":null,"phone_normalized":"","starts_at":null,"ends_at":null,"length_in_hours":null,"length_in_minutes":null,"length_in_days":null,"event_time":null,"event_type_id":null,"event_date":null,"package_name":null,"package_group_name":null,"service_name":null,"length":null,"formatted_time_range":"","formatted_date_range":"","formatted_datetime_range":"","custom_fields":[],"created_at_description":"Created less than a minute ago","referred_by_user_id":null,"referred_by_user_name":null,"referred_by_user_email":null,"resume_booking_link":"https://test-254-f37b27c4.cc.localhost/reservation/resume?lead_id=48&token=QWH-D7EK-YAW"},"relationships":{"lead_bookings":{"data":[{"id":"32","type":"lead_booking"}]}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"first_name":{"type":"string","description":"Contact first name"},"last_name":{"type":"string","description":"Contact last name"},"email":{"type":"string","description":"Contact email address"},"phone":{"type":"string","description":"Contact phone number"},"company_name":{"type":"string","description":"Business or organization name"},"employee_id":{"type":"integer","description":"Staff member ID to assign as lead owner"},"lead_source":{"type":"string","description":"How the lead was acquired","enum":["Manual Entry","Lead Form","Online Booking","App","Zapier","API","Wedding Wire"]},"contact_preference":{"type":"string","description":"How the lead prefers to be contacted","enum":["Email","Phone","Text Message"]},"lead_type":{"type":"string","description":"Custom label for categorizing the lead"},"notes":{"type":"string","description":"Private internal notes about this lead"},"event_date":{"type":"string","description":"Requested event date (YYYY-MM-DD)"},"event_time":{"type":"string","description":"Requested event start time"},"length_in_minutes":{"type":"integer","description":"Requested event duration in minutes"},"estimated_budget":{"type":"number","description":"Estimated event budget"},"estimated_number_guests":{"type":"integer","description":"Estimated number of guests"},"venue_name":{"type":"string","description":"Event venue name"},"venue_address":{"type":"string","description":"Venue street address"},"venue_city":{"type":"string","description":"Venue city"},"venue_state":{"type":"string","description":"Venue state"},"venue_zip":{"type":"string","description":"Venue ZIP code"},"indoor_outdoor":{"type":"string","description":"Venue type","enum":["Indoor","Outdoor"]},"service_id":{"type":"integer","description":"Service (package group) ID the lead is interested in"},"package_id":{"type":"integer","description":"Package (event type) ID the lead is interested in"},"referred_by_user_id":{"type":"integer","description":"ID of the staff member who referred this lead"},"next_follow_up_on":{"type":"string","description":"Next follow-up date (YYYY-MM-DD)"},"subject":{"type":"string","description":"Message subject from the lead inquiry"},"message":{"type":"string","description":"Message body from the lead inquiry"},"utm_source":{"type":"string","description":"UTM source tracking parameter"},"utm_campaign":{"type":"string","description":"UTM campaign tracking parameter"},"utm_medium":{"type":"string","description":"UTM medium tracking parameter"},"utm_term":{"type":"string","description":"UTM term tracking parameter"},"utm_content":{"type":"string","description":"UTM content tracking parameter"},"gclid":{"type":"string","description":"Google Click ID for ad tracking"},"custom_questions":{"type":"object","description":"Responses to custom booking questions configured by the business, as key-value pairs"}},"required":["email"]}}}}},"get":{"summary":"Fetch all leads","tags":["Leads"],"description":"Returns a paginated list of leads for the specified business. Results can be filtered by email address for exact matching, or by a text query that performs a full-text search across lead names, email, phone, venue, and notes.\n\nEach lead includes booking details (event date, start/end time, length, package name, service name) from its primary lead booking, flattened directly into the lead attributes.\n\nUse the `include` query parameter to sideload related resources (comma-separated). Available: `lead_bookings`.\n\nThe response includes `meta.total_count` (total matching leads) and `meta.per_page` (results per page) to support pagination.\n\n**Required permission:** `lead_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"email","in":"query","description":"Filter leads by exact email address match","required":false,"schema":{"type":"string"}},{"name":"text","in":"query","description":"Full-text search across lead name, email, phone, venue, and notes","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","description":"Page number for pagination (default: 1)","required":false,"schema":{"type":"integer"}},{"name":"per","in":"query","description":"Number of results per page (default: 25)","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"leads found","content":{"application/json":{"example":{"meta":{"status":"ok","total_count":1,"per_page":25},"data":[{"id":"49","type":"lead","attributes":{"id":49,"email":"john.smith89@example.com","first_name":"John","last_name":"Smith","company_name":null,"venue_name":null,"venue_address":null,"venue_city":null,"venue_state":null,"venue_zip":null,"venue_map_url":"https://www.google.com/maps/search/","venue_latitude":null,"venue_longitude":null,"venue_google_place_id":null,"estimated_budget":null,"estimated_number_guests":null,"subject":null,"message":null,"source":null,"notes":null,"lead_event_type":null,"lead_type":null,"last_contact_at":null,"next_follow_up_on":null,"origin":"Online Booking","indoor_outdoor":"","title":"John Smith","setup_at":null,"pickup_at":null,"dropoff_at":null,"brand_id":833,"brand_name":"Maggio, Medhurst and Ebert 255","created_at":"2026-06-09T13:56:08.587-07:00","token":"7EX-HQXF-PZG","spam":false,"archived":false,"converted_to_event":false,"utm_source":null,"utm_campaign":null,"utm_medium":null,"utm_term":null,"utm_content":null,"gclid":null,"phone":"951-555-1212","phone_normalized":"+19515551212","starts_at":"2026-06-23T16:00:00.000-07:00","ends_at":"2026-06-24T00:00:00.000-07:00","length_in_hours":8.0,"length_in_minutes":480,"length_in_days":null,"event_time":"4:00pm","event_type_id":null,"event_date":"06-23-2026","package_name":null,"package_group_name":null,"service_name":null,"length":8.0,"formatted_time_range":"4:00 PM - 12:00 AM","formatted_date_range":"June 23 - June 24, 2026","formatted_datetime_range":"Tuesday, June 23, 2026 • 4:00 PM - 12:00 AM","custom_fields":[],"created_at_description":"Created less than a minute ago","referred_by_user_id":null,"referred_by_user_name":null,"referred_by_user_email":null,"resume_booking_link":"https://test-255-3477f797.cc.localhost/reservation/resume?lead_id=49&token=7EX-HQXF-PZG"},"relationships":{"lead_bookings":{"data":[{"id":"33","type":"lead_booking"}]}}}]}}}}}}},"/api/v1/leads/{lead_id}":{"put":{"summary":"Update a lead","tags":["Leads"],"description":"Updates an existing lead with the provided fields. Only fields included in the request body are modified — omitted fields remain unchanged.\n\nUse this to update contact information, venue details, event preferences, status flags (spam, archived), or reassign the lead to a different staff member.\n\n**Required permission:** `lead_write`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"lead_id","in":"path","description":"The unique ID of the lead to update","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"lead updated","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"50","type":"lead","attributes":{"id":50,"email":"john.smith91@example.com","first_name":"Jane","last_name":"Smith","company_name":null,"venue_name":null,"venue_address":null,"venue_city":null,"venue_state":null,"venue_zip":null,"venue_map_url":"https://www.google.com/maps/search/","venue_latitude":null,"venue_longitude":null,"venue_google_place_id":null,"estimated_budget":null,"estimated_number_guests":null,"subject":null,"message":null,"source":null,"notes":"Updated via API","lead_event_type":null,"lead_type":null,"last_contact_at":null,"next_follow_up_on":null,"origin":"Online Booking","indoor_outdoor":"","title":"Jane Smith","setup_at":null,"pickup_at":null,"dropoff_at":null,"brand_id":836,"brand_name":"McKenzie, Collins and Ortiz 258","created_at":"2026-06-09T13:56:08.950-07:00","token":"2Y4-ZGQ2-9QT","spam":false,"archived":false,"converted_to_event":false,"utm_source":null,"utm_campaign":null,"utm_medium":null,"utm_term":null,"utm_content":null,"gclid":null,"phone":"951-555-1212","phone_normalized":"+19515551212","starts_at":"2026-06-23T16:00:00.000-07:00","ends_at":"2026-06-24T00:00:00.000-07:00","length_in_hours":8.0,"length_in_minutes":480,"length_in_days":null,"event_time":"4:00pm","event_type_id":null,"event_date":"06-23-2026","package_name":null,"package_group_name":null,"service_name":null,"length":8.0,"formatted_time_range":"4:00 PM - 12:00 AM","formatted_date_range":"June 23 - June 24, 2026","formatted_datetime_range":"Tuesday, June 23, 2026 • 4:00 PM - 12:00 AM","custom_fields":[],"created_at_description":"Created less than a minute ago","referred_by_user_id":null,"referred_by_user_name":null,"referred_by_user_email":null,"resume_booking_link":"https://test-258-8486a617.cc.localhost/reservation/resume?lead_id=50&token=2Y4-ZGQ2-9QT"},"relationships":{"lead_bookings":{"data":[{"id":"34","type":"lead_booking"}]}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"first_name":{"type":"string","description":"Contact first name"},"last_name":{"type":"string","description":"Contact last name"},"email":{"type":"string","description":"Contact email address"},"phone":{"type":"string","description":"Contact phone number"},"company_name":{"type":"string","description":"Business or organization name"},"employee_id":{"type":"integer","description":"Staff member ID to assign as lead owner"},"lead_source":{"type":"string","description":"How the lead was acquired"},"contact_preference":{"type":"string","description":"How the lead prefers to be contacted","enum":["Email","Phone","Text Message"]},"lead_type":{"type":"string","description":"Custom label for categorizing the lead"},"notes":{"type":"string","description":"Private internal notes about this lead"},"starts_at_date":{"type":"string","description":"Requested event date (YYYY-MM-DD)"},"starts_at_time":{"type":"string","description":"Requested event start time"},"length_in_minutes":{"type":"integer","description":"Requested event duration in minutes"},"estimated_budget":{"type":"number","description":"Estimated event budget"},"estimated_number_guests":{"type":"integer","description":"Estimated number of guests"},"venue_name":{"type":"string","description":"Event venue name"},"venue_address":{"type":"string","description":"Venue street address"},"venue_city":{"type":"string","description":"Venue city"},"venue_state":{"type":"string","description":"Venue state"},"venue_zip":{"type":"string","description":"Venue ZIP code"},"indoor_outdoor":{"type":"string","description":"Venue type","enum":["Indoor","Outdoor"]},"service_id":{"type":"integer","description":"Service (package group) ID the lead is interested in"},"package_id":{"type":"integer","description":"Package (event type) ID the lead is interested in"},"brand_id":{"type":"integer","description":"Brand ID to associate with this lead"},"spam":{"type":"boolean","description":"Mark lead as spam"},"archived":{"type":"boolean","description":"Archive the lead"},"next_follow_up_on":{"type":"string","description":"Next follow-up date (YYYY-MM-DD)"},"custom_questions":{"type":"object","description":"Responses to custom booking questions, as key-value pairs"}}}}}}},"get":{"summary":"Fetch lead by ID","tags":["Leads"],"description":"Returns the full details of a single lead, including contact information, event details, venue, pricing, status, and any custom question responses.\n\nUse the `include` query parameter to sideload related resources (comma-separated). Available: `lead_bookings`.\n\n**Required permission:** `lead_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"lead_id","in":"path","description":"The unique ID of the lead to retrieve","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"lead found","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"51","type":"lead","attributes":{"id":51,"email":"john.smith93@example.com","first_name":"John","last_name":"Smith","company_name":null,"venue_name":null,"venue_address":null,"venue_city":null,"venue_state":null,"venue_zip":null,"venue_map_url":"https://www.google.com/maps/search/","venue_latitude":null,"venue_longitude":null,"venue_google_place_id":null,"estimated_budget":null,"estimated_number_guests":null,"subject":null,"message":null,"source":null,"notes":null,"lead_event_type":null,"lead_type":null,"last_contact_at":null,"next_follow_up_on":null,"origin":"Online Booking","indoor_outdoor":"","title":"John Smith","setup_at":null,"pickup_at":null,"dropoff_at":null,"brand_id":839,"brand_name":"Treutel and Sons 261","created_at":"2026-06-09T13:56:09.183-07:00","token":"6JJ-XEEN-ZMM","spam":false,"archived":false,"converted_to_event":false,"utm_source":null,"utm_campaign":null,"utm_medium":null,"utm_term":null,"utm_content":null,"gclid":null,"phone":"951-555-1212","phone_normalized":"+19515551212","starts_at":"2026-06-23T16:00:00.000-07:00","ends_at":"2026-06-24T00:00:00.000-07:00","length_in_hours":8.0,"length_in_minutes":480,"length_in_days":null,"event_time":"4:00pm","event_type_id":null,"event_date":"06-23-2026","package_name":null,"package_group_name":null,"service_name":null,"length":8.0,"formatted_time_range":"4:00 PM - 12:00 AM","formatted_date_range":"June 23 - June 24, 2026","formatted_datetime_range":"Tuesday, June 23, 2026 • 4:00 PM - 12:00 AM","custom_fields":[],"created_at_description":"Created less than a minute ago","referred_by_user_id":null,"referred_by_user_name":null,"referred_by_user_email":null,"resume_booking_link":"https://test-261-9838db0b.cc.localhost/reservation/resume?lead_id=51&token=6JJ-XEEN-ZMM"},"relationships":{"lead_bookings":{"data":[{"id":"35","type":"lead_booking"}]}}}}}}}}}},"/api/v1/leads/{lead_id}/archive":{"put":{"summary":"Archive a lead","tags":["Leads"],"description":"Marks a lead as archived. Archived leads are hidden from the default lead list.\n\n**Required permission:** `lead_write`","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"lead_id","in":"path","description":"The unique ID of the lead","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"lead archived","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"52","type":"lead","attributes":{"id":52,"email":"john.smith95@example.com","first_name":"John","last_name":"Smith","company_name":null,"venue_name":null,"venue_address":null,"venue_city":null,"venue_state":null,"venue_zip":null,"venue_map_url":"https://www.google.com/maps/search/","venue_latitude":null,"venue_longitude":null,"venue_google_place_id":null,"estimated_budget":null,"estimated_number_guests":null,"subject":null,"message":null,"source":null,"notes":null,"lead_event_type":null,"lead_type":null,"last_contact_at":null,"next_follow_up_on":null,"origin":"Online Booking","indoor_outdoor":"","title":"John Smith","setup_at":null,"pickup_at":null,"dropoff_at":null,"brand_id":842,"brand_name":"Bailey, Brekke and Ledner 264","created_at":"2026-06-09T13:56:09.344-07:00","token":"GCR-VV6C-R4F","spam":false,"archived":true,"converted_to_event":false,"utm_source":null,"utm_campaign":null,"utm_medium":null,"utm_term":null,"utm_content":null,"gclid":null,"phone":"951-555-1212","phone_normalized":"+19515551212","starts_at":null,"ends_at":null,"length_in_hours":null,"length_in_minutes":null,"length_in_days":null,"event_time":null,"event_type_id":null,"event_date":null,"package_name":null,"package_group_name":null,"service_name":null,"length":null,"formatted_time_range":"","formatted_date_range":"","formatted_datetime_range":"","custom_fields":[],"created_at_description":"Created less than a minute ago","referred_by_user_id":null,"referred_by_user_name":null,"referred_by_user_email":null,"resume_booking_link":"https://test-264-6271a258.cc.localhost/reservation/resume?lead_id=52&token=GCR-VV6C-R4F"},"relationships":{"lead_bookings":{"data":[]}}}}}}}}}},"/api/v1/leads/{lead_id}/unarchive":{"put":{"summary":"Unarchive a lead","tags":["Leads"],"description":"Restores an archived lead back to the active lead list.\n\n**Required permission:** `lead_write`","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"lead_id","in":"path","description":"The unique ID of the lead","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"lead unarchived","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"53","type":"lead","attributes":{"id":53,"email":"john.smith97@example.com","first_name":"John","last_name":"Smith","company_name":null,"venue_name":null,"venue_address":null,"venue_city":null,"venue_state":null,"venue_zip":null,"venue_map_url":"https://www.google.com/maps/search/","venue_latitude":null,"venue_longitude":null,"venue_google_place_id":null,"estimated_budget":null,"estimated_number_guests":null,"subject":null,"message":null,"source":null,"notes":null,"lead_event_type":null,"lead_type":null,"last_contact_at":null,"next_follow_up_on":null,"origin":"Online Booking","indoor_outdoor":"","title":"John Smith","setup_at":null,"pickup_at":null,"dropoff_at":null,"brand_id":845,"brand_name":"Effertz, Mills and Pouros 267","created_at":"2026-06-09T13:56:09.460-07:00","token":"FDW-4WG2-GE2","spam":false,"archived":false,"converted_to_event":false,"utm_source":null,"utm_campaign":null,"utm_medium":null,"utm_term":null,"utm_content":null,"gclid":null,"phone":"951-555-1212","phone_normalized":"+19515551212","starts_at":null,"ends_at":null,"length_in_hours":null,"length_in_minutes":null,"length_in_days":null,"event_time":null,"event_type_id":null,"event_date":null,"package_name":null,"package_group_name":null,"service_name":null,"length":null,"formatted_time_range":"","formatted_date_range":"","formatted_datetime_range":"","custom_fields":[],"created_at_description":"Created less than a minute ago","referred_by_user_id":null,"referred_by_user_name":null,"referred_by_user_email":null,"resume_booking_link":"https://test-267-f481c5c4.cc.localhost/reservation/resume?lead_id=53&token=FDW-4WG2-GE2"},"relationships":{"lead_bookings":{"data":[]}}}}}}}}}},"/api/v1/leads/{lead_id}/flag_as_spam":{"put":{"summary":"Flag a lead as spam","tags":["Leads"],"description":"Marks a lead as spam. Spam leads are filtered out of the default lead list.\n\n**Required permission:** `lead_write`","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"lead_id","in":"path","description":"The unique ID of the lead","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"lead flagged as spam","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"54","type":"lead","attributes":{"id":54,"email":"john.smith99@example.com","first_name":"John","last_name":"Smith","company_name":null,"venue_name":null,"venue_address":null,"venue_city":null,"venue_state":null,"venue_zip":null,"venue_map_url":"https://www.google.com/maps/search/","venue_latitude":null,"venue_longitude":null,"venue_google_place_id":null,"estimated_budget":null,"estimated_number_guests":null,"subject":null,"message":null,"source":null,"notes":null,"lead_event_type":null,"lead_type":null,"last_contact_at":null,"next_follow_up_on":null,"origin":"Online Booking","indoor_outdoor":"","title":"John Smith","setup_at":null,"pickup_at":null,"dropoff_at":null,"brand_id":848,"brand_name":"O'Conner-Kertzmann 270","created_at":"2026-06-09T13:56:09.555-07:00","token":"WRP-JE4R-QTG","spam":true,"archived":false,"converted_to_event":false,"utm_source":null,"utm_campaign":null,"utm_medium":null,"utm_term":null,"utm_content":null,"gclid":null,"phone":"951-555-1212","phone_normalized":"+19515551212","starts_at":null,"ends_at":null,"length_in_hours":null,"length_in_minutes":null,"length_in_days":null,"event_time":null,"event_type_id":null,"event_date":null,"package_name":null,"package_group_name":null,"service_name":null,"length":null,"formatted_time_range":"","formatted_date_range":"","formatted_datetime_range":"","custom_fields":[],"created_at_description":"Created less than a minute ago","referred_by_user_id":null,"referred_by_user_name":null,"referred_by_user_email":null,"resume_booking_link":"https://test-270-66d732a7.cc.localhost/reservation/resume?lead_id=54&token=WRP-JE4R-QTG"},"relationships":{"lead_bookings":{"data":[]}}}}}}}}}},"/api/v1/leads/{lead_id}/unflag_as_spam":{"put":{"summary":"Unflag a lead as spam","tags":["Leads"],"description":"Removes the spam flag from a lead, restoring it to the active lead list.\n\n**Required permission:** `lead_write`","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"lead_id","in":"path","description":"The unique ID of the lead","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"spam flag removed","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"55","type":"lead","attributes":{"id":55,"email":"john.smith101@example.com","first_name":"John","last_name":"Smith","company_name":null,"venue_name":null,"venue_address":null,"venue_city":null,"venue_state":null,"venue_zip":null,"venue_map_url":"https://www.google.com/maps/search/","venue_latitude":null,"venue_longitude":null,"venue_google_place_id":null,"estimated_budget":null,"estimated_number_guests":null,"subject":null,"message":null,"source":null,"notes":null,"lead_event_type":null,"lead_type":null,"last_contact_at":null,"next_follow_up_on":null,"origin":"Online Booking","indoor_outdoor":"","title":"John Smith","setup_at":null,"pickup_at":null,"dropoff_at":null,"brand_id":851,"brand_name":"Fadel Group 273","created_at":"2026-06-09T13:56:09.650-07:00","token":"NDV-TPR7-C64","spam":false,"archived":false,"converted_to_event":false,"utm_source":null,"utm_campaign":null,"utm_medium":null,"utm_term":null,"utm_content":null,"gclid":null,"phone":"951-555-1212","phone_normalized":"+19515551212","starts_at":null,"ends_at":null,"length_in_hours":null,"length_in_minutes":null,"length_in_days":null,"event_time":null,"event_type_id":null,"event_date":null,"package_name":null,"package_group_name":null,"service_name":null,"length":null,"formatted_time_range":"","formatted_date_range":"","formatted_datetime_range":"","custom_fields":[],"created_at_description":"Created less than a minute ago","referred_by_user_id":null,"referred_by_user_name":null,"referred_by_user_email":null,"resume_booking_link":"https://test-273-bcc672e2.cc.localhost/reservation/resume?lead_id=55&token=NDV-TPR7-C64"},"relationships":{"lead_bookings":{"data":[]}}}}}}}}}},"/api/v1/leads/{lead_id}/unmark_as_converted_to_event":{"put":{"summary":"Remove converted-to-event flag","tags":["Leads"],"description":"Removes the \"converted to event\" flag from a lead, indicating it has not yet been converted.\n\n**Required permission:** `lead_write`","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"lead_id","in":"path","description":"The unique ID of the lead","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"converted flag removed","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"56","type":"lead","attributes":{"id":56,"email":"john.smith103@example.com","first_name":"John","last_name":"Smith","company_name":null,"venue_name":null,"venue_address":null,"venue_city":null,"venue_state":null,"venue_zip":null,"venue_map_url":"https://www.google.com/maps/search/","venue_latitude":null,"venue_longitude":null,"venue_google_place_id":null,"estimated_budget":null,"estimated_number_guests":null,"subject":null,"message":null,"source":null,"notes":null,"lead_event_type":null,"lead_type":null,"last_contact_at":null,"next_follow_up_on":null,"origin":"Online Booking","indoor_outdoor":"","title":"John Smith","setup_at":null,"pickup_at":null,"dropoff_at":null,"brand_id":854,"brand_name":"Cole Inc 276","created_at":"2026-06-09T13:56:09.741-07:00","token":"W4D-TYFM-YPW","spam":false,"archived":false,"converted_to_event":false,"utm_source":null,"utm_campaign":null,"utm_medium":null,"utm_term":null,"utm_content":null,"gclid":null,"phone":"951-555-1212","phone_normalized":"+19515551212","starts_at":null,"ends_at":null,"length_in_hours":null,"length_in_minutes":null,"length_in_days":null,"event_time":null,"event_type_id":null,"event_date":null,"package_name":null,"package_group_name":null,"service_name":null,"length":null,"formatted_time_range":"","formatted_date_range":"","formatted_datetime_range":"","custom_fields":[],"created_at_description":"Created less than a minute ago","referred_by_user_id":null,"referred_by_user_name":null,"referred_by_user_email":null,"resume_booking_link":"https://test-276-5e0c48b0.cc.localhost/reservation/resume?lead_id=56&token=W4D-TYFM-YPW"},"relationships":{"lead_bookings":{"data":[]}}}}}}}}}},"/api/v1/leads/{lead_id}/enable_automated_messages":{"put":{"summary":"Enable automated messages","tags":["Leads"],"description":"Enables automated messages (emails, texts) for this lead. When enabled, the lead will receive any configured automated follow-up sequences.\n\n**Required permission:** `lead_write`","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"lead_id","in":"path","description":"The unique ID of the lead","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"automated messages enabled","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"57","type":"lead","attributes":{"id":57,"email":"john.smith105@example.com","first_name":"John","last_name":"Smith","company_name":null,"venue_name":null,"venue_address":null,"venue_city":null,"venue_state":null,"venue_zip":null,"venue_map_url":"https://www.google.com/maps/search/","venue_latitude":null,"venue_longitude":null,"venue_google_place_id":null,"estimated_budget":null,"estimated_number_guests":null,"subject":null,"message":null,"source":null,"notes":null,"lead_event_type":null,"lead_type":null,"last_contact_at":null,"next_follow_up_on":null,"origin":"Online Booking","indoor_outdoor":"","title":"John Smith","setup_at":null,"pickup_at":null,"dropoff_at":null,"brand_id":857,"brand_name":"Abbott LLC 279","created_at":"2026-06-09T13:56:09.849-07:00","token":"7QH-JH6H-XTF","spam":false,"archived":false,"converted_to_event":false,"utm_source":null,"utm_campaign":null,"utm_medium":null,"utm_term":null,"utm_content":null,"gclid":null,"phone":"951-555-1212","phone_normalized":"+19515551212","starts_at":null,"ends_at":null,"length_in_hours":null,"length_in_minutes":null,"length_in_days":null,"event_time":null,"event_type_id":null,"event_date":null,"package_name":null,"package_group_name":null,"service_name":null,"length":null,"formatted_time_range":"","formatted_date_range":"","formatted_datetime_range":"","custom_fields":[],"created_at_description":"Created less than a minute ago","referred_by_user_id":null,"referred_by_user_name":null,"referred_by_user_email":null,"resume_booking_link":"https://test-279-8171d6f4.cc.localhost/reservation/resume?lead_id=57&token=7QH-JH6H-XTF"},"relationships":{"lead_bookings":{"data":[]}}}}}}}}}},"/api/v1/leads/{lead_id}/disable_automated_messages":{"put":{"summary":"Disable automated messages","tags":["Leads"],"description":"Disables automated messages for this lead. The lead will no longer receive automated follow-up sequences.\n\n**Required permission:** `lead_write`","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"lead_id","in":"path","description":"The unique ID of the lead","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"automated messages disabled","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"58","type":"lead","attributes":{"id":58,"email":"john.smith107@example.com","first_name":"John","last_name":"Smith","company_name":null,"venue_name":null,"venue_address":null,"venue_city":null,"venue_state":null,"venue_zip":null,"venue_map_url":"https://www.google.com/maps/search/","venue_latitude":null,"venue_longitude":null,"venue_google_place_id":null,"estimated_budget":null,"estimated_number_guests":null,"subject":null,"message":null,"source":null,"notes":null,"lead_event_type":null,"lead_type":null,"last_contact_at":null,"next_follow_up_on":null,"origin":"Online Booking","indoor_outdoor":"","title":"John Smith","setup_at":null,"pickup_at":null,"dropoff_at":null,"brand_id":860,"brand_name":"Grimes-Kessler 282","created_at":"2026-06-09T13:56:09.942-07:00","token":"96N-36GC-KJ7","spam":false,"archived":false,"converted_to_event":false,"utm_source":null,"utm_campaign":null,"utm_medium":null,"utm_term":null,"utm_content":null,"gclid":null,"phone":"951-555-1212","phone_normalized":"+19515551212","starts_at":null,"ends_at":null,"length_in_hours":null,"length_in_minutes":null,"length_in_days":null,"event_time":null,"event_type_id":null,"event_date":null,"package_name":null,"package_group_name":null,"service_name":null,"length":null,"formatted_time_range":"","formatted_date_range":"","formatted_datetime_range":"","custom_fields":[],"created_at_description":"Created less than a minute ago","referred_by_user_id":null,"referred_by_user_name":null,"referred_by_user_email":null,"resume_booking_link":"https://test-282-c7517e11.cc.localhost/reservation/resume?lead_id=58&token=96N-36GC-KJ7"},"relationships":{"lead_bookings":{"data":[]}}}}}}}}}},"/api/v1/leads/{lead_id}/notes":{"post":{"summary":"Add a note to a lead","tags":["Leads"],"description":"Adds an internal note to a lead. Notes are visible to staff members and provide a timeline of follow-up activity. Optionally set or update the next follow-up date.\n\n**Required permission:** `lead_write`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"lead_id","in":"path","description":"The unique ID of the lead","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"note added","content":{"application/json":{"example":{"meta":{"status":"ok"}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"note":{"type":"string","description":"The note text to add"},"next_follow_up_on":{"type":"string","description":"Set or update the next follow-up date (YYYY-MM-DD)"}},"required":["note"]}}}}}},"/api/v1/package_groups":{"get":{"summary":"Fetch all package groups","tags":["Packages & Services"],"description":"Returns all publicly visible package groups for the business.\n\nPackage groups organize packages (event types) within a service (event category). For example, a \"DJ Services\" service might have package groups like \"Wedding Packages\" and \"Corporate Packages\".\n\nUse the `include` query parameter to sideload related resources (comma-separated). Available: `event_types`, `event_category`.\n\n**Required permission:** `offerings_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}}],"responses":{"200":{"description":"package groups found","content":{"application/json":{"example":{"data":[{"id":"33","type":"package_group","attributes":{"id":33,"name":"Wedding Packages","position":1,"package_sort_preference":"price","event_category_id":39,"primary_image":{"panel_variant":null}},"relationships":{"event_category":{"data":{"id":"39","type":"event_category"}},"event_types":{"data":[{"id":"32","type":"event_type"}]}}}]}}}}}}},"/api/v1/package_groups/{id}":{"get":{"summary":"Fetch package group by ID","tags":["Packages & Services"],"description":"Returns the details of a single package group, including its name, description, and associated service.\n\nUse the `include` query parameter to sideload related resources (comma-separated). Available: `event_types`, `event_category`.\n\n**Required permission:** `offerings_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"id","in":"path","description":"The unique ID of the package group","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"package group found","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"34","type":"package_group","attributes":{"id":34,"name":"Wedding Packages","position":1,"package_sort_preference":"price","event_category_id":40,"primary_image":{"panel_variant":null}},"relationships":{"event_category":{"data":{"id":"40","type":"event_category"}},"event_types":{"data":[]}}}}}}}}}},"/api/v1/photobooth_backgrounds":{"get":{"summary":"Fetch all backdrops","tags":["Backdrops"],"description":"Returns all photo booth backdrops for the business. Backdrops are the visual background options available for photo booth events.\n\nResults can be filtered by text search, widget visibility, and sort order.\n\n**Required permission:** `offerings_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"text","in":"query","description":"Search backdrops by name","required":false,"schema":{"type":"string"}},{"name":"only_widget_visible","in":"query","description":"Only return backdrops visible on the booking widget","required":false,"schema":{"type":"boolean"}},{"name":"order","in":"query","description":"Sort order for results","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"backdrops found","content":{"application/json":{"example":{"data":[{"id":"7","type":"photobooth_background","attributes":{"id":7,"name":"Gold Sequin Wall","description":"Sample description","position":1,"backdrop_category_id":13,"video_url":null,"third_party_video_id":null,"include_at_no_charge_with_certain_packages":false,"price":"100.00","price_cents":10000,"price_currency":"USD","price_formatted":"$100","taxable":true,"primary_image":{"video_variant":null,"content_type":"image/png","url":"http://www.checkcherry.localhost/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6OTQyLCJwdXIiOiJibG9iX2lkIn19--c970b078d0f29eb62da323668627892692c65157/sample.png"},"additional_images":[],"archived":false},"relationships":{"backdrop_category":{"data":{"id":"13","type":"backdrop_category"}}}}]}}}}}}},"/api/v1/photobooth_backgrounds/{id}":{"get":{"summary":"Fetch a backdrop by ID","tags":["Backdrops"],"description":"Returns the full details of a single photo booth backdrop, including its name, description, pricing, images, and video information.\n\nUse the `include` query parameter to sideload related resources (comma-separated). Available: `backdrop_category`.\n\n**Required permission:** `offerings_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"id","in":"path","description":"The unique ID of the backdrop","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"backdrop found","content":{"application/json":{"example":{"data":{"id":"8","type":"photobooth_background","attributes":{"id":8,"name":"Gold Sequin Wall","description":"Sample description","position":1,"backdrop_category_id":14,"video_url":null,"third_party_video_id":null,"include_at_no_charge_with_certain_packages":false,"price":"100.00","price_cents":10000,"price_currency":"USD","price_formatted":"$100","taxable":true,"primary_image":{"video_variant":null,"content_type":"image/png","url":"http://www.checkcherry.localhost/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6OTQ0LCJwdXIiOiJibG9iX2lkIn19--d19e9c5501e06f7f38775b164d3b1c66013fc40e/sample.png"},"additional_images":[],"archived":false},"relationships":{"backdrop_category":{"data":{"id":"14","type":"backdrop_category"}}}}}}}}}}},"/api/v1/reporting/booked_on_summary":{"get":{"summary":"Booked-on summary","tags":["Reporting"],"description":"Returns revenue totals bucketed by **when a booking was sold** (the `booked_at` date), rather than when the event runs. Each bucket reports the amount already collected, the amount still expected from non-postponed bookings (split into projected vs. past due), the amount tied up in postponed bookings, and the count of bookings.\n\nThis is the right endpoint for sales-pipeline questions like \"how much did we sell last month?\" or \"what was our best booking week?\". For event-date-based projections, use `revenue_projection_summary` instead.\n\nProposals are excluded. Only confirmed (non-archived) bookings with a `due_on` set are considered. All monetary fields are reported in cents.\n\n**Required permission:** `reports_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"interval","in":"query","type":"string","required":false,"description":"Time-bucket size. Defaults to `month`.","schema":{"type":"string","enum":["year","quarter","month","week","day"],"default":"month"}},{"name":"starts_at","in":"query","required":false,"description":"Start of the date range (YYYY-MM-DD), applied against `booked_at`. Defaults to one year ago. Snapped to the beginning of the chosen `interval`.","schema":{"type":"string"}},{"name":"ends_at","in":"query","required":false,"description":"End of the date range (YYYY-MM-DD), applied against `booked_at`. Defaults to today. Snapped to the end of the chosen `interval`.","schema":{"type":"string"}},{"name":"brand_id","in":"query","required":false,"description":"Limit results to a single brand. Omit to include all brands on the account.","schema":{"type":"integer"}}],"responses":{"200":{"description":"booked-on summary","content":{"application/json":{"example":{"results":[{"name":"Apr 2026","amount_paid_cents":0,"projected_cents":0,"postponed_cents":0,"past_due_cents":0,"total_cents":0,"event_count":0,"report_path":"/report/events?query%5Bbooked_at_dynamic%5D=custom&query%5Bbooked_at_end%5D=04-30-2026&query%5Bbooked_at_start%5D=04-01-2026&query%5Bbrand_id%5D=&query%5Bcolumns%5D%5B%5D=name&query%5Bcolumns%5D%5B%5D=status&query%5Bcolumns%5D%5B%5D=booked_at&query%5Bcolumns%5D%5B%5D=starts_at_date&query%5Bcolumns%5D%5B%5D=starts_at_time&query%5Bcolumns%5D%5B%5D=total_cost&query%5Bcolumns%5D%5B%5D=total_paid&query%5Bcolumns%5D%5B%5D=past_due_amount&query%5Bcolumns%5D%5B%5D=total_due&query%5Bstatus%5D=not_proposal"},{"name":"May 2026","amount_paid_cents":0,"projected_cents":0,"postponed_cents":0,"past_due_cents":0,"total_cents":0,"event_count":1,"report_path":"/report/events?query%5Bbooked_at_dynamic%5D=custom&query%5Bbooked_at_end%5D=05-31-2026&query%5Bbooked_at_start%5D=05-01-2026&query%5Bbrand_id%5D=&query%5Bcolumns%5D%5B%5D=name&query%5Bcolumns%5D%5B%5D=status&query%5Bcolumns%5D%5B%5D=booked_at&query%5Bcolumns%5D%5B%5D=starts_at_date&query%5Bcolumns%5D%5B%5D=starts_at_time&query%5Bcolumns%5D%5B%5D=total_cost&query%5Bcolumns%5D%5B%5D=total_paid&query%5Bcolumns%5D%5B%5D=past_due_amount&query%5Bcolumns%5D%5B%5D=total_due&query%5Bstatus%5D=not_proposal"},{"name":"Jun 2026","amount_paid_cents":0,"projected_cents":0,"postponed_cents":0,"past_due_cents":0,"total_cents":0,"event_count":0,"report_path":"/report/events?query%5Bbooked_at_dynamic%5D=custom&query%5Bbooked_at_end%5D=06-30-2026&query%5Bbooked_at_start%5D=06-01-2026&query%5Bbrand_id%5D=&query%5Bcolumns%5D%5B%5D=name&query%5Bcolumns%5D%5B%5D=status&query%5Bcolumns%5D%5B%5D=booked_at&query%5Bcolumns%5D%5B%5D=starts_at_date&query%5Bcolumns%5D%5B%5D=starts_at_time&query%5Bcolumns%5D%5B%5D=total_cost&query%5Bcolumns%5D%5B%5D=total_paid&query%5Bcolumns%5D%5B%5D=past_due_amount&query%5Bcolumns%5D%5B%5D=total_due&query%5Bstatus%5D=not_proposal"}]},"schema":{"type":"object","properties":{"results":{"type":"array","description":"One entry per interval bucket, in chronological order.","items":{"type":"object","properties":{"name":{"type":"string","description":"Human-readable label for the bucket (e.g. `Jan 2026`, `Q1 2026`)."},"amount_paid_cents":{"type":"integer","description":"Total already collected from bookings sold in this bucket, in cents."},"projected_cents":{"type":"integer","description":"Outstanding balance still expected from non-postponed bookings whose `due_on` is in the future, in cents."},"past_due_cents":{"type":"integer","description":"Outstanding balance from non-postponed bookings whose `due_on` has passed, in cents."},"postponed_cents":{"type":"integer","description":"Outstanding balance from postponed bookings, in cents."},"total_cents":{"type":"integer","description":"Sum of `amount_paid_cents`, `projected_cents`, `past_due_cents`, and `postponed_cents`, in cents."},"event_count":{"type":"integer","description":"Number of bookings sold in this bucket."},"report_path":{"type":"string","description":"Internal Check Cherry path that opens the matching report view in the web app. Not generally useful to API consumers."}}}}}}}}}}}},"/api/v1/reporting/lead_count_summary":{"get":{"summary":"Lead count summary","tags":["Reporting"],"description":"Returns the number of leads, bucketed by time interval. Useful for spotting trends in lead volume — answering \"are we getting more inquiries lately?\" or \"how many leads did we get last quarter?\".\n\nSpam-flagged and franchise-hidden leads are excluded. Use `chart_type` to choose whether leads are bucketed by **when they were created** (the default — measures inquiry volume) or **when the requested event would happen** (measures demand by event date).\n\n**Required permission:** `reports_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"interval","in":"query","type":"string","required":false,"description":"Time-bucket size. Defaults to `month`.","schema":{"type":"string","enum":["year","quarter","month","week","day"],"default":"month"}},{"name":"starts_at","in":"query","required":false,"description":"Start of the date range (YYYY-MM-DD). Defaults to one year ago. Snapped to the beginning of the chosen `interval`.","schema":{"type":"string"}},{"name":"ends_at","in":"query","required":false,"description":"End of the date range (YYYY-MM-DD). Defaults to today. Snapped to the end of the chosen `interval`.","schema":{"type":"string"}},{"name":"chart_type","in":"query","type":"string","required":false,"description":"Which date drives bucketing. `created_on` (default) buckets by lead creation date. `scheduled_on` buckets by the lead's requested event date.","schema":{"type":"string","enum":["created_on","scheduled_on"],"default":"created_on"}},{"name":"brand_id","in":"query","required":false,"description":"Limit results to a single brand. Omit to include all brands on the account.","schema":{"type":"integer"}}],"responses":{"200":{"description":"lead count summary","content":{"application/json":{"example":{"results":[{"name":"Apr 2026","lead_count":0,"report_path":"/report/leads?query%5Bbrand_id%5D=&query%5Bcolumns%5D%5B%5D=name&query%5Bcolumns%5D%5B%5D=status&query%5Bcolumns%5D%5B%5D=starts_at_date&query%5Bcolumns%5D%5B%5D=starts_at_time&query%5Bcolumns%5D%5B%5D=total_cost&query%5Bcolumns%5D%5B%5D=total_adjustments&query%5Bcolumns%5D%5B%5D=total_paid&query%5Bcolumns%5D%5B%5D=total_due&query%5Bstarts_at_dynamic%5D=custom&query%5Bstarts_at_end%5D=04-30-2026&query%5Bstarts_at_start%5D=04-01-2026&query%5Bstatus%5D=not_proposal"},{"name":"May 2026","lead_count":1,"report_path":"/report/leads?query%5Bbrand_id%5D=&query%5Bcolumns%5D%5B%5D=name&query%5Bcolumns%5D%5B%5D=status&query%5Bcolumns%5D%5B%5D=starts_at_date&query%5Bcolumns%5D%5B%5D=starts_at_time&query%5Bcolumns%5D%5B%5D=total_cost&query%5Bcolumns%5D%5B%5D=total_adjustments&query%5Bcolumns%5D%5B%5D=total_paid&query%5Bcolumns%5D%5B%5D=total_due&query%5Bstarts_at_dynamic%5D=custom&query%5Bstarts_at_end%5D=05-31-2026&query%5Bstarts_at_start%5D=05-01-2026&query%5Bstatus%5D=not_proposal"},{"name":"Jun 2026","lead_count":0,"report_path":"/report/leads?query%5Bbrand_id%5D=&query%5Bcolumns%5D%5B%5D=name&query%5Bcolumns%5D%5B%5D=status&query%5Bcolumns%5D%5B%5D=starts_at_date&query%5Bcolumns%5D%5B%5D=starts_at_time&query%5Bcolumns%5D%5B%5D=total_cost&query%5Bcolumns%5D%5B%5D=total_adjustments&query%5Bcolumns%5D%5B%5D=total_paid&query%5Bcolumns%5D%5B%5D=total_due&query%5Bstarts_at_dynamic%5D=custom&query%5Bstarts_at_end%5D=06-30-2026&query%5Bstarts_at_start%5D=06-01-2026&query%5Bstatus%5D=not_proposal"}]},"schema":{"type":"object","properties":{"results":{"type":"array","description":"One entry per interval bucket, in chronological order.","items":{"type":"object","properties":{"name":{"type":"string","description":"Human-readable label for the bucket (e.g. `Jan 2026`, `Q1 2026`)."},"lead_count":{"type":"integer","description":"Number of leads that fell in this bucket."},"report_path":{"type":"string","description":"Internal Check Cherry path that opens the matching report view in the web app. Not generally useful to API consumers."}}}}}}}}}}}},"/api/v1/reporting/payment_receipt_summary":{"get":{"summary":"Payment receipt summary","tags":["Reporting"],"description":"Returns the total payments actually collected, bucketed by time interval. Each bucket reports the amount received and the number of distinct payment records that landed in the bucket.\n\nPayments are bucketed by `paid_at` (when the money was actually received), not by the event date. Refunds and zero-amount records are excluded. Payments tied to archived or recurring template events are excluded. All monetary fields are reported in cents.\n\nPairs well with `revenue_projection_summary`: this endpoint answers \"how much came in?\", the projection endpoint answers \"how much do we still expect?\".\n\n**Required permission:** `reports_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"interval","in":"query","type":"string","required":false,"description":"Time-bucket size. Defaults to `month`.","schema":{"type":"string","enum":["year","quarter","month","week","day"],"default":"month"}},{"name":"starts_at","in":"query","required":false,"description":"Start of the date range (YYYY-MM-DD). Defaults to one year ago. Snapped to the beginning of the chosen `interval`.","schema":{"type":"string"}},{"name":"ends_at","in":"query","required":false,"description":"End of the date range (YYYY-MM-DD). Defaults to today. Snapped to the end of the chosen `interval`.","schema":{"type":"string"}},{"name":"brand_id","in":"query","required":false,"description":"Limit results to a single brand. Omit to include all brands on the account.","schema":{"type":"integer"}}],"responses":{"200":{"description":"payment receipt summary","content":{"application/json":{"example":{"results":[{"name":"Apr 2026","amount_paid_cents":0,"payment_count":0,"report_path":"/report/event_payments?query%5Bbrand_id%5D=&query%5Bpaid_at_dynamic%5D=custom&query%5Bpaid_at_end%5D=04-30-2026&query%5Bpaid_at_start%5D=04-01-2026"},{"name":"May 2026","amount_paid_cents":50000,"payment_count":1,"report_path":"/report/event_payments?query%5Bbrand_id%5D=&query%5Bpaid_at_dynamic%5D=custom&query%5Bpaid_at_end%5D=05-31-2026&query%5Bpaid_at_start%5D=05-01-2026"},{"name":"Jun 2026","amount_paid_cents":0,"payment_count":0,"report_path":"/report/event_payments?query%5Bbrand_id%5D=&query%5Bpaid_at_dynamic%5D=custom&query%5Bpaid_at_end%5D=06-30-2026&query%5Bpaid_at_start%5D=06-01-2026"}]},"schema":{"type":"object","properties":{"results":{"type":"array","description":"One entry per interval bucket, in chronological order.","items":{"type":"object","properties":{"name":{"type":"string","description":"Human-readable label for the bucket (e.g. `Jan 2026`, `Q1 2026`)."},"amount_paid_cents":{"type":"integer","description":"Total amount collected in this bucket, in cents."},"payment_count":{"type":"integer","description":"Number of payment records that fell in this bucket."},"report_path":{"type":"string","description":"Internal Check Cherry path that opens the matching report view in the web app. Not generally useful to API consumers."}}}}}}}}}}}},"/api/v1/reporting/proposal_count_summary":{"get":{"summary":"Proposal count summary","tags":["Reporting"],"description":"Returns the number of proposals, bucketed by time interval. Useful for measuring how many proposals the business is sending out — answering \"are we quoting more this quarter?\" or \"how many proposals went out last week?\".\n\nIncludes all non-archived proposals (any of `proposal_date_reserved`, `proposal_date_open`, or `proposal_awaiting_review`). Use `chart_type` to choose whether proposals are bucketed by **when they were created** (the default — measures sales-team activity) or **when the proposed event would happen** (measures pipeline by event date).\n\n**Required permission:** `reports_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"interval","in":"query","type":"string","required":false,"description":"Time-bucket size. Defaults to `month`.","schema":{"type":"string","enum":["year","quarter","month","week","day"],"default":"month"}},{"name":"starts_at","in":"query","required":false,"description":"Start of the date range (YYYY-MM-DD). Defaults to one year ago. Snapped to the beginning of the chosen `interval`.","schema":{"type":"string"}},{"name":"ends_at","in":"query","required":false,"description":"End of the date range (YYYY-MM-DD). Defaults to today. Snapped to the end of the chosen `interval`.","schema":{"type":"string"}},{"name":"chart_type","in":"query","type":"string","required":false,"description":"Which date drives bucketing. `created_on` (default) buckets by proposal creation date. `scheduled_on` buckets by the proposal's event date.","schema":{"type":"string","enum":["created_on","scheduled_on"],"default":"created_on"}},{"name":"brand_id","in":"query","required":false,"description":"Limit results to a single brand. Omit to include all brands on the account.","schema":{"type":"integer"}}],"responses":{"200":{"description":"proposal count summary","content":{"application/json":{"example":{"results":[{"name":"Apr 2026","proposal_count":0,"report_path":"/report/events?query%5Bbrand_id%5D=&query%5Bcolumns%5D%5B%5D=name&query%5Bcolumns%5D%5B%5D=status&query%5Bcolumns%5D%5B%5D=starts_at_date&query%5Bcolumns%5D%5B%5D=starts_at_time&query%5Bcolumns%5D%5B%5D=total_cost&query%5Bcolumns%5D%5B%5D=total_adjustments&query%5Bcolumns%5D%5B%5D=total_paid&query%5Bcolumns%5D%5B%5D=total_due&query%5Bstarts_at_dynamic%5D=custom&query%5Bstarts_at_end%5D=04-30-2026&query%5Bstarts_at_start%5D=04-01-2026&query%5Bstatus%5D=not_proposal"},{"name":"May 2026","proposal_count":1,"report_path":"/report/events?query%5Bbrand_id%5D=&query%5Bcolumns%5D%5B%5D=name&query%5Bcolumns%5D%5B%5D=status&query%5Bcolumns%5D%5B%5D=starts_at_date&query%5Bcolumns%5D%5B%5D=starts_at_time&query%5Bcolumns%5D%5B%5D=total_cost&query%5Bcolumns%5D%5B%5D=total_adjustments&query%5Bcolumns%5D%5B%5D=total_paid&query%5Bcolumns%5D%5B%5D=total_due&query%5Bstarts_at_dynamic%5D=custom&query%5Bstarts_at_end%5D=05-31-2026&query%5Bstarts_at_start%5D=05-01-2026&query%5Bstatus%5D=not_proposal"},{"name":"Jun 2026","proposal_count":0,"report_path":"/report/events?query%5Bbrand_id%5D=&query%5Bcolumns%5D%5B%5D=name&query%5Bcolumns%5D%5B%5D=status&query%5Bcolumns%5D%5B%5D=starts_at_date&query%5Bcolumns%5D%5B%5D=starts_at_time&query%5Bcolumns%5D%5B%5D=total_cost&query%5Bcolumns%5D%5B%5D=total_adjustments&query%5Bcolumns%5D%5B%5D=total_paid&query%5Bcolumns%5D%5B%5D=total_due&query%5Bstarts_at_dynamic%5D=custom&query%5Bstarts_at_end%5D=06-30-2026&query%5Bstarts_at_start%5D=06-01-2026&query%5Bstatus%5D=not_proposal"}]},"schema":{"type":"object","properties":{"results":{"type":"array","description":"One entry per interval bucket, in chronological order.","items":{"type":"object","properties":{"name":{"type":"string","description":"Human-readable label for the bucket (e.g. `Jan 2026`, `Q1 2026`)."},"proposal_count":{"type":"integer","description":"Number of proposals that fell in this bucket."},"report_path":{"type":"string","description":"Internal Check Cherry path that opens the matching report view in the web app. Not generally useful to API consumers."}}}}}}}}}}}},"/api/v1/reporting/revenue_projection_summary":{"get":{"summary":"Revenue projection summary","tags":["Reporting"],"description":"Returns projected revenue for the business, bucketed by time interval. Each bucket reports the amount already collected, the amount still expected from confirmed bookings, the amount that has slipped past due, and the amount tied up in postponed bookings — along with the number of bookings in that interval.\n\nProposals are excluded. Only confirmed (non-archived) bookings whose `earliest_starts_at` falls within the bucket contribute to the totals. All monetary fields are reported in cents.\n\nUseful for dashboards, cash-flow forecasting, and answering questions like \"how much do we expect to bring in next quarter?\" or \"how much is past due from last month?\".\n\n**Required permission:** `reports_read`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"interval","in":"query","type":"string","required":false,"description":"Time-bucket size for the projection. Defaults to `month`.","schema":{"type":"string","enum":["year","quarter","month","week","day"],"default":"month"}},{"name":"starts_at","in":"query","required":false,"description":"Start of the date range to project over (YYYY-MM-DD). Defaults to one year ago. The range is snapped to the beginning of the chosen `interval`.","schema":{"type":"string"}},{"name":"ends_at","in":"query","required":false,"description":"End of the date range to project over (YYYY-MM-DD). Defaults to today. The range is snapped to the end of the chosen `interval`.","schema":{"type":"string"}},{"name":"brand_id","in":"query","required":false,"description":"Limit the projection to a single brand. Omit to include all brands on the account.","schema":{"type":"integer"}}],"responses":{"200":{"description":"revenue projection summary","content":{"application/json":{"example":{"results":[{"name":"Apr 2026","amount_paid_cents":0,"projected_cents":0,"postponed_cents":0,"past_due_cents":0,"total_cents":0,"event_count":0,"report_path":"/report/events?query%5Bbrand_id%5D=&query%5Bcolumns%5D%5B%5D=name&query%5Bcolumns%5D%5B%5D=status&query%5Bcolumns%5D%5B%5D=starts_at_date&query%5Bcolumns%5D%5B%5D=starts_at_time&query%5Bcolumns%5D%5B%5D=total_cost&query%5Bcolumns%5D%5B%5D=past_due_amount&query%5Bcolumns%5D%5B%5D=total_paid&query%5Bcolumns%5D%5B%5D=past_due_amount&query%5Bcolumns%5D%5B%5D=total_due&query%5Bstarts_at_dynamic%5D=custom&query%5Bstarts_at_end%5D=04-30-2026&query%5Bstarts_at_start%5D=04-01-2026&query%5Bstatus%5D=not_proposal"},{"name":"May 2026","amount_paid_cents":0,"projected_cents":0,"postponed_cents":0,"past_due_cents":0,"total_cents":0,"event_count":0,"report_path":"/report/events?query%5Bbrand_id%5D=&query%5Bcolumns%5D%5B%5D=name&query%5Bcolumns%5D%5B%5D=status&query%5Bcolumns%5D%5B%5D=starts_at_date&query%5Bcolumns%5D%5B%5D=starts_at_time&query%5Bcolumns%5D%5B%5D=total_cost&query%5Bcolumns%5D%5B%5D=past_due_amount&query%5Bcolumns%5D%5B%5D=total_paid&query%5Bcolumns%5D%5B%5D=past_due_amount&query%5Bcolumns%5D%5B%5D=total_due&query%5Bstarts_at_dynamic%5D=custom&query%5Bstarts_at_end%5D=05-31-2026&query%5Bstarts_at_start%5D=05-01-2026&query%5Bstatus%5D=not_proposal"},{"name":"Jun 2026","amount_paid_cents":0,"projected_cents":0,"postponed_cents":0,"past_due_cents":0,"total_cents":0,"event_count":1,"report_path":"/report/events?query%5Bbrand_id%5D=&query%5Bcolumns%5D%5B%5D=name&query%5Bcolumns%5D%5B%5D=status&query%5Bcolumns%5D%5B%5D=starts_at_date&query%5Bcolumns%5D%5B%5D=starts_at_time&query%5Bcolumns%5D%5B%5D=total_cost&query%5Bcolumns%5D%5B%5D=past_due_amount&query%5Bcolumns%5D%5B%5D=total_paid&query%5Bcolumns%5D%5B%5D=past_due_amount&query%5Bcolumns%5D%5B%5D=total_due&query%5Bstarts_at_dynamic%5D=custom&query%5Bstarts_at_end%5D=06-30-2026&query%5Bstarts_at_start%5D=06-01-2026&query%5Bstatus%5D=not_proposal"},{"name":"Jul 2026","amount_paid_cents":0,"projected_cents":0,"postponed_cents":0,"past_due_cents":0,"total_cents":0,"event_count":0,"report_path":"/report/events?query%5Bbrand_id%5D=&query%5Bcolumns%5D%5B%5D=name&query%5Bcolumns%5D%5B%5D=status&query%5Bcolumns%5D%5B%5D=starts_at_date&query%5Bcolumns%5D%5B%5D=starts_at_time&query%5Bcolumns%5D%5B%5D=total_cost&query%5Bcolumns%5D%5B%5D=past_due_amount&query%5Bcolumns%5D%5B%5D=total_paid&query%5Bcolumns%5D%5B%5D=past_due_amount&query%5Bcolumns%5D%5B%5D=total_due&query%5Bstarts_at_dynamic%5D=custom&query%5Bstarts_at_end%5D=07-31-2026&query%5Bstarts_at_start%5D=07-01-2026&query%5Bstatus%5D=not_proposal"}]},"schema":{"type":"object","properties":{"results":{"type":"array","description":"One entry per interval bucket, in chronological order.","items":{"type":"object","properties":{"name":{"type":"string","description":"Human-readable label for the bucket (e.g. `Jan 2026`, `Q1 2026`)."},"amount_paid_cents":{"type":"integer","description":"Total already collected from bookings in this bucket, in cents."},"projected_cents":{"type":"integer","description":"Outstanding balance still expected from non-postponed bookings whose `due_on` is in the future, in cents."},"past_due_cents":{"type":"integer","description":"Outstanding balance from non-postponed bookings whose `due_on` has passed, in cents."},"postponed_cents":{"type":"integer","description":"Outstanding balance from postponed bookings, in cents."},"total_cents":{"type":"integer","description":"Sum of `amount_paid_cents`, `projected_cents`, `past_due_cents`, and `postponed_cents`, in cents."},"event_count":{"type":"integer","description":"Number of bookings included in this bucket."},"report_path":{"type":"string","description":"Internal Check Cherry path that opens the matching report view in the web app. Not generally useful to API consumers."}}}}}}}}}}}},"/api/v1/support_articles":{"get":{"summary":"Search and list help center articles","tags":["Support Articles"],"description":"Returns published, non-internal Check Cherry help center articles. Use this to answer customer questions about how the platform works (booking flow, payments, leads, integrations, etc.) instead of guessing.\n\nFilter by `category` to scope the list, or pass `text` to run a full-text search across the article title, body, and meta description. When `text` is present results are ranked by relevance; otherwise articles are returned in display order within their category.\n\n**Required permission:** `global`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"text","in":"query","required":false,"description":"Full-text search query across article title, body, and meta description","schema":{"type":"string"}},{"name":"category","in":"query","required":false,"description":"Filter by article category (e.g., bookings, leads, payments)","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"Page number (default: 1)","schema":{"type":"integer"}},{"name":"per","in":"query","required":false,"description":"Results per page (default: 20)","schema":{"type":"integer"}}],"responses":{"200":{"description":"support articles found","content":{"application/json":{"example":{"meta":{"status":"ok","total_count":2,"per_page":20},"data":[{"id":"32","type":"support_article","attributes":{"title":"How to create a booking","slug":"how-to-create-a-booking","category":"bookings","category_label":"Bookings","meta_description":"Repellat et voluptatibus tenetur.","body_text":"Eos impedit quis. Exercitationem perspiciatis voluptas. Placeat vitae quia. Section Step one. Step two.","body_html":"<p>Eos impedit quis. Exercitationem perspiciatis voluptas. Placeat vitae quia.</p>\n<h2 id=\"section\">Section</h2>\n<div class=\"steps\"><div class=\"step\"><div class=\"step-content\">Step one.</div></div>\n<div class=\"step\"><div class=\"step-content\">Step two.</div></div></div>","url":"http://www.checkcherry.localhost/help/32-how-to-create-a-booking","published_at":"2026-06-09T13:56:11.363-07:00","updated_at":"2026-06-09T13:56:11.369-07:00"}},{"id":"33","type":"support_article","attributes":{"title":"Lead capture forms","slug":"lead-capture-forms","category":"leads","category_label":"Leads","meta_description":"Quia quis molestiae magni.","body_text":"Ab neque libero. Enim quo reprehenderit. Accusamus eos sed. Section Step one. Step two.","body_html":"<p>Ab neque libero. Enim quo reprehenderit. Accusamus eos sed.</p>\n<h2 id=\"section\">Section</h2>\n<div class=\"steps\"><div class=\"step\"><div class=\"step-content\">Step one.</div></div>\n<div class=\"step\"><div class=\"step-content\">Step two.</div></div></div>","url":"http://www.checkcherry.localhost/help/33-lead-capture-forms","published_at":"2026-06-09T13:56:11.376-07:00","updated_at":"2026-06-09T13:56:11.377-07:00"}}]}}}}}}},"/api/v1/support_articles/{slug}":{"get":{"summary":"Fetch a help center article by slug","tags":["Support Articles"],"description":"Returns a single published help center article by its slug. The response includes both a plain-text body (best for AI assistants to read) and a rendered HTML body (for display).\n\n**Required permission:** `global`\n","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}},{"name":"slug","in":"path","required":true,"description":"The article's URL slug","schema":{"type":"string"}}],"responses":{"200":{"description":"support article found","content":{"application/json":{"example":{"meta":{"status":"ok"},"data":{"id":"34","type":"support_article","attributes":{"title":"How to create a booking","slug":"how-to-create-a-booking","category":"bookings","category_label":"Bookings","meta_description":"Excepturi voluptatem impedit id.","body_text":"Voluptate dolorum incidunt. Excepturi laudantium fugit. Sed deserunt ab. Section Step one. Step two.","body_html":"<p>Voluptate dolorum incidunt. Excepturi laudantium fugit. Sed deserunt ab.</p>\n<h2 id=\"section\">Section</h2>\n<div class=\"steps\"><div class=\"step\"><div class=\"step-content\">Step one.</div></div>\n<div class=\"step\"><div class=\"step-content\">Step two.</div></div></div>","url":"http://www.checkcherry.localhost/help/34-how-to-create-a-booking","published_at":"2026-06-09T13:56:11.529-07:00","updated_at":"2026-06-09T13:56:11.534-07:00"}}}}}}}}},"/api/v1/template_selections":{"post":{"summary":"Submit a template selection","tags":["Template Selections"],"description":"After a customer chooses a template, this API endpoint should be called.\n\n**Required permission:** `design_template_select`","parameters":[{"name":"Api-Key","in":"header","required":true,"description":"Your Integration Key","schema":{"type":"string"}}],"responses":{"200":{"description":"template selection submitted","content":{"application/json":{"example":{"meta":{"status":"ok"}}}}},"422":{"description":"validation errors","content":{"application/json":{"example":{"meta":{"status":"error"},"errors":{"template_name":["Template name can't be blank"],"template_image_url":["Template image url can't be blank"]}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"template_selection":{"type":"object","properties":{"event_booking_id":{"type":"integer","description":"Check Cherry Booking ID"},"design_id":{"type":"integer","description":"Design ID"},"user_id":{"type":"integer","description":"User ID"},"template_name":{"type":"string","description":"Template Name"},"template_image_url":{"type":"string","description":"Template Image URL"},"account_number":{"type":"string","description":"Your Customer's Account Number"},"template_purchase_url":{"type":"string","description":"Template Purchase URL"}},"required":["event_booking_id","design_id","user_id","template_name","template_image_url"]}}}}}}}}},"servers":[{"url":"https://api.checkcherry.com"}],"tags":[{"name":"Leads","description":"Leads represent potential customer inquiries — someone who has expressed interest in booking an event but hasn't yet committed. A lead captures contact information, event preferences, venue details, and any messages from the initial inquiry.\n\nUse the Leads API to push inquiries from external sources (your website, third-party platforms, advertising campaigns) into Check Cherry, where they enter the business's sales pipeline. Leads can be assigned to staff members for follow-up, filtered and searched, and eventually converted into confirmed events.\n"},{"name":"Proposals/Confirmed Bookings","description":"Events are the core unit of work in Check Cherry, representing both confirmed bookings and proposals. An event includes the client, date and time, venue, assigned staff, selected packages, add-ons, and payment details.\n\nUse the Events API to create new bookings or proposals, retrieve event details, and list events for a business.\n"},{"name":"Appointments","description":"Appointments represent scheduled meetings between staff and guests (e.g., consultations, site visits, tastings). Each appointment has a guest, date/time, location, and one or more assigned staff members. Appointments can be created, updated, canceled, uncanceled, duplicated, and deleted.\n"},{"name":"Availability","description":"Check real-time availability for the business. Query by date, package, staff member, add-on, or backdrop to determine what time slots are open. Use available slots endpoints to build booking interfaces where customers pick a time.\n"},{"name":"Packages & Services","description":"Services, package groups, and packages define what a business offers. Services (event categories) are the top-level grouping (e.g., \"DJ Services\", \"Photo Booth\"). Each service contains package groups, which in turn contain individual packages (event types) with pricing, duration, and availability settings.\n"},{"name":"Add-Ons","description":"Add-ons are optional upgrades or equipment that can be added to an event (e.g., extra speakers, uplighting, fog machine). Add-ons are organized into categories and support flat-rate, hourly, or daily pricing.\n"},{"name":"Backdrops","description":"Photo booth backdrops available for events. Backdrops are organized into categories and include pricing, images, and optional video previews.\n"},{"name":"Extras","description":"Extras are additional items or services customers can select when booking (e.g., premium props, custom signage, themed decorations). Extras are organized into categories with customer visibility controls and support flat-rate, hourly, or daily pricing.\n"},{"name":"Expenses","description":"Expenses track business costs such as equipment purchases, venue fees, staff payments, and other expenditures. Each expense has a payee (custom text or a staff member reference), amount, payment date, reference number, and optional category and event associations.\n\nExpense categories provide a hierarchical grouping for expenses, allowing businesses to organize and report on spending by type.\n"},{"name":"Checklists","description":"Checklists organize tasks and reminders for a business. The Checklists API covers three related resources:\n\n**Checklists** are the containers. Each one is attached to a single record (the \"checkable\") that determines its scope:\n\n- **Event checklists** are tied to a confirmed booking or proposal and   usually capture the work surrounding that one event.\n- **User checklists** are personal task lists scoped to a single staff   member. There is at most one per user and it is created lazily the first   time the owner views it.\n- **Franchise checklists** (the \"Shared Checklist\") are scoped to the   franchise and shared across the team.\n\n**Checklist items** are the actual to-do entries inside a checklist. Each item has a title, optional notes, optional due date, optional assigned staff, and a checked/unchecked state. Items always belong to exactly one checklist and inherit that checklist's visibility and edit settings.\n\n**Checklist categories** are reusable templates. Creating a checklist from a category seeds the new checklist with the category's name, view/edit flags, and starting set of items. Categories are managed in the Check Cherry admin UI; the API exposes a read-only list so integrations can show their users which template to start from.\n\n**Visibility** is automatic based on the authenticated user's role: admins see every checklist; staff see their personal checklist plus event checklists they're assigned to or that allow staff view; customers see their event checklists where customer view is allowed. Per-checklist `allow_staff_view`, `allow_customer_view`, `allow_staff_edit`, and `allow_customer_edit` flags further control what staff and customers can see and modify, and which item-level actions they can perform — see and check go together, while editing, adding, and removing items require the edit flag.\n"},{"name":"Payments","description":"Payments represent financial transactions recorded against events — charges, tips, and refunds. Payments can be manual (cash, check, other) or processed through a payment gateway (Stripe, Square, PayPal). Each payment includes amount breakdowns, tax details, and processor information.\n\nUse the Payments API to list payments across all events, look up individual payment records, and filter by event or date range.\n"},{"name":"Reporting","description":"Reporting endpoints surface aggregated, read-only summaries of a business's data — revenue projections, lead and proposal counts, payment receipts, booked-on activity, staff productivity, package utilization, and more. They are intended for dashboards, BI tools, and AI assistants that need to answer \"how is the business doing?\" questions without paging through individual events, leads, or payments.\n\nAll reporting endpoints require the `reports_read` permission on the integration key. Most accept a date range (`starts_at` / `ends_at`) and an optional `brand_id` filter, and return raw JSON (not JSON:API) shaped for chart-friendly consumption.\n"},{"name":"Design Templates","description":"Design Templates available to a specific business. These are templates that have been made available through the App Platform and enabled for the business's account.\n"},{"name":"Template Selections","description":"Template Selections track which design templates a business has chosen for their account. Use this endpoint to submit a template selection on behalf of a business.\n"}],"components":{"securitySchemes":{"integration_key":{"type":"apiKey","name":"Api-Key","in":"header","description":"Your Integration Key from Check Cherry (ik_ prefix)"}}}}