---
title: "Create a question"
method: POST
path: "/v3/questions"
tags: ["questions", "v3"]
---

# Create a question

`POST /v3/questions`

## Request body

- Model102
  - `survey_id` number, required — Survey Id
  - `section_id` number — Section Id
  - `question` Question, required
    - `text` string, required — Question text
    - `description` string — Question description
    - `type` 'FileInput' | 'TextInput' | 'OpinionScale' | 'MultiChoice' | 'BipolarMatrix' | 'CameraInput' | 'Consent' | 'ConstantSum' | 'ContactForm' | 'DateTime' | 'Dropdown' | 'EmailInput' | 'GroupRating' | 'Matrix' | 'Message' | 'NumberInput' | 'PhoneNumber' | 'RankOrder' | 'Rating' | 'Signature' | 'Slider' | 'URLInput' | 'YesNo' | 'GroupRank' | 'AudioInput' | 'PaymentQuestion' | 'NPSFeedback' | 'CESFeedback' | 'CSATFeedback', required — Type of question
    - `required` boolean — Is response mandatory for this question?
    - `randomized` boolean — Should the choices be randomized?
    - `tags` string[]
    - `multiple_answers` boolean — Can users select multiple answers for the question?
    - `choices` Model89[]
      - `text` string, required — Choice text
      - `score` number — Choice score
    - `hasScore` boolean — Should be set to true if individual choices has scores
    - `other` boolean — To enable other option
    - `all_of_the_above` boolean — To enable all of the above option. Works only if multipe_answers is set to true
    - `none_of_the_above` boolean — To enable none of the above option
    - `other_text` OtherText
      - `text` string — Other option text
      - `score` number — Other option score
    - `all_of_the_above_text` AllOfTheAboveText
      - `text` string — All of the above text
    - `none_of_the_above_text` NoneOfTheAboveText
      - `text` string — None of the above option option text
      - `score` number — None of the above option option score
    - `properties` Model92
      - `data` Model91
        - `min` string — label for min value
        - `max` string — label for max value
        - `mid` string — label for mid value
        - `step` 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 — Step value for opinion scale
        - `audio_transcription` boolean — Respondents can answer by voice. Only for text input type questions
        - `analyze_sentiment` boolean — To analyze the sentiment of the respondents. Only for text input type questions
        - `is_ranking_enabled` boolean — To enable ranking in group rank question type
        - `can_randomise_features_list` boolean — To randomize choices in group rank question
        - `can_repeat_feature` boolean — To allow choices to repeat in a same group in group rank question
        - `wait` 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 — Only for message question type in chat surveys
        - `type` 'SINGLE_LINE' | 'MULTI_LINE' | 'UNLIMITED' | 'EXACT' | 'RANGE' | 'DATETIME' | 'DATE_ONLY' | 'SLIDER' | 'TEXT' | 'DROP_DOWN' | 'MULTIPLE_ANSWER' | 'RATING' | 'SINGLE_ANSWER' | 'TEXT_INPUT' — Answer type for multiple choice, date time, constant sum and matrix questions.
        - `currency` 'INR' | 'USD' | 'EUR' | 'GBP' | 'AUD' | 'CAD' | 'CHF' | 'NOK' | 'SEK' | 'DKK' | 'MXN' | 'NZD' | 'BRL' | 'SGD' | 'RON' | 'CZK' — Currency code is needed for payment question
        - `amount` number — Amount to be paid for payment question
        - `expression_id` number — Expression Id for payment
        - `variable_id` number — Variable Id for payment
        - `discount` Discount
          - `active` boolean
          - `discount_coupons` Model90[]
            - `coupon_code` string, required — Coupon code
            - `discount_type` 'Amount' | 'Percentage', required — Discount type
            - `amount` number — Discount amount is required when discount_type is Amount
            - `percentage` number — Discount percentage is required when discount_type is Percentage
        - `icon_array_name` 'RATING_STAR' | 'RATING_CROWN' | 'RATING_LIGHTNING' | 'RATING_SMILEY' | 'RATING_THUMBSUP' | 'RATING_USER' — Icon type for rating
        - `rating_scale` number — Rating scale. Should be between 1-5 for rating type question. Should be between 3-10 for group rating question.
        - `slider_type` 'smileySlider' | 'lineSlider' | 'trafficLightSlider' | 'thermometerSlider' | 'gaugeSlider' — Only allowed for slider type question
        - `show_progress` boolean — To show slider progress value
        - `show_total` boolean — To show total for constant sum.
        - `total_sum` number — Defining total sum for constant sum.(total_sum must not be greater than 1000000)
        - `consent_text` string — Consent text for consent question
        - `show_terms_and_condition` boolean — To enable terms and conditions for consent question
        - `symbol` string — Symbol to be displayed for constant sum
        - `symbol_position` 'PREFIX' | 'SUFFIX' — Position of symbol for constant sum
        - `segments` number — Segments for slider question. Should be between 0-10 for constant sum. Should be between 0-5 for slider type question
        - `decimals` 0 | 1 | 2 — Decimal points for slider type question
        - `stack_fields` boolean — To stack choices/sub questions vertically
        - `maximum_number_of_files` number — Maximum number of files allowed for file input type question
        - `draw_signature` boolean — To enable draw option for signature type question
        - `type_signature` boolean — To enable typing option for signature type question
        - `upload_signature` boolean — To enable upload option for signature type question
        - `date_format` 'MMDDYYYY' | 'DDMMYYYY' | 'YYYYMMDD' — Date format for datetime question
        - `time_format` 'TWENTY_FOUR_HOUR' | 'TWELVE_HOUR' — Time format for datetime question
        - `show_calendar` boolean — Should the calendar be shown?
        - `yes_text` string — Yes text for yes or no question type
        - `no_text` string — No text for yes or no question type
        - `icon_shape` 'YES_NO_ICON_TICK_CROSS' | 'YES_NO_ICON_THUMBS' — Icon for yes or no question
        - `start` 0 | 1 — Starting value for opinion scale
        - `reverse_scale` boolean — Reverse scale for opinion scale
        - `fileTypes` string[]
        - `table_layout` 'CONTENT_WIDTH' | 'FULL_WIDTH' — Table layout matrix and bipolar type questions
        - `minLimit` number — MinLimit is required for multiple choice question with RANGE answer type. Optional for constant sum, number input, slider, group rank.
        - `maxLimit` number — MaxLimit is required for multiple choice question with RANGE answer type. Optional for constant sum, number input, slider, group rank.
        - `exactChoices` number — Required for multiple choice question with Exact answer type
        - `include_feedback_by_rating` boolean — To include feedback by rating for Feedback question type
        - `promoter` string — Promoter text for NPS feedback question type
        - `passive` string — Passive text for NPS feedback question type
        - `detractor` string — Detractor text for NPS feedback question type
        - `low_effort` string — Low effort text for CES feedback question type
        - `neutral` string — Neutral text for CES feedback question type
        - `high_effort` string — High effort text for CES feedback question type
        - `satisfied` string — Satisfied text for CSAT feedback question type
        - `dissatisfied` string — Dissatisfied text for CSAT feedback question type
        - `translate_answers` boolean — To translate answers for feedback question type
      - `recode` Recode
        - `enabled` boolean
        - `value` string
        - `label` Label
          - `yes` Yes
            - `enabled` boolean
            - `value` string
          - `no` Yes
            - `enabled` boolean
            - `value` string
    - `column` Model95[]
      - `name` string, required — Column name for matrix, bipolar matrix
      - `choices` Model93[]
        - `text` string, required — Required only for DROP_DOWN answer type in matrix question
    - `row` Model100[]
      - `left_text` string, required — Sub question or row text
      - `right_text` string — Right row text. Required only for bipolar matrix.
      - `required` boolean — Only for questions in contact form. True by default
      - `row_type` 'string' | 'number' | 'email' | 'date' | 'dropdown' | 'PhoneNumber' — Sub question type for contact form. Required only for contact form.
      - `choices` Model98[]
        - `text` string, required — Required only for DROP_DOWN answer type in contact form question.
    - `display_logic` DisplayLogic
      - `logics` Model101[]
        - `join_condition` 'and' | 'or'
        - `type` 'param', required — Custom variable type
        - `comparator` 'isPassed' | 'isNotPassed' | 'startsWith' | 'endsWith' | 'contains' | 'equalsString' | 'doesNotContain' | 'notEqualTo' | 'lessThanForParam' | 'greaterThanForParam', required — Condition type to check
        - `variable_id` number
        - `value` string — Not required for comparators isPassed and isNotPassed

## Response `default`

Successful

---

[API](https://skmtc.net/surveysparrow/apis/api-documentation.md) · [All operations](https://skmtc.net/surveysparrow/apis/api-documentation/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/surveysparrow/api-documentation/versions/f9da74f558da/schema)
