> ## Documentation Index
> Fetch the complete documentation index at: https://help.skillsdb.com/llms.txt
> Use this file to discover all available pages before exploring further.

# The Survey Response object

> One participant's answer to one question of a launched survey

<Info>
  **Quick Summary:** A response is one person's answer to one question of a launched survey. The answer is a typed object — its shape follows the question type — and every response carries a reference to the exact question *version* it answered, so results stay interpretable after a template evolves.
</Info>

## Attributes

| Field                     | Type           | Description                                                                           |
| ------------------------- | -------------- | ------------------------------------------------------------------------------------- |
| `id`                      | string         | Opaque response id                                                                    |
| `personId`                | string         | Who answered                                                                          |
| `question`                | object         | The question version answered: `{ id, questionVersionId, name, text, version, type }` |
| `answer`                  | object         | The typed answer — see below                                                          |
| `createdAt` / `updatedAt` | string \| null | Timestamps (UTC)                                                                      |

### The answer object

| Field                | Type           | Description                                                   |
| -------------------- | -------------- | ------------------------------------------------------------- |
| `kind`               | enum           | `text`, `rating`, `file`, `choices`, `certification`, `empty` |
| `text`               | string \| null | Text answers                                                  |
| `rating`             | number \| null | Rating answers                                                |
| `fileName`           | string \| null | Document-upload answers                                       |
| `options`            | array          | Chosen options for choice questions: `{ id, name }`           |
| `certificationCount` | integer        | Certifications attached by a certification-update answer      |

Exactly the members matching `kind` are populated; the rest are explicit nulls / empties.

## Operations

| Operation                                                      | Scope           | Notes                                                                                                                                                                                                                                                            |
| -------------------------------------------------------------- | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `GET /api/v1/surveys/{id}/responses`                           | `surveys:read`  | Every response collected by the run, paginated                                                                                                                                                                                                                   |
| `GET /api/v1/surveys/{id}/people/{person}/responses`           | `surveys:read`  | One participant's responses; the person slot takes an email or the opaque id                                                                                                                                                                                     |
| `POST /api/v1/surveys/{id}/people/{person}/responses`          | `surveys:write` | Submit an answer — **self only**: the credential's acting person must be the participant, anyone else is a [403](/api-docs/errors/insufficient-scope). The survey must be launched — an ended, cancelled or draft run answers a [409](/api-docs/errors/conflict) |
| `GET /api/v1/surveys/{id}/responses/{responseId}/download-url` | `surveys:read`  | A time-limited download link for a file answer                                                                                                                                                                                                                   |

## Submitting

The body names the question (`questionId` from the [survey's question set](/api-docs/resources/survey)) plus the answer member matching its type — `text`, `rating`, or a file name. A document-upload answer is **two steps**: the response is created and the result carries a time-limited `uploadUrl`; PUT the file bytes there. Re-submitting the same question updates the answer while the run is launched.

Answering moves the participation status from `assigned` to `in_progress`; completing every required question marks it `completed`.
