---
title: "List form submissions"
method: GET
path: "/websites/{websiteId}/forms/submissions"
tags: ["Forms"]
---

# List form submissions

`GET /websites/{websiteId}/forms/submissions`

## Request

- Base URL: `https://api.cactal.ai/v1`
- URL: `https://api.cactal.ai/v1/websites/{websiteId}/forms/submissions`
- Auth: HTTP bearer

Returns submissions newest first as a cursor-paginated page. Filter by `form` name, `status` (`inbox` by default, or `spam`), and `source` (`published` for real visitors, `draft` for test submissions from the draft preview). Items carry the fields in submitted order, the inferred submitter email and name, page, spam signals, classifier verdict, and notification state. Submission data is personal information: never render it on the public website.

## Path parameters

- `websiteId` string, required

## Query parameters

- `form` string: Only submissions of this form name.
- `status` 'inbox' | 'spam': `inbox` (default) or `spam`.
- `source` 'published' | 'draft': `published` for real visitors, `draft` for test submissions from the draft preview.
- `cursor` string
- `limit` integer

## Response `200`

A page of submissions and the next cursor.

- object
  - `items` object[], required
    - `id` string, required
    - `formName` string, required
    - `status` 'inbox' | 'spam', required
    - `source` 'published' | 'draft', required
    - `data` object[], required: Fields in submitted order.
      - `name` string, required
      - `value` union, required
        - string
        - string[]
    - `submitterEmail` string, nullable, required
    - `submitterName` string, nullable, required
    - `pagePath` string, nullable, required
    - `country` string, nullable, required
    - `flags` string[], required
    - `classification` object, nullable, required
      - `verdict` 'lead' | 'spam', required
      - `confidence` number, required
      - `model` string, required
      - `at` string, required
    - `notifiedAt` string, nullable, required
    - `notificationError` string, nullable, required
    - `createdAt` string, required
  - `nextCursor` string, nullable, required: Opaque cursor for the next page. Pass it as the `cursor` parameter on the next request. `null` when this is the last page.

## Other responses

- `400`: Validation failed. The response `message` names the first invalid field.
- `401`: Missing, invalid, expired, or revoked API key.
- `403`: The authenticated principal lacks the required capability.
- `404`: The resource does not exist or is outside the principal’s access scope.
- `429`: Rate limit exceeded. Retry after the number of seconds in the `Retry-After` header.

---

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