---
title: "GET /api/public/forms"
method: GET
path: "/api/public/forms"
tags: ["Forms"]
---

# GET /api/public/forms

`GET /api/public/forms`

List forms (questionnaires) created by the coach. Returns each form's metadata only; the questions are NOT included here. To read the questions of a form, call GET /forms/{formId}. Use type=registration for the intake questionnaire trainees fill in when they join, and type=update for recurring check-in forms.

## Query parameters

- `type` 'registration' | 'update'
- `page` integer
- `limit` integer

## Response `200`

Successful response

- object — Successful response
  - `data` object[]
    - `id` string
    - `coach` string
    - `title` string
    - `description` string
    - `type` 'registration' | 'update' — registration = the join-time intake questionnaire. update = a recurring check-in form.
    - `isActive` boolean
    - `registrationOrder` integer — Order this form is presented in during registration, when several registration forms exist.
    - `openAt` object — When and how often the form opens for trainees.
      - `date` string, date-time
      - `recurrence` 'weekly' | 'bi-weekly' | 'tri-weekly' | 'monthly' — How often the form reopens.
      - `openDays` integer — How many days the form stays open once it opens.
    - `target` 'allTrainees' | 'males' | 'females' | 'byLabels' — Who the form is shown to. byLabels targets trainees carrying at least one of targetLabels.
    - `targetLabels` object[] — Labels this form targets. Only present when target is byLabels.
      - `id` string
      - `text` string
      - `color` string
    - `createdAt` string, date-time
  - `pagination` object
    - `page` number
    - `limit` number
    - `total` number, nullable — Total number of matching items. null when the underlying source cannot report an exact count for this page; use hasMore to keep paging.
    - `hasMore` boolean
    - `truncated` boolean — Present and true when the result set exceeded the in-memory scan cap and was truncated. Narrow your filters to page through all items.

## Other responses

- `400` — Default Response
- `401` — Default Response
- `403` — Default Response
- `429` — Default Response
- `500` — Default Response

---

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