# UpdateForm

> Update a form's title, surfaces, priority, status or schedule. Write access, forms toolset, MCP tool update_form.

**Access:** [Write](https://developer.missin.co.uk/get-started/authentication.md#access-levels)

## Variables

| Variable | Type | Required | Accepts | Description |
|---|---|---|---|---|
| `input` | `UpdateFormInput!` | yes | Input object, below |  |

## Input types

### UpdateFormInput

| Field | Type | Required | Accepts | Description |
|---|---|---|---|---|
| `body` | `JSON!` | yes | Object, fields below | Dirty-only patch: title, surfaces, priority, status, view_type, returning_enabled, starts_at, ends_at, enable_repeat, enable_ends_at. |
| `formId` | `UUID!` | yes |  |  |

#### `UpdateFormInput.body`

| Field | Type | Required | Accepts | Description |
|---|---|---|---|---|
| `title` | string or null | no | 1 to 200 characters |  |
| `surfaces` | list of string | no | One of `IN_PLATFORM`, `WEBSITE`, `EMAIL_SHAREABLE` |  |
| `priority` | integer | no | 0 to 9999 |  |
| `status` | string | no | One of `DRAFT`, `READY`, `PUBLISHED`, `ARCHIVED` |  |
| `view_type` | string | no | One of `UPSELL`, `PICKER` |  |
| `returning_enabled` | boolean | no |  |  |
| `starts_at` | any or null | no |  |  |
| `ends_at` | any or null | no |  |  |
| `enable_repeat` | boolean | no |  |  |
| `enable_ends_at` | boolean | no |  |  |
| `tags` | object | no |  |  |
| `reason_set` | object | no | Object, fields below |  |

#### `UpdateFormInput.body.reason_set`

| Field | Type | Required | Accepts | Description |
|---|---|---|---|---|
| `question_id` | string (uuid) or null | no |  |  |
| `question_key` | string or null | no | 1 to 64 characters |  |
| `reasons` | list of object | no | Object, fields below. at least 2 items |  |

#### `UpdateFormInput.body.reason_set.reasons`

| Field | Type | Required | Accepts | Description |
|---|---|---|---|---|
| `key` | string | yes | 1 to 32 characters, matches `^[a-z][a-z0-9_]*$` |  |
| `what` | string | yes | at least 1 characters |  |

## Call it

```bash curl
curl https://api.missin.co.uk/graphql/v1 \
  -H "Authorization: Bearer $MISSIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"operationName":"UpdateForm","variables":{"input":{"body":{"title":"…"},"formId":"00000000-0000-0000-0000-000000000000"}},"extensions":{"persistedQuery":{"version":1,"sha256Hash":"f592910bac19dd556502f6b12cf3aba6aabf76155707bb78a2d4477f404f7ec8"}}}'
```

## Document

```graphql
mutation UpdateForm($input: UpdateFormInput!) { __typename updateForm(input: $input) { __typename formId userErrors { __typename code field message } } }
```

Source: https://developer.missin.co.uk/reference/forms/update-form
