Create an appointment type.
Create an appointment type.
https://app.softsolz.uk/api/v1/services/appointments/typesRecent Requests
Kept only in this browserHeaders
AuthorizationstringrequiredBearer token: `Bearer sk_live_...` (or `sk_test_...` for sandbox). A login token will not work here.
Idempotency-KeystringOptional idempotency key for safe retries.
Body Params
namestringrequiredDisplay name.
slugstringURL-safe identifier, unique per workspace.
descriptionstringOptional longer description.
kindstringCategory this belongs to.
duration_minutesintegerHow long the appointment lasts.
arrival_window_minutesintegerWhen set, the customer books an arrival window of this length instead of an exact time.
buffer_before_minutesintegerProtected time before the appointment.
buffer_after_minutesintegerProtected time after the appointment.
travel_minutesintegerTravel time reserved around the appointment.
location_modestringWhere the appointment happens.
meeting_urlstringStatic meeting room URL for virtual appointments.
capacityintegerPlaces available. 1 is one-to-one; above 1 enables group booking.
booking_modestringWhether bookings confirm instantly or need approval.
price_centsintegerPrice in the smallest currency unit.
currencystringISO 4217 currency code.
deposit_centsintegerDeposit taken at booking, in the smallest currency unit.
is_publicbooleanWhether this can be booked from a public link or a widget.
intake_fieldsarray of objectsQuestions asked at booking. Same field-schema shape the Forms builder uses.
requirementsarray of objectsWhat the appointment needs at the same time, for example one engineer and one van.
stagesarray of objectsOrdered visits for multi-visit, project, and route types.
resourcesarray of objectsWhich resources can deliver this, with optional per-resource duration and price overrides.
followup_rulesarray of objectsWhat happens automatically after the appointment finishes.
reminder_schedulearray of objectsWhen reminders are sent, and on which channel.
statusstringCurrent status.
Response
Response Body
idstringAppointment type id.slugstringURL-safe type slug, unique per tenant.namestringDisplay name.descriptionstring | nullOptional description.kindstringHow this type is scheduled. Built-in values are one_time, recurring, multi_visit, project, route, maintenance, emergency and walk_in; any other lowercase slug is kept as your own wording.duration_minutesintegerDefault duration.arrival_window_minutesinteger | nullWhen set, the customer books an arrival window of this length instead of an exact time.buffer_before_minutesintegerProtected time before the appointment.buffer_after_minutesintegerProtected time after the appointment.travel_minutesintegerTravel time reserved around the appointment.location_modestringWhere the appointment happens. Built-in values are business, customer, virtual, phone, route_stop and hybrid; any other lowercase slug is kept as your own wording.meeting_urlstring | nullStatic meeting room URL.capacityintegerPlaces per slot. 1 is one-to-one; above 1 enables group booking.booking_modestringWhether bookings confirm instantly or need approval.price_centsinteger | nullPrice in the smallest currency unit.currencystring | nullISO 4217 currency code.deposit_centsinteger | nullDeposit taken at booking, in the smallest currency unit.is_publicbooleanWhether the type is bookable from a public booking link or widget.intake_fieldsarray of objectsQuestions asked at booking time. Same field-schema shape the Forms builder uses.requirementsarray of objectsWhat the appointment needs simultaneously, for example one engineer and one van.stagesarray of objectsOrdered visits for multi-visit, project, and route types.resourcesarray of objectsWhich resources can deliver this type, with optional duration and price overrides.statusstringCurrent status.created_atstringWhen the record was created.updated_atstringRound-trip as expected_updated_at to guard against stale writes.Request
curl --request POST \ --url https://app.softsolz.uk/api/v1/services/appointments/types \ --header 'Authorization: Bearer sk_live_your_key' \ --header 'Content-Type: application/json' \ --data '{ "name": "Boiler service", "slug": "boiler-service", "duration_minutes": 60, "arrival_window_minutes": 240, "capacity": 1}'Credentials
Sent as a Bearer token and used in the samples above and in Try it. Kept only in this browser tab until you close it. Use an sk_test_ key to stay in your sandbox.
Response · 201
{ "data": { "id": "7", "slug": "boiler-service", "name": "Boiler service", "description": "your-description", "kind": "maintenance", "duration_minutes": 60, "arrival_window_minutes": 240, "buffer_before_minutes": 0, "buffer_after_minutes": 15, "travel_minutes": 20, "location_mode": "customer", "meeting_url": "https://example.com", "capacity": 1, "booking_mode": "instant", "price_cents": 9500, "currency": "gbp", "deposit_cents": 2000, "is_public": true, "intake_fields": [ { "id": "boiler_make", "type": "text", "label": "Boiler make", "required": false } ], "requirements": [ { "resource_kind": "staff", "count": 1 } ], "stages": [ { "sequence": 1, "name": "Survey", "duration_minutes": 45, "blocks_resource": true } ], "resources": [ { "resource_id": 3, "duration_override_minutes": 45 } ], "status": "active", "created_at": "2026-01-01T09:00:00.000Z", "updated_at": "2026-01-01T09:00:00.000Z" }}