---
title: "Staff: add a service to an appointment as its next segment, by default straight after the last one with the same team member. Past appointments up to 30 days back too. Nothing is sent to the client"
method: POST
path: "/api/v1/bookings/{reference}/add-service"
---

# Staff: add a service to an appointment as its next segment, by default straight after the last one with the same team member. Past appointments up to 30 days back too. Nothing is sent to the client

`POST /api/v1/bookings/{reference}/add-service`

## Request

- Base URL: `http://127.0.0.1:4310`
- URL: `http://127.0.0.1:4310/api/v1/bookings/{reference}/add-service`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `sfb_session`

## Path parameters

- `reference` string, required

## Request body

- AddServiceRequest
  - `service_id` string, required
  - `staff_id` string: Who does it. Default: the team member of the last segment
  - `start` string: ISO time with offset, or YYYY-MM-DDTHH:MM in the business zone. Default: straight after the last segment
  - `idempotency_key` string, required
  - `accept_clash` boolean: Add it anyway over a clash (another appointment, outside working hours, busy time, no free room). Without it a clash returns requires_staff_action (reason clash). The segment still blocks online availability.

## Response `200`

OK

- object

## Other responses

- `400`: Validation error
- `401`: Unauthenticated
- `403`: Forbidden, tenant mismatch or policy
- `404`: Not found
- `409`: Slot unavailable, invalid state or idempotency conflict
- `422`: Consent, intake or prerequisite missing

---

[API](https://skmtc.dev/scalingfirm/apis/tsf-booking-api.md) · [All operations](https://skmtc.dev/scalingfirm/apis/tsf-booking-api/llms.txt) · [OpenAPI document](https://skmtc.dev/scalingfirm/apis/tsf-booking-api/revisions/81704199cd37?raw)
