Create a bookable service
create_booking_serviceAdd a service customers can book on the public booking page. Needs name and durationMin. Optional: buffers in minutes, the price as shown (free text, e.g. "35 €" or "from 40"), who does it (resourceIds of people/rooms from get_booking_settings; omit for anyone), where it happens (videoMode: "none" in person, "meet" a Google Meet link per booking, "link" the business's own https video room), category and photo, and charge to take the full amount online when booking (only with Stripe connected; otherwise refused). For activities (tours, classes) use partyMode "seats": a booking of N people takes N spots and is charged per person; for restaurants use "tables": each person/room is a table type and a booking takes one table that fits; partyMin/partyMax bound the party and slotStepMin sets its own slot step (e.g. 90-minute sittings). It is public at once: confirm the price and charge with the user.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Up to 80 characters. | |
| price | No | Price as shown to customers, free text up to 40 characters. Empty removes it. | |
| active | No | false hides it from booking without deleting it. | |
| charge | No | Amount charged online when booking, e.g. "25" or "19.99", in the bookings currency. Needs Stripe connected. "" stops charging. Omit to leave it as is. | |
| category | No | Groups services on the public page. Up to 40 characters. | |
| imageUrl | No | Public http(s) URL of a photo for the public page. | |
| partyMax | No | Most people per booking with seats/tables (partyMin-500). Above 1, customers are asked how many. | |
| partyMin | No | Fewest people per booking with seats/tables (1-500). Default 1. | |
| partyMode | No | "none" normal appointments (one booking = one spot); "seats" activities, tours, classes, tastings (a booking of N people takes N spots; the charge is per person); "tables" restaurants (each resource is a table type, its spots = how many tables of that type; a booking takes one table that fits the party). | |
| videoLink | No | https link of the business's own video room, with videoMode "link". | |
| videoMode | No | "none" in person, "meet" a Google Meet link per booking, "link" the business's own video room (videoLink). | |
| description | No | Up to 500 characters. | |
| durationMin | Yes | Minutes, 5-720. | |
| resourceIds | No | People/rooms that do it (ids from get_booking_settings). [] = anyone. | |
| slotStepMin | No | Own slot step for this service in minutes (10, 15, 20, 30, 45, 60, 75, 90, 105, 120, 150, 180, 240), e.g. 90 for restaurant sittings. null = the workspace rule. | |
| workspaceId | No | Defaults to the workspace this connection is scoped to. | |
| bufferAfterMin | No | Free minutes kept after (cleaning, travel), 0-240. | |
| idempotencyKey | No | Optional. A unique id for this action (16-128 chars: letters, digits, _ : . -). If you are unsure whether a call went through (timeout, network error), repeat it with the SAME idempotencyKey and the same arguments: you get the original result and nothing is done twice. | |
| bufferBeforeMin | No | Free minutes kept before, 0-240. |