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

# List forms

`GET /websites/{websiteId}/forms`

## Request

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

Returns every form with inbox and spam counts, whether the published site still references it, who it notifies, the number of inbox submissions since the caller last opened the Forms tab, and monthly usage against the Free plan limit (`limit` is null on paid plans). Forms come from `<form method="post" action="/_cactal/forms/<name>">` in the website source and appear here as soon as the draft or published build contains them, before any submission.

## Path parameters

- `websiteId` string, required

## Response `200`

Forms, unseen count, and monthly usage.

- object
  - `forms` object[], required
    - `id` string, required
    - `name` string, required
    - `displayName` string, required
    - `recipients` object[], required: Who is emailed for this form. New forms start with the organization owners.
      - `id` string, required
      - `email` string, required
      - `status` 'member' | 'pending' | 'confirmed' | 'failing' | 'stopped', required
      - `createdAt` string, required
    - `onSite` boolean, required: Whether the published site still references this form.
    - `inboxCount` integer, required
    - `spamCount` integer, required
    - `lastSubmissionAt` string, nullable, required
  - `unseenCount` integer, required: Published-site inbox submissions since the caller last opened Forms; test submissions never count.
  - `usage` object, required
    - `used` integer, required: Accepted published submissions this month.
    - `limit` integer, nullable, required: Monthly limit on the Free plan; null when unlimited.

## 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)
