---
title: "Reorder questions"
method: POST
path: "/api/v2/postings/{posting_id}/questions/reorder"
tags: ["Questions"]
---

# Reorder questions

`POST /api/v2/postings/{posting_id}/questions/reorder`

## Request

- Base URL: `https://api.heymilo.ai`
- URL: `https://api.heymilo.ai/api/v2/postings/{posting_id}/questions/reorder`
- Auth: API key in header `X-API-KEY`

Sets the display order for questions of a given modality. You must include every active question ID for the specified modality in the desired order.

## Path parameters

- `posting_id` string, required

## Headers

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

## Request body

- ReorderQuestionsRequest: Request body for reordering questions within a modality.
  - `modality` 'voice' | 'sms' | 'form' | 'resume_eligibility' | 'resume_scoring' | 'voice_tags', required: Modality to reorder: voice, sms, form, resume_eligibility, resume_scoring, voice_tags.
  - `order` string[], required: Ordered list of question IDs. Every active question for the specified modality must be included.

## Response `200`

Successful Response

- ListResponseQuestionResponse
  - `data` QuestionResponse[], required
    - `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.
  - `pagination` PaginationMeta, required
    - `has_more` boolean, required: Whether more results exist beyond this page
    - `total_count` integer, nullable: Total number of results (if available)
    - `url` string, nullable: URL of this resource

## 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.dev/heymilo/apis/heymilo-public-api/revisions/012c345aec46?raw)
