Home
Launch27
Launch27
Launch27 is a booking and scheduling platform for cleaning service businesses (maid services), offering online booking, customer/employee/team management, recurring scheduling, payments, and marketing tools. Launch27 was acquired by Fullsteam Operations in 2019 and continues to operate today as an actively sold, independently branded product; Vonigo (a broader field service management platform for home service businesses) is a sister brand under the same Fullsteam Operations portfolio, acquired separately in 2022 - Launch27 is not a Vonigo product line, though the two are frequently compared as Fullsteam-owned competitors in the same space. Launch27 publishes a real, actively used REST API (currently v2.1, with a deprecated v2.0) documented in a public Bitbucket wiki linked from the Launch27 marketing site footer, rather than in first-party developer docs at docs.launch27.com. The API is multi-tenant, meaning every client account gets its own subdomain (e.g. https://acme.launch27.com), and covers booking creation/management for non-logged-in and logged-in customers, booking-form helper data (services, spots, frequencies, custom fields, price estimation), booking policies, and account settings.
6 APIs
0 Features
Field Service Management Home Services Cleaning Services Booking Scheduling Fullsteam Vonigo
Authenticate a Launch27 customer or staff user and return a JWT (bearer token) used for subsequent authenticated requests. Legacy email:token header authentication was retired M...
Read a client account's configuration - branding, currency, country and states, enabled feature flags (multi-location, gift cards, tips, sales tax, SMS reminders, mobile app, et...
Supporting data needed to build and price a booking form - the booking form's field/heading/appearance setup, configured services/extras/ pricing parameters, available date/time...
Read the account's new-booking lead-time policy, reschedule lead-time policy, late-cancellation fee/percentage and reason-required policy, and multi-location "prevent booking if...
Create a new booking as a first-time, non-logged-in customer - submits customer details, address, service date/arrival window, selected services/extras/pricing parameters, disco...
Authenticated customer-portal operations on a logged-in customer's own bookings - list (with date range, free-text, completed/feedback filters, paging), count, get a single book...
AsyncAPI 2.6 description of the one WebSocket surface Launch27 documents: an account-scoped notification channel reached via a `pubsub_url` returned by the authenticated `GET /s...
ASYNCAPI
Sources
opencollection: 1.0.0
info:
name: Launch27 API
version: '2.1'
request:
auth:
type: bearer
token: '{{bearerToken}}'
items:
- info:
name: Authentication
type: folder
items:
- info:
name: Login.
type: http
http:
method: POST
url: https://{{tenant}}.launch27.com/v1/login
body:
type: json
data: '{ "email": "user@email.com", "password": "trustno1" }'
docs: Authenticate and return a JWT bearer token used for subsequent authenticated requests.
- info:
name: Account
type: folder
items:
- info:
name: Get settings.
type: http
http:
method: GET
url: https://{{tenant}}.launch27.com/v1/settings
docs: Returns account settings; response varies by authentication state, user type, and feature availability.
- info:
name: Booking Helpers
type: folder
items:
- info:
name: Get booking form setup.
type: http
http:
method: GET
url: https://{{tenant}}.launch27.com/v1/booking/form
docs: Returns booking form headings, system fields, paragraphs, and appearance settings.
- info:
name: Get services for booking.
type: http
http:
method: GET
url: https://{{tenant}}.launch27.com/v1/booking/services
params:
- name: booking_uuid
value: ''
type: query
description: Booking digest; required (and requires auth) for an existing booking.
- name: location_id
value: ''
type: query
description: Unique ID of location; default location used if omitted.
docs: Returns list of services, extras, and pricing parameters available for booking.
- info:
name: Get spots for booking.
type: http
http:
method: POST
url: https://{{tenant}}.launch27.com/v1/booking/spots
body:
type: json
data: '{ "date": "2026-08-15", "days": 5, "mode": "new" }'
docs: Returns spots available for booking on given date, mode (new or reschedule), and number of days.
- info:
name: Get location for booking address.
type: http
http:
method: POST
url: https://{{tenant}}.launch27.com/v1/booking/location
body:
type: json
data: '{ "zip": "94105" }'
docs: Returns location based on provided address details.
- info:
name: Get frequencies for booking.
type: http
http:
method: GET
url: https://{{tenant}}.launch27.com/v1/booking/frequencies
params:
- name: booking_uuid
value: ''
type: query
description: Booking digest; required (and requires auth) for an existing booking.
- name: location_id
value: ''
type: query
description: Unique ID of location; default location used if omitted.
docs: Returns list of configured booking frequencies for new or existing booking.
- info:
name: Get next booking date for frequency.
type: http
http:
method: POST
url: https://{{tenant}}.launch27.com/v1/booking/frequencies/:id/next
params:
- name: id
value: ''
type: path
description: Frequency unique ID.
body:
type: json
data: '{ "date": "2026-08-06T13:30:00" }'
docs: Returns next booking date for a recurring frequency and given date.
- info:
name: Get custom fields for booking.
type: http
http:
method: GET
url: https://{{tenant}}.launch27.com/v1/booking/custom_fields
params:
- name: booking_uuid
value: ''
type: query
description: Booking digest; required (and requires auth) for an existing booking.
docs: Returns list of booking custom fields.
- info:
name: Estimate booking price.
type: http
http:
method: POST
url: https://{{tenant}}.launch27.com/v1/booking/estimate_price
body:
type: json
data: '{ "service_date": "2026-08-15T10:00:00", "frequency_id": 1, "services": [{ "id": 1 }] }'
docs: Estimates price for a booking and returns a detailed price/discount/tax breakdown.
- info:
name: Policy
type: folder
items:
- info:
name: Get new booking policy.
type: http
http:
method: GET
url: https://{{tenant}}.launch27.com/v1/policy/booking
docs: Returns the new-booking lead-time policy details.
- info:
name: Get reschedule policy.
type: http
http:
method: GET
url: https://{{tenant}}.launch27.com/v1/policy/reschedule
docs: Returns the reschedule lead-time policy details.
- info:
name: Get cancellation policy.
type: http
http:
method: GET
url: https://{{tenant}}.launch27.com/v1/policy/cancellation
docs: Returns the late-cancellation fee/percentage and reason-required policy.
- info:
name: Get location policy.
type: http
http:
method: GET
url: https://{{tenant}}.launch27.com/v1/policy/location
docs: Returns the prevent-booking-if-location-not-found policy for multi-location accounts.
- info:
name: Guest Booking
type: folder
items:
- info:
name: Create booking as non-logged-in.
type: http
http:
method: POST
url: https://{{tenant}}.launch27.com/v1/booking
body:
type: json
data: '{ "user": { "email": "user@email.com", "first_name": "First", "last_name": "Last" }, "address": "595 Market
St", "city": "San Francisco", "state": "CA", "zip": "94105", "phone": "462-485-0790", "frequency_id": 1, "service_date":
"2026-08-15T09:30:00", "arrival_window": 0, "services": [{ "id": 1 }], "payment_method": "cash" }'
docs: Creates a new booking as a first-time, non-logged-in customer.
- info:
name: Customer Bookings
type: folder
items:
- info:
name: List bookings for customer.
type: http
http:
method: GET
url: https://{{tenant}}.launch27.com/v1/customer/bookings
params:
- name: from
value: ''
type: query
description: Start of date range.
- name: to
value: ''
type: query
description: End of date range.
- name: query
value: ''
type: query
description: Free-text search across address, city, phone.
- name: options
value: ''
type: query
description: 'Comma-separated: completed, not_completed, with_feedback, without_feedback.'
- name: limit
value: ''
type: query
description: Page size.
- name: offset
value: ''
type: query
description: Page offset.
- name: sort
value: ''
type: query
description: asc or desc (default desc).
docs: Returns active bookings for the logged-in customer.
- info:
name: Count bookings for customer.
type: http
http:
method: GET
url: https://{{tenant}}.launch27.com/v1/customer/bookings/count
docs: Returns count of active bookings for the current customer user.
- info:
name: Create booking for customer.
type: http
http:
method: POST
url: https://{{tenant}}.launch27.com/v1/customer/bookings
body:
type: json
data: '{ "address": "595 Market St", "city": "San Francisco", "state": "CA", "zip": "94105", "phone": "462-485-0790",
"frequency_id": 2, "service_date": "2026-08-20T09:30:00", "arrival_window": 0, "services": [{ "id": 1 }], "payment_method":
"cash" }'
docs: Creates a new booking as the logged-in customer, including 'Book This Again' via original_booking_id.
- info:
name: Get booking for customer.
type: http
http:
method: GET
url: https://{{tenant}}.launch27.com/v1/customer/bookings/:id
params:
- name: id
value: ''
type: path
description: Booking unique ID.
docs: Returns a single booking's full detail.
- info:
name: Update booking for customer.
type: http
http:
method: PUT
url: https://{{tenant}}.launch27.com/v1/customer/bookings/:id
params:
- name: id
value: ''
type: path
description: Booking unique ID.
body:
type: json
data: '{}'
docs: Updates or reschedules an existing booking.
- info:
name: Cancel booking for customer.
type: http
http:
method: POST
url: https://{{tenant}}.launch27.com/v1/customer/bookings/:id/cancel
params:
- name: id
value: ''
type: path
description: Booking unique ID.
body:
type: json
data: '{ "confirmed_late": false, "reason": "booked by mistake" }'
docs: Cancels an existing booking and creates the next recurring booking if applicable.