---
title: "List questions"
method: GET
path: "/api/v2/postings/{posting_id}/questions"
tags: ["Questions"]
---

# List questions

`GET /api/v2/postings/{posting_id}/questions`

Returns all questions and criteria for a posting. Optionally filter by modality (voice, sms, form, resume_eligibility, resume_scoring, voice_tags).

## Path parameters

- `posting_id` string, required

## Query parameters

- `modality` 'voice' | 'sms' | 'form' | 'resume_eligibility' | 'resume_scoring' | 'voice_tags', nullable — Filter by question modality: voice, sms, form, resume_eligibility, resume_scoring, voice_tags.
- `limit` integer
- `starting_after` string, nullable

## Headers

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

## 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.net/heymilo/apis/heymilo-public-api.md) · [All operations](https://skmtc.net/heymilo/apis/heymilo-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/heymilo/heymilo-public-api/revisions/5e07b657706b/schema)
