---
title: "List surveys"
method: GET
path: "/api/v3/surveys"
tags: ["V3 Surveys"]
---

# List surveys

`GET /api/v3/surveys`

Returns surveys for the workspace. Session cookie or x-api-key.

## Query parameters

- `workspaceId` string, cuid2, required
- `limit` integer
- `cursor` string
- `includeTotalCount` boolean
- `filter[name][contains]` string
- `filter[status][in]` string[]
- `filter[type][in]` string[]
- `sortBy` 'createdAt' | 'updatedAt' | 'name' | 'relevance'

## Response `200`

Surveys retrieved successfully

- object
  - `data` SurveyListItem[], required
    - `id` string, required
    - `name` string, required
    - `workspaceId` string, required
    - `type` 'link' | 'app' | 'website' | 'web', required
    - `status` 'draft' | 'inProgress' | 'paused' | 'completed', required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `archivedAt` string, date-time, nullable, required — Soft-delete/archive marker (ISO 8601); `null` when the survey is active.
    - `publishOn` string, date-time, nullable, required — Scheduled publish time (ISO 8601), or null if not scheduled.
    - `responseCount` integer, required — Number of responses, including partial ones.
    - `completedResponseCount` integer, required — Number of responses the respondent finished.
    - `creator` object, nullable, required — The user who created the survey, or null for API-key/system-created surveys.
      - `name` string, required
  - `meta` object, required
    - `limit` integer, required
    - `nextCursor` string, nullable, required — Opaque cursor for the next page. `null` when there are no more results.
    - `totalCount` integer, nullable, required — Total number of surveys matching the current filters across all pages. `null` when `includeTotalCount=false`.
    - `hasArchived` boolean, nullable, required — `true` when the workspace has at least one archived (soft-deleted) survey. Computed only on the first page (same gate as `totalCount`); `null` when `includeTotalCount=false`.

## Other responses

- `400` — Bad Request — malformed JSON, invalid query/body/params, duplicate name, or unsupported field.
- `401` — Not authenticated (no valid session or API key).
- `403` — Forbidden — no workspace access, or resource does not exist (404 not used; avoids existence leak).
- `429` — Rate limit exceeded.
- `500` — Internal Server Error.

---

[API](https://skmtc.dev/formbricks/apis/formbricks-api-v3.md) · [All operations](https://skmtc.dev/formbricks/apis/formbricks-api-v3/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/formbricks/formbricks-api-v3/revisions/3c2c022e49d2/schema)
