SoftSolzSoftSolz
HomeAPI GuideAPI ReferenceWidget Tester
appointments

Update an appointment type. Provided keys are changed; arrays are replaced wholesale.

Update an appointment type. Provided keys are changed; arrays are replaced wholesale.

PATCHhttps://app.softsolz.uk/api/v1/services/appointments/types/{id}

Recent Requests

Kept only in this browser
TimeStatusTook
Send a request with Try it to see it here.

Path Params

idstringrequired

Headers

Authorizationstringrequired

Bearer token: `Bearer sk_live_...` (or `sk_test_...` for sandbox). A login token will not work here.

Idempotency-Keystring

Optional idempotency key for safe retries.

Body Params

namestring

Display name.

slugstring

URL-safe identifier, unique per workspace.

descriptionstring

Optional longer description.

kindstring

Category this belongs to.

duration_minutesinteger

How long the appointment lasts.

arrival_window_minutesinteger

When set, the customer books an arrival window of this length instead of an exact time.

buffer_before_minutesinteger

Protected time before the appointment.

buffer_after_minutesinteger

Protected time after the appointment.

travel_minutesinteger

Travel time reserved around the appointment.

location_modestring

Where the appointment happens.

meeting_urlstring

Static meeting room URL for virtual appointments.

capacityinteger

Places available. 1 is one-to-one; above 1 enables group booking.

booking_modestring

Whether bookings confirm instantly or need approval.

price_centsinteger

Price in the smallest currency unit.

currencystring

ISO 4217 currency code.

deposit_centsinteger

Deposit taken at booking, in the smallest currency unit.

is_publicboolean

Whether this can be booked from a public link or a widget.

intake_fieldsarray of objects

Questions asked at booking. Same field-schema shape the Forms builder uses.

requirementsarray of objects

What the appointment needs at the same time, for example one engineer and one van.

stagesarray of objects

Ordered visits for multi-visit, project, and route types.

resourcesarray of objects

Which resources can deliver this, with optional per-resource duration and price overrides.

followup_rulesarray of objects

What happens automatically after the appointment finishes.

reminder_schedulearray of objects

When reminders are sent, and on which channel.

statusstring

Current status.

expected_updated_atstring

Optimistic-concurrency guard; a mismatch against the stored updated_at returns 409 STALE_VERSION.

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 PATCH \
--url https://app.softsolz.uk/api/v1/services/appointments/types/{id} \
--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 · 200

{
"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"
}
}