# FormResponsesSurface

> Responses for one form in a window: the list, counts by placement and the funnel. Read access, forms toolset, MCP tool get_form_responses_surface.

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

## Variables

| Variable | Type | Required | Accepts | Description |
|---|---|---|---|---|
| `first` | `Int` | no | 32-bit integer. Default `25` |  |
| `from` | `Datetime` | no | ISO 8601 with a zone, e.g. `2026-01-01T00:00:00Z` | Window start. Defaults to 30 days ago. |
| `listFilter` | `FormResponseFilter` | no | [FormResponseFilter](https://developer.missin.co.uk/reference/input-types.md#formresponsefilter) |  |
| `placementId` | `UUID` | no |  | Scope to one placement. Omit for every placement of the form. |
| `slug` | `String!` | yes |  | Checks for equality with the object’s `formSlug` field. |
| `to` | `Datetime` | no | ISO 8601 with a zone, e.g. `2026-01-01T00:00:00Z` | Window end. Defaults to now. |
| `windowFilter` | `FormResponseFilter` | no | [FormResponseFilter](https://developer.missin.co.uk/reference/input-types.md#formresponsefilter) |  |

## 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":"FormResponsesSurface","variables":{"slug":"…"},"extensions":{"persistedQuery":{"version":1,"sha256Hash":"a763ab50c672355fe7e850c4d7db61564871cbc29ea5646807f91017064b7388"}}}'
```

## Document

```graphql
query FormResponsesSurface($first: Int = 25, $from: Datetime, $listFilter: FormResponseFilter, $placementId: UUID, $slug: String!, $to: Datetime, $windowFilter: FormResponseFilter) { __typename responses: allFormResponses( first: $first filter: $listFilter orderBy: [CREATED_AT_DESC] ) { __typename nodes { __typename completedAt createdAt formPlacementId answers: formResponseAnswersByFormResponseId { __typename totalCount } id partnerByPartnerId { __typename profileImage: avatarUrl id name rowId username } rowId shortLinkByShortLinkId { __typename code id label } status trustFlags trustScore updatedAt utmCampaign utmContent utmMedium utmSource utmTerm variant { __typename id rowId variantType } } totalCount } everything: allFormResponses(filter: $windowFilter) { __typename totalCount } complete: allFormResponses(condition: {status: COMPLETE}, filter: $windowFilter) { __typename totalCount } incomplete: allFormResponses( condition: {status: INCOMPLETE} filter: $windowFilter ) { __typename totalCount } skipped: allFormResponses(condition: {status: SKIPPED}, filter: $windowFilter) { __typename totalCount } believability: allFormResponses(filter: $windowFilter) { __typename aggregates { __typename average { __typename trustScore } } } allForms(condition: {formSlug: $slug}, first: 1) { __typename nodes { __typename formPlacementsByFormId(first: 50) { __typename nodes { __typename id integrationChannelByIntegrationChannelId { __typename displayName id slug surface } published rowId surface } } formSlug id rowId status title } } formFunnel(slug: $slug, placementId: $placementId, from: $from, to: $to) { __typename abandonedSessions from pages { __typename abandoned completed pageIndex viewed } placementIds steps { __typename key sessions } to variants { __typename answerableQuestions variantId } } }
```

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