Skip to content

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

http
GET /schedules

Query Parameters

ParameterTypeRequiredDescription
pageintegerNoPage number (default: 1)
searchstringNoSearch by attendee name or email
filters[event]integerNoFilter by event ID
filters[author]integer|stringNoFilter by calendar ID, me for current user, or all
filters[event_type]stringNoFilter by event type (e.g., single, group)
filters[period]stringNoTime period: upcoming, past, today, cancelled, pending, no_show (default: upcoming)
filters[range]arrayNoCustom date range filter

Response

Returns paginated list of scheduled bookings with calendar event information.

json
{
    "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

http
GET /schedules/{id}

URL Parameters

ParameterTypeRequiredDescription
idintegerYesThe schedule/booking ID

Query Parameters

ParameterTypeRequiredDescription
with[]arrayNoInclude 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.

json
{
    "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:

json
{
    "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": []
}
FieldTypeDescription
activitiesarrayActivity log entries for the booking
sidebar_contentsarrayAdditional sidebar content from integrations (e.g., CRM profile if FluentCRM is active)
payment_orderobject|nullPayment order with items, transaction, and discount data (if applicable)
main_body_contentsarrayAdditional 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

http
PUT /schedules/{id}

URL Parameters

ParameterTypeRequiredDescription
idintegerYesThe schedule/booking ID

Request Body

ParameterTypeRequiredDescription
columnstringYesField to update. Valid values: status, payment_status, internal_note, email, phone, first_name, last_name
valuestringYesNew value for the field
cancel_reasonstringConditionalRequired when setting column=status and value=cancelled
reject_reasonstringConditionalRequired when setting column=status and value=rejected
refund_paymentstringNoSet to yes to refund payment when cancelling/rejecting
update_allbooleanNoUpdate all attendees in a multi-guest booking

Valid Status Values

ValueDescription
scheduledConfirm/approve the booking
completedMark as completed
cancelledCancel the booking (requires cancel_reason)
rejectedReject the booking (requires reject_reason)
no_showMark attendee as no-show

Valid Payment Status Values

ValueDescription
pendingPayment is pending
paidPayment completed

Example Requests

Cancel a booking:

json
{
    "column": "status",
    "value": "cancelled",
    "cancel_reason": "Schedule conflict"
}

Update internal note:

json
{
    "column": "internal_note",
    "value": "Discussed project requirements"
}

Mark payment as paid:

json
{
    "column": "payment_status",
    "value": "paid"
}

Response

The response message varies depending on the column and value:

  • For status set to cancelled or rejected: "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")
json
{
    "message": "Status has been updated"
}

Delete Schedule

Permanently delete a booking record.

Endpoint

http
DELETE /schedules/{id}

URL Parameters

ParameterTypeRequiredDescription
idintegerYesThe schedule/booking ID

Response

json
{
    "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

http
GET /schedules/{id}/activities

URL Parameters

ParameterTypeRequiredDescription
idintegerYesThe schedule/booking ID

Response

Returns array of activity log entries.

json
{
    "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

http
GET /schedules/{id}/meta-info

URL Parameters

ParameterTypeRequiredDescription
idintegerYesThe schedule/booking ID

Query Parameters

ParameterTypeRequiredDescription
withstringNoPass all_data to include activities, payment order, and transaction data

Response

Returns booking metadata including activities, sidebar content, and payment information.

json
{
    "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": []
}
FieldTypeDescription
activitiesarrayActivity log entries for the booking (see Get Booking Activities for field details)
sidebar_contentsarrayAdditional sidebar content from integrations (e.g., CRM profile if FluentCRM is active)
payment_orderobject|nullPayment order with items, transaction, and discount data (if applicable)
main_body_contentsarrayAdditional metadata content from integrations

Send Confirmation Email

Manually resend a confirmation email for a booking.

Endpoint

http
POST /schedules/{id}/send-confirmation-email

URL Parameters

ParameterTypeRequiredDescription
idintegerYesThe schedule/booking ID

Query Parameters

ParameterTypeRequiredDescription
email_tostringNoRecipient: guest (default) or host

Response

json
{
    "message": "Notification sent successfully"
}

Get Group Booking Attendees

Retrieve all attendees for a group booking.

Endpoint

http
GET /schedules/group-bookings/{group_id}/attendees

URL Parameters

ParameterTypeRequiredDescription
group_idintegerYesThe group booking ID

Query Parameters

ParameterTypeRequiredDescription
searchstringNoSearch 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.

json
{
    "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
    }
}