> ## Documentation Index
> Fetch the complete documentation index at: https://developers.respondent.io/llms.txt
> Use this file to discover all available pages before exploring further.

> Add up to 40 screener questions in a single request. This replaces any existing questions — use it for initial screener setup rather than incremental additions.

# Create multiple screener questions



## OpenAPI

````yaml put /v1/projects/{projectId}/screener-questions/bulk
openapi: 3.0.0
info:
  title: Partner API
  description: Public API for partner integrations
  version: '1.0'
  contact: {}
servers:
  - url: https://api-staging.respondent.io
security: []
tags: []
paths:
  /v1/projects/{projectId}/screener-questions/bulk:
    put:
      tags:
        - screener-questions
      summary: Create multiple screener questions
      description: >-
        This endpoint will replace all screener questions with the list in the
        body.


        Screener questions are limited to a maximum of 40 per project.


        Uid is optional. If not provided, a new uid will be generated for the
        question.


        Radio Question skip logic: `goToQuestionUid` is required.


        Checkbox Question skip logic: `answerUid` of the checkbox question and
        `goToQuestionUid` of question to navigate to are required.


        To use bulk screener endpoint, send the list of questions in the body:


        Option 1: Send bulk questions including uids and skip logic (see skip
        logic requirements above) from your end. We will process and return the
        response with the uids.


        Option 2: This option has 2 steps:

           2.1 PUT request: Create bulk questions without skip logic.

           2.2 PUT request: Use the generated uids from the above response to update the skip logic for bulk questions. Please ensure you refer the same uids generated in the response.
      operationId: ScreenerQuestionsController_bulkCreate
      parameters:
        - name: x-api-key
          in: header
          required: true
          schema:
            type: string
        - name: x-api-secret
          in: header
          required: true
          schema:
            type: string
        - name: projectId
          required: true
          in: path
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                oneOf:
                  - $ref: '#/components/schemas/UpsertRadioScreenerQuestionDto'
                  - $ref: '#/components/schemas/UpsertCheckboxScreenerQuestionDto'
                  - $ref: '#/components/schemas/UpsertTextboxScreenerQuestionDto'
                  - $ref: '#/components/schemas/UpsertSliderScaleScreenerQuestionDto'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ScreenerQuestion'
