---
title: "Get a questionnaire with its sections and questions"
method: GET
path: "/api/questionnaires/{id}/builder"
tags: ["Questionnaire"]
---

# Get a questionnaire with its sections and questions

`GET /api/questionnaires/{id}/builder`

The single read behind the questionnaire builder, preview and summary screens: one questionnaire plus its sections and questions, each ordered by sort order. Questions carry their `meta` blob both nested and flattened onto the question itself, and an attachment question additionally carries a 24-hour signed `attachmentFileUrl`. The questionnaire must belong to the calling company — another company's questionnaire is indistinguishable from a missing one and answers 404. Archived questionnaires are returned.

## Path parameters

- `id` string, required

## Response `200`

Default Response

- object
  - `metadata` object, required
    - `success` boolean, required — True when the request succeeded.
  - `data` object, required
    - `id` string, required
    - `companyId` string, nullable
    - `name` string, nullable
    - `description` string, nullable
    - `status` string, nullable
    - `isRetraced` string, nullable
    - `isTemplate` boolean, nullable
    - `isArchived` number, nullable
    - `isActive` number, nullable
    - `templateId` string, nullable
    - `statistics` object, nullable
      - `totalApprovedResponses` number, nullable
      - `totalInReviewResponses` number, nullable
      - `totalDeniedResponses` number, nullable
      - `totalMissingResponses` number, nullable
      - `totalQuestions` number, nullable
      - `approvedResponsesPercentage` number, nullable
      - `inReviewResponsesPercentage` number, nullable
      - `deniedResponsesPercentage` number, nullable
      - `missingResponsesPercentage` number, nullable
      - `totalOpenRequests` number, nullable
      - `totalInReviewRequests` number, nullable
      - `totalCompletedRequests` number, nullable
      - `totalCompaniesInvited` number, nullable
      - `totalRequestChanges` number, nullable
    - `sections` object[], required
      - `id` string, required
      - `name` string, nullable
      - `description` string, nullable
      - `isRetraced` string, nullable
      - `sortOrder` number, nullable
    - `questions` object[], required
      - `id` string, required
      - `title` string, nullable
      - `description` string, nullable
      - `companyId` string, nullable
      - `sortOrder` number, nullable
      - `questionTypeId` string, nullable
      - `questionnaireSectionId` string, nullable
      - `retracedDatapointId` string, nullable
      - `type` string, nullable
      - `sectionId` string, nullable
      - `isCustom` boolean, required
      - `meta` object, required

## Other responses

- `401` — Default Response
- `403` — Default Response
- `404` — Default Response

## Changes

> 22 revisions in range; 1 not diffed.

- **2026-08-31** `97e51f27dc77` — 24 breaking, 37 info
  - the response property `data/companyId` became nullable for the status `200`
  - the response property `data/description` became nullable for the status `200`
  - the response property `data/isActive` became nullable for the status `200`
  - the response property `data/isArchived` became nullable for the status `200`
  - …57 more
- **2026-08-15** `0a6ddb3264e6` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/retraced/apis/api-reference/changes/api/questionnaires/:id/builder/get.md)

---

[API](https://skmtc.dev/retraced/apis/api-reference.md) · [All operations](https://skmtc.dev/retraced/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/retraced/api-reference/revisions/97e51f27dc77/schema)
