API reference

All 259 public operations, grouped by product area.

The complete machine-readable schema of every operation is openapi.json.

Appointments engine

Services, staff and appointments. Session-authenticated, engine-guarded: a hospitality org gets 403.

MethodOperation
POSTCreate a service
PATCHReorder and/or regroup services
PATCHUpdate a service
DELETEDelete a service (admin, or manage_services)
POSTUpload a service image
DELETERemove a service image
POSTCreate a service group
PATCHReorder service groups
PATCHUpdate a service group
DELETEDelete a service group (admin, or manage_services)
POSTCreate a staff member
PATCHUpdate a staff member
DELETEDelete a staff member (admin, or manage_staff)
POSTArchive a staff member (admin, or manage_staff)
POSTReactivate an archived staff member (admin, or manage_staff)
POSTUpload a staff photo
DELETERemove a staff photo
POSTRequest a date-specific schedule override
POSTMark a staff member away (admin, or manage_staff)
DELETERemove a time-away entry (admin, or manage_staff)
GETList availability-override requests
PATCHCancel or reject an availability-override request
POSTApprove a pending availability-override request
POSTCreate an appointment, or a repeat series (staff side)
GETWhether this booking is part of a repeat series
GETRead one repeat series and its visits
PATCHEnd a series early
GETRead one booking
PATCHUpdate an appointment
GETList appointments (API key)
GETList services (API key)
GETList staff (API key)
POSTCreate a product
PATCHUpdate a product, or archive/restore it
POSTUpload a product image
DELETERemove a product image
GETA product's recent stock movements
POSTAdjust a product's stock
GETA variant's recent stock movements
POSTAdjust a variant's stock
POSTCreate a product category
DELETEDelete a product category
POSTCreate a package
PATCHUpdate a package, or activate/deactivate it
POSTSell a package to a customer
POSTApply, or manually correct, a customer package's sessions
GETRead the venue opening hours (admin, or manage_org_settings)
PUTReplace the venue opening hours (admin, or manage_org_settings)
PATCHSave a page's draft content (admin, or manage_org_settings)
POSTPublish a page's draft content live (admin)
GETRead this company's connected custom domain
POSTConnect a custom domain (admin)
PATCHRe-check this company's connected domain against Vercel (admin)
DELETEDisconnect the connected custom domain (admin)
GETThis website's traffic (self-hosted, cookieless)
POSTTake the public site offline, or bring it back (admin)

Hospitality engine

Tables, service periods and reservations. Session-authenticated, engine-guarded: an appointments org gets 403.

MethodOperation
GETList reservations (API key)
GETList tables (API key)
GETList service periods (API key)
POSTCreate a table
POSTCreate a range of tables in one request
POSTPlace a furniture-set piece (a bar, a multi-tabletop banquette)
GETList a furniture-set piece's configured combos
POSTConfigure a combo for a furniture-set piece
DELETERemove a furniture-set combo
PATCHSave one floor's decor elements
POSTUpload the backdrop image for one floor
DELETERemove a floor's backdrop image
PATCHSave floor-plan geometry for a batch of tables and rooms
PATCHUpdate a table
DELETEDelete a table (admin)
POSTCreate a level (floor)
PATCHReorder levels (floors)
PATCHUpdate a level
DELETEDelete a level (admin)
POSTUpload a level photo
DELETERemove a level photo
GETList guests waiting for a table
POSTAdd a party waiting now at the door
POSTOffer a waitlisted guest a table
POSTText a "waiting now" guest that their table is ready
PATCHClose out a waitlist entry
POSTPencil in or book a big-group enquiry
DELETERelease a pencilled-in hold
POSTConfirm a pencilled-in big-group booking
PATCHMove a big-group enquiry along
POSTCreate a link group
PATCHRename a link group
DELETEDelete a link group (admin)
GETList a combine group's staff-drawn adjacency edges
POSTDraw an adjacency edge between two tables
DELETERemove an adjacency edge
GETArea locks touching a date
POSTLock a floor, room or table
DELETERemove an area lock (admin)
GETRead the floor's shared note for a date
PUTSave the floor's shared note for a date
POSTCreate an area (room)
PATCHReorder areas (rooms)
PATCHUpdate an area
DELETEDelete an area (admin)
POSTUpload an area (room) photo
DELETERemove an area photo
PUTReplace a named service period (admin, or manage_services)
POSTCreate a reservation (staff side)
POSTAdd a floor server
PATCHRename a floor server
DELETERemove a floor server
PUTAssign a table to a server for a date
PATCHUpdate a reservation
POSTCreate an experience
PATCHUpdate an experience, or archive/restore it
POSTUpload an experience image
DELETERemove an experience image
GETThe door-staff guestlist for one experience
POSTScan or manually check in a ticket
GETHospitality's "Your booking funnel" (self-hosted, cookieless)

