# CreateForm

> Create a form; body carries title, surfaces and view type. Invalid input returns userErrors. Write access, forms toolset, MCP tool create_form.

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

## Variables

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

## Input types

### CreateFormInput

| Field | Type | Required | Accepts | Description |
|---|---|---|---|---|
| `body` | `JSON!` | yes | Object, fields below |  |

#### `CreateFormInput.body`

| Field | Type | Required | Accepts | Description |
|---|---|---|---|---|
| `title` | string | no | 1 to 200 characters |  |
| `surfaces` | list of string | no | One of `IN_PLATFORM`, `WEBSITE`, `EMAIL_SHAREABLE` |  |
| `priority` | integer | no | 0 to 9999 |  |

## 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":"CreateForm","variables":{"input":{"body":{"title":"…"}}},"extensions":{"persistedQuery":{"version":1,"sha256Hash":"9bc46e214e9c00e0e1b5aaa0ae1a9d3a5e43e47fc701866a698705c650bcb647"}}}'
```

## Document

```graphql
mutation CreateForm($input: CreateFormInput!) { __typename createForm(input: $input) { __typename formId formSlug userErrors { __typename code field message } } }
```

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