Schedules
The Schedules API allows you to manage and view booked appointments. Schedules represent confirmed bookings with full details and management capabilities.
List Schedules
Retrieve all scheduled bookings with pagination.
Endpoint
GET /schedulesQuery Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
page | integer | No | Page number (default: 1) |
search | string | No | Search by attendee name or email |
filters[event] | integer | No | Filter by event ID |
filters[author] | integer|string | No | Filter by calendar ID, me for current user, or all |
filters[event_type] | string | No | Filter by event type (e.g., single, group) |
filters[period] | string | No | Time period: upcoming, past, today, cancelled, pending, no_show (default: upcoming) |
filters[range] | array | No | Custom date range filter |
Response
Returns paginated list of scheduled bookings with calendar event information.
{
"schedules": {
"current_page": 1,
"data": [
{
"id": 1,
"event_id": 2,
"calendar_id": 1,
"group_id": 1,
"hash": "abc123def456",
"person_user_id": null,
"host_user_id": 1,
"person_time_zone": "America/New_York",
"event_type": "single",
"status": "scheduled",
"payment_status": "paid",
"first_name": "John",
"last_name": "Doe",
"email": "[email protected]",
"phone": "+1234567890",
"message": "Project discussion",
"internal_note": "",
"start_time": "2025-01-15 10:00:00",
"end_time": "2025-01-15 10:30:00",
"slot_minutes": 30,
"source": "web",
"source_url": "https://example.com/booking-page",
"location_details": {
"type": "phone_guest",
"description": "+1234567890"
},
"created_at": "2025-01-10T08:30:00+00:00",
"updated_at": "2025-01-10T08:30:00+00:00",
"title": "30 Minute Consultation between Jane Smith and John Doe",
"author": {
"id": 1,
"name": "Jane Smith",
"email": "[email protected]",
"first_name": "Jane",
"last_name": "Smith",
"avatar": "https://example.com/avatar.jpg"
},
"details": "What:\n30 Minute Consultation\n\nWhen:\nWed Jan 15, 10:00am - 10:30am, America/New_York",
"location": "<b>Attendee Phone Number</b>: +1234567890",
"reschedule_url": "https://example.com/?fluent-booking=booking&meeting_hash=abc123def456&type=reschedule",
"happening_status": {},
"booking_status_text": "Scheduled",
"payment_status_text": "Paid",
"custom_form_data": [],
"additional_guests": [],
"calendar_event": {
"id": 2,
"title": "30 Minute Consultation",
"slug": "30min",
"color_schema": "#0099ff"
},
"calendar": {
"id": 1,
"title": "Jane Smith",
"slug": "jane-smith"
}
}
],
"total": 1,
"per_page": 15,
"current_page": 1,
"last_page": 1
},
"timezone": "UTC",
"calendar_event_lists": [
{
"id": 1,
"title": "Jane Smith",
"options": [
{
"id": 2,
"title": "30 Minute Consultation"
}
]
}
],
"pending_count": 3,
"no_show_count": 1,
"cancelled_count": 5
}NOTE
The pending_count, no_show_count, and cancelled_count fields are only included in the response when page=1 (the first page). These provide summary statistics useful for building dashboards.
Get Schedule Details
Retrieve full details for a specific scheduled booking.
Endpoint
GET /schedules/{id}URL Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | integer | Yes | The schedule/booking ID |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
with[] | array | No | Include additional data. Pass all_data to include activities, meta info, and payment data |
Response
Returns complete booking details with attendee information and event settings.
The schedule object contains the same formatted booking fields as described in the List Schedules response above.
{
"schedule": {
"id": 1,
"event_id": 2,
"calendar_id": 1,
"hash": "abc123def456",
"status": "scheduled",
"first_name": "John",
"last_name": "Doe",
"email": "[email protected]",
"phone": "+1234567890",
"message": "Project discussion",
"person_time_zone": "America/New_York",
"start_time": "2025-01-15 10:00:00",
"end_time": "2025-01-15 10:30:00",
"slot_minutes": 30,
"location_details": {
"type": "phone_guest",
"description": "+1234567890"
},
"title": "30 Minute Consultation between Jane Smith and John Doe",
"author": {
"id": 1,
"name": "Jane Smith",
"email": "[email protected]",
"first_name": "Jane",
"last_name": "Smith",
"avatar": "https://example.com/avatar.jpg"
},
"...": "See List Schedules response for all fields"
}
}When with[]=all_data is passed, the response includes additional top-level fields:
{
"schedule": { "...": "Full booking object" },
"activities": [
{
"id": 1,
"booking_id": 1,
"parent_id": null,
"created_by": 1,
"status": "closed",
"type": "success",
"title": "Booking Created",
"description": "Booking created by John Doe",
"created_at": "2025-01-10T08:30:00+00:00",
"updated_at": "2025-01-10T08:30:00+00:00"
}
],
"sidebar_contents": [],
"payment_order": null,
"main_body_contents": []
}| Field | Type | Description |
|---|---|---|
activities | array | Activity log entries for the booking |
sidebar_contents | array | Additional sidebar content from integrations (e.g., CRM profile if FluentCRM is active) |
payment_order | object|null | Payment order with items, transaction, and discount data (if applicable) |
main_body_contents | array | Additional metadata content from integrations |
Update Schedule
Update a field on a scheduled booking. Updates are applied one field at a time using the column and value parameters.
Endpoint
PUT /schedules/{id}URL Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | integer | Yes | The schedule/booking ID |
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
column | string | Yes | Field to update. Valid values: status, payment_status, internal_note, email, phone, first_name, last_name |
value | string | Yes | New value for the field |
cancel_reason | string | Conditional | Required when setting column=status and value=cancelled |
reject_reason | string | Conditional | Required when setting column=status and value=rejected |
refund_payment | string | No | Set to yes to refund payment when cancelling/rejecting |
update_all | boolean | No | Update all attendees in a multi-guest booking |
Valid Status Values
| Value | Description |
|---|---|
scheduled | Confirm/approve the booking |
completed | Mark as completed |
cancelled | Cancel the booking (requires cancel_reason) |
rejected | Reject the booking (requires reject_reason) |
no_show | Mark attendee as no-show |
Valid Payment Status Values
| Value | Description |
|---|---|
pending | Payment is pending |
paid | Payment completed |
Example Requests
Cancel a booking:
{
"column": "status",
"value": "cancelled",
"cancel_reason": "Schedule conflict"
}Update internal note:
{
"column": "internal_note",
"value": "Discussed project requirements"
}Mark payment as paid:
{
"column": "payment_status",
"value": "paid"
}Response
The response message varies depending on the column and value:
- For
statusset tocancelledorrejected:"The booking has been cancelled"/"The booking has been rejected" - For other column updates:
"{Column} has been updated"(e.g.,"Status has been updated","Email has been updated")
{
"message": "Status has been updated"
}Delete Schedule
Permanently delete a booking record.
Endpoint
DELETE /schedules/{id}URL Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | integer | Yes | The schedule/booking ID |
Response
{
"message": "Booking Deleted Successfully!"
}WARNING
This permanently deletes the booking. For multi-guest bookings, all attendees in the group are also deleted. To cancel a booking while preserving the record, use the Update Schedule endpoint with column=status and value=cancelled instead.
Get Booking Activities
Retrieve activity log for a booking (changes, emails sent, etc.).
Endpoint
GET /schedules/{id}/activitiesURL Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | integer | Yes | The schedule/booking ID |
Response
Returns array of activity log entries.
{
"activities": [
{
"id": 1,
"booking_id": 1,
"parent_id": null,
"created_by": 1,
"status": "closed",
"type": "success",
"title": "Booking Created",
"description": "Booking created by John Doe",
"created_at": "2025-01-10T08:30:00+00:00",
"updated_at": "2025-01-10T08:30:00+00:00"
},
{
"id": 2,
"booking_id": 1,
"parent_id": null,
"created_by": null,
"status": "closed",
"type": "info",
"title": "Email Sent",
"description": "Confirmation email sent to [email protected]",
"created_at": "2025-01-10T08:30:15+00:00",
"updated_at": "2025-01-10T08:30:15+00:00"
}
]
}Get Booking Meta Info
Retrieve additional metadata for a booking.
Endpoint
GET /schedules/{id}/meta-infoURL Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | integer | Yes | The schedule/booking ID |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
with | string | No | Pass all_data to include activities, payment order, and transaction data |
Response
Returns booking metadata including activities, sidebar content, and payment information.
{
"activities": [
{
"id": 1,
"booking_id": 1,
"parent_id": null,
"created_by": 1,
"status": "closed",
"type": "success",
"title": "Booking Created",
"description": "Booking created by John Doe",
"created_at": "2025-01-10T08:30:00+00:00",
"updated_at": "2025-01-10T08:30:00+00:00"
}
],
"sidebar_contents": [],
"payment_order": null,
"main_body_contents": []
}| Field | Type | Description |
|---|---|---|
activities | array | Activity log entries for the booking (see Get Booking Activities for field details) |
sidebar_contents | array | Additional sidebar content from integrations (e.g., CRM profile if FluentCRM is active) |
payment_order | object|null | Payment order with items, transaction, and discount data (if applicable) |
main_body_contents | array | Additional metadata content from integrations |
Send Confirmation Email
Manually resend a confirmation email for a booking.
Endpoint
POST /schedules/{id}/send-confirmation-emailURL Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | integer | Yes | The schedule/booking ID |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
email_to | string | No | Recipient: guest (default) or host |
Response
{
"message": "Notification sent successfully"
}Get Group Booking Attendees
Retrieve all attendees for a group booking.
Endpoint
GET /schedules/group-bookings/{group_id}/attendeesURL Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
group_id | integer | Yes | The group booking ID |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
search | string | No | Search attendees by name or email |
Response
Returns a paginated list of attendees in the group booking. Each attendee is a formatted booking object with the same fields as described in the List Schedules response.
{
"attendees": {
"current_page": 1,
"data": [
{
"id": 5,
"event_id": 2,
"group_id": 1,
"first_name": "John",
"last_name": "Doe",
"email": "[email protected]",
"status": "scheduled",
"...": "See List Schedules response for all fields"
}
],
"total": 1,
"per_page": 15,
"current_page": 1,
"last_page": 1
}
}