Public booking (appointments)

Unauthenticated. The widget a customer uses at /book/{slug} (or /{slug}/book: both are real, permanently-live addresses for the same page). Not engine-guarded: see the 403 note above.

MethodOperation
GETList bookable appointment slots
POSTBook an appointment (guest checkout)
POSTPreview a promo code before checkout (public, unauthenticated)

Public booking (hospitality)

Unauthenticated, two-step (hold, then confirm). Refuses an appointments org with 404.

MethodOperation
POSTSend a big-group enquiry (public)
POSTJoin the waitlist (public)
GETList bookable table slots
GETList which tables are free for one exact slot
POSTHold a table (guest checkout, step 1)
PATCHConfirm a held table (guest checkout, step 2)
DELETERelease a held table

Guest self-service

Unauthenticated except for the booking's manage token, which is the whole credential. One endpoint serves both engines because a manage link points at a booking, not at a product.

MethodOperation
POSTMessage the venue about a booking
PATCHMove a booking to another time
DELETECancel a booking
PUTAnswer the venue's intake form
POSTSubmit the private half of a booking's post-visit feedback
POSTSet or clear a customer's marketing consent from the link in a marketing email
GETLog a guest's thumb-up tap and redirect to the org's Google review link
GETRetired email logo: redirects to the G7 mark

Agent (MCP)

One unauthenticated JSON-RPC endpoint (Model Context Protocol) that lets an AI assistant read the public booking surface on a guest's behalf. Not REST, and deliberately documented here anyway: it is a public endpoint on this domain, and an agent that reads this document is exactly the reader it is for. Distinct from the PRIVATE per-tenant MCP server, which is not built, is gated behind an sk_live_ key, and never takes a venue as an argument.

MethodOperation
POSTPublic booking MCP endpoint (JSON-RPC)

Shared

Clients, teammates, messages, notes, templates, branding, profile, account, organization settings. Deliberately NOT engine-guarded: a client record and a teammate mean the same thing to both products, and guarding these would lock half the product out of its own settings.

