# List registration form responses

`GET https://api.coach-platform.com/api/public/forms/registration`

List submitted registration (intake) form responses across every registration form, newest first. This is the questionnaire a trainee fills in when joining. Pass traineeId to read one trainee's intake answers. Each answer carries its question label and field type alongside the value. Trainee personal details and phone number are included only when the key also has trainees:read.

- Resource: Forms
- Authentication: API key in the `Authorization: Bearer cp_live_...` header
- HTML version: https://www.coach-platform.com/docs/api/reference/get-forms-registration
- OpenAPI spec: https://www.coach-platform.com/openapi.json

## Query parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `traineeId` | string | No | Only responses submitted by this trainee. |
| `includeAnswers` | boolean | No | Embed each response's answers instead of returning metadata only, so one call gives both the questions and what the trainee replied. Every answer carries its question label, field type and value, and file, photo and signature answers also carry a temporary presignedUrl. Requires traineeId, which keeps the number of answers bounded. |
| `status` | string | No | Filter by handling status. Allowed values: `Pending`, `Handled`. |
| `search` | string | No | Search the trainee name or the form title. |
| `gender` | string | No | Filter by trainee gender. Allowed values: `males`, `females`, `allTrainees`. |
| `labels` | string | No | Comma-separated label ids the trainee must carry. |
| `dateFrom` | string | No | Only responses submitted on or after this date (YYYY-MM-DD). |
| `dateTo` | string | No | Only responses submitted on or before this date (YYYY-MM-DD). |
| `page` | integer | No | Page number (1-based, default 1) Minimum: `1`. |
| `limit` | integer | No | Number of items to return (default 25, max 500) Minimum: `1`. Maximum: `500`. |

## Responses

| Status | Description |
|---|---|
| `200` OK | Successful response |
| `400` Bad Request |  |
| `401` Unauthorized |  |
| `403` Forbidden |  |
| `429` Too Many Requests |  |
| `500` Internal Server Error |  |

### 200 OK

Content type: `application/json`

| Field | Type | Description |
|---|---|---|
| `data` | object[] |   |
| `data[].id` | string |   |
| `data[].formId` | string | Id of the form that was submitted. |
| `data[].formTitle` | string |   |
| `data[].formType` | string | Allowed values: `registration`, `update`. |
| `data[].traineeInfo` | object | The trainee who submitted it. |
| `data[].traineeInfo.id` | string |   |
| `data[].traineeInfo.name` | string |   |
| `data[].traineeInfo.gender` | string |   |
| `data[].status` | string | Allowed values: `Pending`, `Handled`. |
| `data[].createdAt` | string<date-time> |   |
| `pagination` | object |   |
| `pagination.page` | number |   |
| `pagination.limit` | number |   |
| `pagination.total` | number \| null | Total number of matching items. null when the underlying source cannot report an exact count for this page; use hasMore to keep paging. |
| `pagination.hasMore` | boolean |   |
| `pagination.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. |

Example:

```json
{
  "data": [
    {
      "id": "<string>",
      "formId": "<string>",
      "formTitle": "<string>",
      "formType": "registration",
      "traineeInfo": {
        "id": "<string>",
        "name": "<string>",
        "gender": "<string>"
      },
      "status": "Pending",
      "createdAt": "<date-time>"
    }
  ],
  "pagination": {
    "page": 123,
    "limit": 123,
    "total": 123,
    "hasMore": true,
    "truncated": true
  }
}
```

### Error responses 400, 401, 403, 429, 500

Content type: `application/json`

| Field | Type | Description |
|---|---|---|
| `error` | object |   |
| `error.code` | string |   |
| `error.message` | string |   |
| `error.fix` | string \| null |   |
| `error.details` | object \| null |   |
| `error.retryAfterMs` | number \| null |   |

Example:

```json
{
  "error": {
    "code": "<string>",
    "message": "<string>",
    "fix": "<string>",
    "details": {},
    "retryAfterMs": 123
  }
}
```

## Examples

### cURL

```bash
curl --request GET \
  --url 'https://api.coach-platform.com/api/public/forms/registration' \
  --header 'Authorization: Bearer cp_live_...'
```

### JavaScript (fetch)

```js
const response = await fetch('https://api.coach-platform.com/api/public/forms/registration', {
  method: 'GET',
  headers: {
    Authorization: 'Bearer cp_live_...',
  },
});

const data = await response.json();
```

## Related endpoints

- [List forms](https://www.coach-platform.com/docs/api/reference/get-forms/index.md): `GET /api/public/forms`. List forms (questionnaires) created by the coach.
- [List check-in responses](https://www.coach-platform.com/docs/api/reference/get-updates/index.md): `GET /api/public/updates`. List submitted update (check-in) form responses across every update form, newest first.
- [Respond to a check-in](https://www.coach-platform.com/docs/api/reference/post-updates-update-id-respond/index.md): `POST /api/public/updates/{updateId}/respond`. Respond to a submitted check-in.
- [Get a form with its questions](https://www.coach-platform.com/docs/api/reference/get-forms-form-id/index.md): `GET /api/public/forms/{formId}`. Get one form including its full question set.
- [Get a form response](https://www.coach-platform.com/docs/api/reference/get-forms-form-id-response-response-id/index.md): `GET /api/public/forms/{formId}/response/{responseId}`. Get a single submitted form response with its answers.
- [List responses to a form](https://www.coach-platform.com/docs/api/reference/get-forms-form-id-responses/index.md): `GET /api/public/forms/{formId}/responses`. List submitted responses for a form, newest first.
- Previous: [List forms](https://www.coach-platform.com/docs/api/reference/get-forms/index.md): `GET /api/public/forms`. List forms (questionnaires) created by the coach.
- Next: [List check-in responses](https://www.coach-platform.com/docs/api/reference/get-updates/index.md): `GET /api/public/updates`. List submitted update (check-in) form responses across every update form, newest first.
