---
title: "Update a question"
method: PATCH
path: "/api/v2/postings/{posting_id}/questions/{question_id}"
tags: ["Questions"]
---

# Update a question

`PATCH /api/v2/postings/{posting_id}/questions/{question_id}`

Updates the specified question. Only fields present in the request body are modified; omitted fields remain unchanged.

## Path parameters

- `posting_id` string, required
- `question_id` string, required

## Headers

- `X-API-KEY` string, nullable
- `Authorization` string, nullable
- `X-Workspace-Id` string, nullable

## Request body

- UpdateQuestionRequest — Request body for updating a question. Only provided fields are modified; omitted fields remain unchanged.
  - `text` string, nullable — Updated question text.
  - `evaluation_criteria` string, nullable — Updated evaluation criteria.
  - `score_of_1` string, nullable — Updated score-1 description.
  - `score_of_5` string, nullable — Updated score-5 description.
  - `score_weight` integer, nullable — Updated importance weight for scoring (1–10).
  - `not_scored` boolean, nullable — Updated not-scored flag.
  - `question_type` string, nullable — Updated question format.
  - `min_follow_ups` integer, nullable — Updated min follow-ups.
  - `max_follow_ups` integer, nullable — Updated max follow-ups.
  - `additional_instructions` string, nullable — Updated instructions.
  - `post_processing_evaluation_criteria` string, nullable — Updated post-processing criteria.
  - `expected_answer` string, nullable — Updated expected answer.
  - `expected_value` integer, nullable — Updated expected value.
  - `is_dealbreaker` boolean, nullable — Updated dealbreaker flag.
  - `answer` unknown
  - `is_knockout` boolean, nullable — Updated knockout flag.
  - `dropdown_values` object[], nullable — Updated dropdown options.
  - `is_answer_mandated` boolean, nullable — Updated require-answer flag.
  - `mcq_type` string, nullable — Updated MCQ type.
  - `operator` string, nullable — Updated operator.
  - `file_types` string[], nullable — Updated file types.
  - `allow_multiple_files` boolean, nullable — Updated multiple files flag.
  - `slider_min` number, nullable — Updated slider min.
  - `slider_max` number, nullable — Updated slider max.
  - `slider_step` number, nullable — Updated slider step.
  - `response_format` 'text' | 'freeform' | 'date' | 'number', nullable — Updated response format: 'text', 'freeform', 'date', or 'number'.
  - `instructions` string, nullable — Updated instructions.
  - `options` string[], nullable — Updated options.
  - `structured_config` object, nullable — Updated advanced structured configuration (voice).

## Response `200`

Successful Response

- SingleResponseQuestionResponse
  - `data` QuestionResponse, required — A question or criterion belonging to a posting. The ``modality`` field indicates the question type (voice, sms, form, resume_eligibility, resume_scoring, voice_tags). Fields that are not applicable to a given modality will be ``null``.
    - `object` 'question' — Object type identifier.
    - `id` string, required — Unique question/criterion identifier.
    - `posting_id` string, required — ID of the posting this question belongs to.
    - `modality` string, required — Question modality: voice, sms, form, resume_eligibility, resume_scoring, voice_tags.
    - `text` string, required — The question text, criterion text, or tag name.
    - `rank` integer, nullable — Display order (1-based). Lower ranks appear first.
    - `evaluation_criteria` string, nullable — Evaluation criteria for scoring.
    - `score_of_1` string, nullable — Description of what a score of 1 means.
    - `score_of_5` string, nullable — Description of what a score of 5 means.
    - `score_weight` integer, nullable — Importance weight for scoring (1–10).
    - `not_scored` boolean, nullable — Whether this question is asked but not scored (voice).
    - `question_type` string, nullable — Question format. For voice: 'open-ended' or 'scored'. Auto-inferred by the backend for SMS ('YES_NO', 'NUMERIC') and form ('dropdown', 'file_upload', 'slider', etc.) modalities.
    - `min_follow_ups` integer, nullable — Minimum follow-up questions (voice).
    - `max_follow_ups` integer, nullable — Maximum follow-up questions (voice).
    - `additional_instructions` string, nullable — Per-question instructions for the AI interviewer.
    - `post_processing_evaluation_criteria` string, nullable — Evaluation criteria applied post-interview.
    - `expected_answer` string, nullable — Expected answer text (SMS yes/no).
    - `expected_value` integer, nullable — Expected numeric value (SMS numeric).
    - `is_dealbreaker` boolean, nullable — Whether wrong answer disqualifies (SMS).
    - `answer` unknown
    - `is_knockout` boolean, nullable — Whether this is a knockout question (form).
    - `dropdown_values` object[], nullable — Dropdown option list (form).
    - `is_answer_mandated` boolean, nullable — Whether an answer is required (form).
    - `mcq_type` string, nullable — Multiple-choice type: 'single' or 'multiple' (form). May be auto-set to 'multiple' by the backend for dropdown questions.
    - `operator` string, nullable — Validation operator: eq, neq, gt, gte, lt, lte (form). May be auto-set by the backend (e.g. 'minimum' for slider questions).
    - `file_types` string[], nullable — Allowed file extensions (form file_upload).
    - `allow_multiple_files` boolean, nullable — Allow multiple file uploads (form).
    - `slider_min` number, nullable — Minimum slider value (form).
    - `slider_max` number, nullable — Maximum slider value (form).
    - `slider_step` number, nullable — Slider step increment (form).
    - `response_format` 'text' | 'freeform' | 'date' | 'number', nullable — Expected response format for voice_tags: 'text', 'freeform', 'date', or 'number'.
    - `instructions` string, nullable — Extraction instructions (voice_tags).
    - `options` string[], nullable — Allowed options (voice_tags).
    - `structured_config` object, nullable — Advanced structured configuration (voice). Opaque key-value object forwarded to the AI interviewer.
    - `created_at` number, nullable — Unix timestamp when created.
    - `updated_at` number, nullable — Unix timestamp when last updated.
  - `meta` object, nullable — Optional metadata. Shape varies by endpoint.

## Other responses

- `401` — Invalid or missing API key.
- `404` — Resource not found.
- `422` — Validation Error
- `429` — Rate limit exceeded.

---

[API](https://skmtc.dev/heymilo/apis/heymilo-public-api.md) · [All operations](https://skmtc.dev/heymilo/apis/heymilo-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/heymilo/heymilo-public-api/revisions/45baf1f1338c/schema)
