DevelopersAPI reference

Online booking API

REST endpoints for online booking in ServFlo: 2 operations with parameters, request and response fields, permissions and curl examples.

Base URL: https://app.servflo.ai/api. Every call needs Authorization: Bearer sfk_… (Authentication); {organizationId} ($ORGANIZATION_ID in the examples) is your business's id.

OperationEndpointRisk
Online scheduling settingsGET /organizations/{organizationId}/online-bookingread
Change online scheduling settingsPATCH /organizations/{organizationId}/online-bookingwrite

Online scheduling settings

GET /organizations/{organizationId}/online-booking

How the public booking form books: the mode, confirmation, slot interval, arrival window, lead time, horizon, travel buffer, daily cap and service-area ZIP codes. The defaults until saved. Read-only. The on/off switch itself is PATCH /booking-settings.

Permissionsettings.read (Owner, Admin, Dispatcher)
Riskread, OAuth scope servflo.read. Read: reads only.
MCP toolonlineBooking_get (toolset sales)

Example

curl "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/online-booking" \
  -H "Authorization: Bearer $SERVFLO_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
slugstringThe booking form is at /book/{slug}.
bookingEnabledboolean
modeenumRequest: customers send a request with a preferred day; SLOTS: they pick a real arrival window. One of REQUEST, SLOTS.
confirmationenumManual: a booked slot is held by a NEW request until staff confirm it; AUTOMATIC: a job is made at once (unless the contact matches an existing customer). One of MANUAL, AUTOMATIC.
slotIntervalMinutesinteger
arrivalWindowMinutesinteger
leadTimeMinutesinteger
horizonDaysinteger
bufferMinutesinteger
maxBookingsPerDayinteger or null
serviceZipsarray of string

Change online scheduling settings

PATCH /organizations/{organizationId}/online-booking

Changes the fields sent. With mode: SLOTS customers book real arrival windows from the technicians' free time (working days and hours, time off, open visits, travel buffer); with confirmation: AUTOMATIC those bookings become jobs without staff review. Customer-visible: changes what the public form offers at once. Needs settings.manage.

Permissionsettings.manage (Owner, Admin)
Riskwrite, OAuth scope servflo.write. Write: creates or changes records inside the business; nothing leaves it.
MCP toolonlineBooking_update (toolset sales)

Request body

FieldTypeRequiredDescription
modeenumNoOne of REQUEST, SLOTS.
confirmationenumNoOne of MANUAL, AUTOMATIC.
slotIntervalMinutesintegerNoHow often a start time is offered, minutes from the start of the day. 15–240.
arrivalWindowMinutesintegerNoArrival window shown from the start time, minutes (0 = exact time). 0–480.
leadTimeMinutesintegerNoEarliest start from now, minutes. 0–43200.
horizonDaysintegerNoDays offered, today included. 1–90.
bufferMinutesintegerNoTravel time kept free around every visit, minutes. 0–240.
maxBookingsPerDayinteger or nullNoOnline bookings per day across the business; null = no cap. 1–500.
serviceZipsarray of stringNoZIP / postal codes served; empty = anywhere. Up to 500 items.

Example

curl -X PATCH "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/online-booking" \
  -H "Authorization: Bearer $SERVFLO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"mode":"REQUEST","confirmation":"MANUAL","slotIntervalMinutes":60}'

Response

200: the answer's fields
FieldTypeDescription
slugstringThe booking form is at /book/{slug}.
bookingEnabledboolean
modeenumRequest: customers send a request with a preferred day; SLOTS: they pick a real arrival window. One of REQUEST, SLOTS.
confirmationenumManual: a booked slot is held by a NEW request until staff confirm it; AUTOMATIC: a job is made at once (unless the contact matches an existing customer). One of MANUAL, AUTOMATIC.
slotIntervalMinutesinteger
arrivalWindowMinutesinteger
leadTimeMinutesinteger
horizonDaysinteger
bufferMinutesinteger
maxBookingsPerDayinteger or null
serviceZipsarray of string

On this page