components:
  schemas:
    UpsertRadioScreenerQuestionDto:
      type: object
      properties:
        text:
          type: string
        isRequired:
          type: boolean
        skipLogic:
          type: boolean
        includeOtherOption:
          type: boolean
        questionType:
          $ref: '#/components/schemas/RadioQuestionType'
        id:
          type: string
          format: ObjectId
        uid:
          type: string
        answers:
          type: array
          items:
            $ref: '#/components/schemas/UpsertRadioScreenerQuestionAnswerDto'
        isEnd:
          type: boolean
          default: false
        warnings:
          type: array
          items:
            type: string
        createdAt:
          format: date-time
          type: string
      required:
        - text
        - questionType
        - answers
      title: Radio Question
    UpsertCheckboxScreenerQuestionDto:
      type: object
      properties:
        text:
          type: string
        isRequired:
          type: boolean
        skipLogic:
          type: boolean
        includeOtherOption:
          type: boolean
        logic:
          $ref: '#/components/schemas/ScreenerQuestionSkipLogic'
        questionType:
          $ref: '#/components/schemas/CheckboxQuestionType'
        id:
          type: string
          format: ObjectId
        uid:
          type: string
        answers:
          type: array
          items:
            $ref: '#/components/schemas/UpsertCheckboxScreenerQuestionAnswerDto'
        isEnd:
          type: boolean
          default: false
        warnings:
          type: array
          items:
            type: string
        createdAt:
          format: date-time
          type: string
      required:
        - text
        - questionType
        - answers
      title: Checkbox Question
    UpsertTextboxScreenerQuestionDto:
      type: object
      properties:
        text:
          type: string
        isRequired:
          type: boolean
        questionType:
          $ref: '#/components/schemas/TextboxQuestionType'
        id:
          type: string
          format: ObjectId
        uid:
          type: string
        isEnd:
          type: boolean
          default: false
        warnings:
          type: array
          items:
            type: string
        createdAt:
          format: date-time
          type: string
      required:
        - text
        - questionType
      title: Textbox Question
    UpsertSliderScaleScreenerQuestionDto:
      type: object
      properties:
        text:
          type: string
        isRequired:
          type: boolean
        questionType:
          $ref: '#/components/schemas/SliderScaleQuestionType'
        minValue:
          type: number
          default: 0
        maxValue:
          type: number
          default: 100
        step:
          type: number
          default: 10
        id:
          type: string
          format: ObjectId
        uid:
          type: string
        isEnd:
          type: boolean
          default: false
        warnings:
          type: array
          items:
            type: string
        createdAt:
          format: date-time
          type: string
      required:
        - text
        - questionType
      title: Slider Scale Question
    ScreenerQuestion:
      type: object
      properties:
        createdAt:
          type: string
        updatedAt:
          type: string
        questionType:
          $ref: '#/components/schemas/QuestionType'
        uid:
          type: string
        text:
          type: string
        answers:
          type: array
          items:
            $ref: '#/components/schemas/ScreenerQuestionAnswer'
        isRequired:
          type: boolean
        skipLogic:
          type: boolean
        includeOtherOption:
          type: boolean
        isEnd:
          type: boolean
        logic:
          $ref: '#/components/schemas/ScreenerQuestionSkipLogic'
        minValue:
          type: number
        maxValue:
          type: number
        step:
          type: number
        order:
          type: number
        warnings:
          type: array
          items:
            type: string
        id:
          type: string
      required:
        - createdAt
        - text
        - minValue
        - maxValue
        - step
        - id
    RadioQuestionType:
      type: string
      default: radio
      enum:
        - radio
    UpsertRadioScreenerQuestionAnswerDto:
      type: object
      properties:
        text:
          type: string
          description: Required  unless `isOther`, then text will be set to 'Other'
        goToQuestionUid:
          type: string
          description: Skip logic for radio questions. Uid of question to skip to.
        isOther:
          type: boolean
          description: Is 'Other' answer with comment field
        answerValue:
          $ref: '#/components/schemas/RadioAnswerValue'
        id:
          type: string
          format: ObjectId
        uid:
          type: string
        createdAt:
          format: date-time
          type: string
      required:
        - answerValue
    ScreenerQuestionSkipLogic:
      type: object
      properties:
        answerUid:
          type: string
        goToQuestionUid:
          type: string
        skipLogicType:
          $ref: '#/components/schemas/ScreenerQuestionSkipLogicType'
        multipleAnswers:
          type: array
          items:
            $ref: '#/components/schemas/SkipLogicMultipleAnswer'
        multipleAnswersBoolType:
          $ref: '#/components/schemas/SkipLogicMultipleAnswersBoolType'
      required:
        - answerUid
    CheckboxQuestionType:
      type: string
      default: checkbox
      enum:
        - checkbox
    UpsertCheckboxScreenerQuestionAnswerDto:
      type: object
      properties:
        text:
          type: string
          description: Required  unless `isOther`, then text will be set to 'Other'
        isOther:
          type: boolean
          description: Is 'Other' answer with comment field
        answerValue:
          $ref: '#/components/schemas/CheckboxAnswerValue'
        id:
          type: string
          format: ObjectId
        uid:
          type: string
        createdAt:
          format: date-time
          type: string
      required:
        - answerValue
    TextboxQuestionType:
      type: string
      default: singleLineTextbox
      enum:
        - singleLineTextbox
        - multiLineTextbox
        - numericBox
    SliderScaleQuestionType:
      type: string
      default: sliderScale
      enum:
        - sliderScale
    QuestionType:
      type: string
      enum:
        - radio
        - multiLineTextbox
        - checkbox
        - singleLineTextbox
        - numericBox
        - sliderScale
        - fileUpload
    ScreenerQuestionAnswer:
      type: object
      properties:
        createdAt:
          type: string
        updatedAt:
          type: string
        uid:
          type: string
        text:
          type: string
          description: Required  unless `isOther`, then text will be set to 'Other'
        answerValue:
          type: number
          description: |-
            CHECKBOX: {
                    id: 3,
                    answerValues: [
                      { id: 1, text: 'May Select' },
                      { id: 2, text: 'Must Select' },
                      { id: 3, text: 'Disqualify' },
                    ],
                  },
                   RADIO: {
                    id: 1,
                    answerValues: [
                      { id: 1, text: 'Qualify' },
                      { id: 2, text: 'Disqualify' },
                    ],
                  },
        goToQuestionUid:
          type: string
          description: Skip logic for radio questions. Uid of question to skip to.
        isOther:
          type: boolean
          description: Is 'Other' answer with comment field
        id:
          type: string
      required:
        - createdAt
        - uid
        - answerValue
        - id
    RadioAnswerValue:
      type: number
      description: |-
        [

         QUALIFY: 1

         DISQUALIFY: 2

        ]
      enum:
        - 1
        - 2
    ScreenerQuestionSkipLogicType:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/SkipLogicTypeId'
        text:
          $ref: '#/components/schemas/SkipLogicType'
      required:
        - id
        - text
    SkipLogicMultipleAnswer:
      type: object
      properties:
        answer:
          type: string
        logicType:
          $ref: '#/components/schemas/ScreenerQuestionSkipLogicType'
      required:
        - answer
        - logicType
    SkipLogicMultipleAnswersBoolType:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/MultipleAnswersBoolTypeId'
        text:
          $ref: '#/components/schemas/MultipleAnswersBoolType'
      required:
        - id
        - text
    CheckboxAnswerValue:
      type: number
      description: |-
        [

         MAY_SELECT: 1

         MUST_SELECT: 2

         DISQUALIFY: 3

        ]
      enum:
        - 1
        - 2
        - 3
    SkipLogicTypeId:
      type: number
      description: |-
        [

         SELECTED: 1

         NOT_SELECTED: 2

        ]
      enum:
        - 1
        - 2
    SkipLogicType:
      type: string
      enum:
        - Selected
        - Not Selected
    MultipleAnswersBoolTypeId:
      type: number
      description: |-
        [

         AND: 1

         OR: 2

        ]
      enum:
        - 1
        - 2
    MultipleAnswersBoolType:
      type: string
      enum:
        - AND
        - OR

````