---
title: "Edit a custom-form draft (all edits apply, or none)"
method: PATCH
path: "/api/v1/custom-forms/{id}"
tags: ["Custom forms"]
---

# Edit a custom-form draft (all edits apply, or none)

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

## Request

- Base URL: `https://philforms.com`
- URL: `https://philforms.com/api/v1/custom-forms/{id}`
- Auth: HTTP bearer

`op` is a list of up to 500 set | move | add | remove | group edits — their shapes are in the Custom forms guide. Also accepts name, is_training_allowed and team_id (to share). Each edit makes a new revision, which needs a new preview before it can be published.

## Path parameters

- `id` string, required

## Request body

- object
  - `name` string
  - `is_training_allowed` boolean
  - `team_id` string, nullable
  - `op` object[]

## Response `200`

Custom form

## Other responses

- `400`: Edit n: why it was refused
- `403`: Only the owner (or a team owner/admin) can do this
- `404`: No such custom form or team

---

[API](https://skmtc.dev/philforms/apis/philforms-api.md) · [All operations](https://skmtc.dev/philforms/apis/philforms-api/llms.txt) · [OpenAPI document](https://skmtc.dev/philforms/apis/philforms-api/revisions/a43bf313729c?raw)
