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

# GET /api/public/forms/{formId}

`GET /api/public/forms/{formId}`

Get one form including its full question set. Questions are grouped into steps: each entry of steps[] has a title and a fields[] array, and each field carries its label, fieldType, whether it is required, and its options where relevant. This is the endpoint that tells you what a trainee was actually asked; GET /forms only lists metadata.

## Path parameters

- `formId` string, required

## Response `200`

Successful response

- object — Successful response
  - `data` object — A single form including its questions. Questions live under steps[].fields[], not at the top level.
    - `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
    - `steps` object[] — The form’s pages, in order. Each holds the questions asked on that page.
      - `fields` object[]
        - `id` string
        - `label` string — The question text shown to the trainee.
        - `fieldType` string — How the question is answered, e.g. text, textarea, number, date, dropdown, checkbox, rating, slider, file, signature, weight, height, measurements, bodyFat, gender, dateOfBirth, activityLevel. contentBlock is not a question but static copy shown to the trainee.
        - `isRequired` boolean
        - `placeholder` string
        - `options` string[] — Selectable values, for dropdown and similar field types.
        - `multiple` boolean

## Other responses

- `400` — Default Response
- `401` — Default Response
- `403` — Default Response
- `404` — Default Response
- `409` — 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)
