# FormsList

> List forms with a filter: slug, title, status, surfaces, tags and A/B share. Read access, forms toolset, MCP tool list_forms.

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

## Variables

| Variable | Type | Required | Accepts | Description |
|---|---|---|---|---|
| `filter` | `FormFilter` | no | Input object, below |  |
| `first` | `Int` | no | 32-bit integer. Default `500` |  |

## Input types

A filter lists its fields by the type they take, and none of them is required.

### FormFilter

- `[FormFilter!]`: `and`, `or`
- [DatetimeFilter](https://developer.missin.co.uk/reference/input-types.md#datetimefilter): `endsAt`, `startsAt`
- [StringFilter](https://developer.missin.co.uk/reference/input-types.md#stringfilter): `formSlug`, `title`
- `FormFilter`: `not`
- [UUIDFilter](https://developer.missin.co.uk/reference/input-types.md#uuidfilter): `rowId`

## 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":"FormsList","variables":{},"extensions":{"persistedQuery":{"version":1,"sha256Hash":"9fc333ae36275098368d1337935db19c433062c61a7bc33b2f19bf79e574b55e"}}}'
```

## Document

```graphql
query FormsList($filter: FormFilter, $first: Int = 500) { __typename allForms(first: $first, filter: $filter) { __typename nodes { __typename abMain abShare createdAt formSlug id priority rowId status surfaces tags title updatedAt } totalCount } }
```

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