---
title: "Create a service"
method: POST
path: "/api/v1/services"
---

# Create a service

`POST /api/v1/services`

## Request

- Base URL: `http://127.0.0.1:4310`
- URL: `http://127.0.0.1:4310/api/v1/services`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `sfb_session`

## Request body

- Service
  - `name` string
  - `category` string
  - `duration_minutes` integer
  - `price_minor` integer
  - `buffer_before_minutes` integer
  - `buffer_after_minutes` integer
  - `active` boolean
  - `staff_ids` string[]
  - `deposit_percent` integer, nullable: Deposit as a percentage of the booked price. 0 is no deposit. Null with deposit_fixed_minor null uses the business default. Setting it clears deposit_fixed_minor.
  - `deposit_fixed_minor` integer, nullable: Fixed deposit in minor units, up to the service price. It wins over any percentage and is capped at the booked price. Setting it clears deposit_percent.

## 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)
