---
title: "Update a form. Changed questions create a new version; earlier responses keep theirs"
method: PATCH
path: "/api/v1/intake-forms/{id}"
---

# Update a form. Changed questions create a new version; earlier responses keep theirs

`PATCH /api/v1/intake-forms/{id}`

## Request

- Base URL: `http://127.0.0.1:4310`
- URL: `http://127.0.0.1:4310/api/v1/intake-forms/{id}`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `sfb_session`

## Path parameters

- `id` string, required

## Request body

- object
  - `name` string
  - `description` string
  - `service_ids` string[]
  - `active` boolean
  - `questions` object[]
    - `id` string, required
    - `type` 'text' | 'textarea' | 'number' | 'date' | 'yes_no' | 'single_choice' | 'multi_choice' | 'consent' | 'signature' | 'info', required
    - `label` string, required
    - `required` boolean
    - `options` string[]
    - `help` string
    - `min` integer
    - `max` integer
  - `send_to` 'all' | 'new_clients'
  - `valid_months` integer: How long an answer stays valid; 0 asks at every visit
  - `required_before` boolean: Shown to staff as required before the appointment. Never blocks booking.

## Response `200`

OK

- object

## Other responses

- `400`: Validation error
- `401`: Unauthenticated
- `403`: Forbidden
- `404`: Not found
- `409`: Conflict or invalid state

---

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