---
title: "Update a question. Roles: admin."
method: PUT
path: "/api/questions/{questionId}"
tags: ["Questions"]
---

# Update a question. Roles: admin.

`PUT /api/questions/{questionId}`

## Path parameters

- `questionId` integer, required

## Request body

- QuestionRequest
  - `profileQuestionId` integer
  - `membershipId` integer, required
  - `profileSectionId` integer
  - `evalSectionId` integer
  - `contentId` integer
  - `eventId` integer
  - `contextKey` 'ACTIVITY' | 'EVAL' | 'EVENT' | 'PROFILE_SECTION' | 'SELF_REPORT', required
  - `name` string
  - `profileQuestionType` string, required
  - `prompt` string, required
  - `helpText` string
  - `seq` integer, required
  - `properties` object
  - `optional` boolean, required
  - `disabled` boolean, required
  - `adminOnly` boolean, required
  - `externalReferenceId` string
  - `responderType` 'PRIMARY' | 'DEPENDENT' | 'ALL', required
  - `responderCommentMode` 'DISABLED' | 'OPTIONAL' | 'REQUIRED', required
  - `responseImagesMode` 'DISABLED' | 'OPTIONAL' | 'REQUIRED', required
  - `scoringMode` 'BEST_MATCH' | 'EXACT_MATCH' | 'PARTIAL_MATCH_STRICT' | 'PARTIAL_MATCH_PENALIZED'
  - `isDeferred` boolean, required
  - `profileOptions` ProfileOptionRequest[]
    - `profileOptionId` integer
    - `prompt` string, required
    - `points` number
    - `seq` integer, required
    - `disabled` boolean, required

## Response `200`

OK

- QuestionResponse
  - `success` boolean
  - `error` string
  - `profileQuestion` QuestionFull
    - `audit` Audit
      - `createdTime` string, date-time
      - `modifiedTime` string, date-time
      - `modifiedBy` string
    - `alternateLocales` object
      - `empty` boolean
    - `profileQuestionId` integer
    - `membershipId` integer
    - `contextKey` 'ACTIVITY' | 'EVAL' | 'EVENT' | 'PROFILE_SECTION' | 'SELF_REPORT'
    - `profileSectionId` integer
    - `evalSectionId` integer
    - `contentId` integer
    - `eventId` integer
    - `name` string
    - `profileQuestionType` string
    - `prompt` string
    - `helpText` string
    - `seq` integer
    - `optional` boolean
    - `disabled` boolean
    - `adminOnly` boolean
    - `properties` object
    - `responderType` 'PRIMARY' | 'DEPENDENT' | 'ALL'
    - `responderCommentMode` 'DISABLED' | 'OPTIONAL' | 'REQUIRED'
    - `responseImagesMode` 'DISABLED' | 'OPTIONAL' | 'REQUIRED'
    - `scoringMode` 'BEST_MATCH' | 'EXACT_MATCH' | 'PARTIAL_MATCH_STRICT' | 'PARTIAL_MATCH_PENALIZED'
    - `externalReferenceId` string
    - `pointsPossible` number
    - `profileOptions` ProfileOptionCore[]
      - `audit` Audit
        - `createdTime` string, date-time
        - `modifiedTime` string, date-time
        - `modifiedBy` string
      - `alternateLocales` object
        - `empty` boolean
      - `profileOptionId` integer
      - `prompt` string
      - `value` string
      - `points` number
      - `seq` integer
      - `disabled` boolean
      - `locale` string
    - `locale` string
    - `isDeferred` boolean
    - `isExternal` boolean

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not found
- `500` — Internal server error

## Changes

- **2026-09-02** `870f28ba2607` — 5 info
  - added the optional property `error/errorId` to the response with the `400` status
  - added the optional property `error/errorId` to the response with the `401` status
  - added the optional property `error/errorId` to the response with the `403` status
  - added the optional property `error/errorId` to the response with the `404` status
  - …1 more

[Change history](https://skmtc.dev/mobilecoach/apis/untitled-api/changes/api/questions/:questionId/put.md)

---

[API](https://skmtc.dev/mobilecoach/apis/untitled-api.md) · [All operations](https://skmtc.dev/mobilecoach/apis/untitled-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/mobilecoach/untitled-api/revisions/870f28ba2607/schema)