MethodOperation
GETList clients (API key)
GETRead the organization (API key)
POSTSend product feedback (bug report, idea, or general) to Solvintia
POSTAttach a screenshot to a feedback submission you just sent
POSTCreate a client
PATCHUpdate a client
POSTErase a client's personal data on request (admin)
POSTAdd a form to the catalog (admin)
PATCHEdit a catalog form, or toggle active (admin)
POSTSend a catalog form to a customer
PUTA customer answers a sent form (public, unauthenticated)
POSTRecord a sale
POSTVoid a sale
GETLive client search for CustomerPicker
GETGlobal search, backs the dashboard's Cmd/Ctrl+K palette
POSTSend a message to the native AI assistant (v1, read-only)
POSTAttach a CSV/TSV/XLSX file to an AI assistant conversation
GETGet a short-lived download link for an attached file
POSTDraft an inbox reply or a private note with the AI assistant (single-shot, read-only)
GETRead how much of this period's AI assistant allowance is left (any role)
POSTInvite a teammate (admin)
PATCHSet the caller's own staff-alert preferences
PATCHToggle a Recipe on/off, or edit its message (admin)
PATCHSet a teammate's granular permissions (admin)
DELETERemove a teammate (admin)
POSTResend a pending invite (admin)
POSTCancel a pending invite (admin)
POSTAccept an invite
POSTRequest a new invite link (public)
POSTRequest a new invite link for the signed-in account (session-gated)
POSTCreate an invited account (public)
POSTRequest beta access (public)
POSTSign up for Gaplessly product updates (public)
POSTConfirm a newsletter sign-up (public)
PATCHUpdate organization settings (admin, or manage_org_settings, or deposit_staff_editable)
GETOne thread's messages
POSTReply to a guest
PATCHMark a thread read
GETTimestamp of the newest visible message
GETWhat the notification bell shows
PATCHMark the notification bell seen
PATCHWrite the private staff note on a booking or enquiry
PUTCreate or replace an intake form (admin)
PATCHSet the guest self-service policy (admin, or manage_org_settings)
PATCHAttest or withdraw the pre-existing-list marketing declaration (admin, or manage_org_settings)
POSTAccept the current Terms of Service for this business (admin)
POSTTurn review routing on or off for this business (admin)
GETRead notification templates
DELETERevert one template slot to the default (admin)
PUTCustomise one template slot (admin, paid)
POSTUpload the organization logo (admin, or manage_org_settings)
DELETERemove the organization logo (admin, or manage_org_settings)
GETList this organization's campaigns
POSTStart a new campaign draft (admin, or manage_org_settings)
PATCHAutosave a campaign draft (admin, or manage_org_settings)
DELETEDelete a campaign draft (admin, or manage_org_settings)
POSTUpload a campaign photo (admin, or manage_org_settings)
DELETERemove a campaign photo (admin, or manage_org_settings)
GETLive "will reach N" count for a segment or tag
POSTRender a live email preview of a draft campaign
POSTSend a campaign for real (admin, or manage_org_settings)
POSTSend a test of a campaign to yourself (admin, or manage_org_settings)
POSTIssue a gift card (admin, or manage_org_settings)
POSTRecord a gift card redemption
GETResolve a gift card code to its id and balance
POSTCreate a promotion: an automatic sale or a promo code (admin, or manage_org_settings)
PATCHEnable or disable a promotion (admin, or manage_org_settings)
PATCHSave the Booking Page settings draft (admin, or manage_org_settings)
POSTPublish the Booking Page settings draft live (admin)
GETDates that do not follow the recurring week
POSTSet what happens on one date (admin, or manage_org_settings)
DELETEReturn a date to the recurring week (admin, or manage_org_settings)
GETList this company's tiered no-show fees
POSTAdd a tier (admin, or deposit_staff_editable)
PATCHEdit a tier (admin, or deposit_staff_editable)
DELETERemove a tier (admin, or deposit_staff_editable)
GETPublic holidays for this business's country and state
POSTSwitch between the subdomain and the classic /{slug} link as the asserted address (admin)
GETEvery business this account can act in
POSTPoint this account at another business it belongs to
GETRead the paid add-on catalogue and what this org has (admin)
POSTStart add-on checkout, open the billing portal, or cancel an add-on (admin)
GETRead this business's tier and any self-serve upgrades (admin)
POSTStart tier checkout, or change a paid plan in place (admin)
GETRead Gaplessly's own billing details for this org (admin)
PATCHSave Gaplessly's own billing details for this org (admin)
GETRead Gaplessly's own invoices to this org, newest first (admin)
GETRead this business's metered usage for the current billing period (admin)
GETRead this org's Stripe Connect status (admin)
POSTStart or resume Stripe Connect onboarding (admin)
GETRe-sync billing from Stripe, then redirect to Organization settings
POSTRefund a guest deposit or a card-on-file no-show fee, in full or in part (admin)
GETThe Takings report: gross, refunded and net Stripe-collected money over a date range
GETPreview the suggested tier amount for a booking (admin)
POSTCharge a card-on-file no-show fee (admin)
POSTResend a receipt or tax invoice (admin)
POSTBegin transferring ownership of the organization
POSTConfirm a pending ownership transfer (owner, via emailed link)
POSTCancel a transfer in progress (owner only)
POSTCreate a business: a new organization, or another one in the caller's own (onboarding)
POSTLive booking-URL availability while typing, during onboarding
POSTLook up a Google Business Profile for onboarding prefill
GETStart the Google Business Profile OAuth flow (admin, redirect-only)
GETGoogle OAuth callback: exchange the code, resolve the location, store the connection
POSTDisconnect this company's Google Business Profile
POSTReply to a Google review from this app's own dashboard
POSTUpload the booking-page background (admin, or manage_org_settings)
DELETERemove the booking-page background (admin, or manage_org_settings)
POSTUpload the About section photo (admin, or manage_org_settings)
DELETERemove the About section photo (admin, or manage_org_settings)
POSTUpload the website's own hero photo (admin, or manage_org_settings)
DELETERemove the website's own hero photo (admin, or manage_org_settings)
POSTUpload your own profile photo
DELETERemove your own profile photo
DELETEDelete your own account
GETList this org's recent imports and exports (admin)
POSTStart an export (admin, active subscription only)
POSTDry-run an import file (admin)
POSTCommit an import (admin)
POSTAsk for free migration help (admin)
PATCHManually adjust a loyalty member's points balance (admin)

API keys

Issue and revoke the credentials programmatic callers use. Session-authenticated and admin-only, and deliberately unreachable with an API key: there is no scope for key management, so a leaked key cannot mint another.

MethodOperation
POSTIssue an API key (admin)
DELETERevoke an API key (admin)

On this page