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

# Quality Check Suggestions

> Generate smart quality-check suggestions from a survey questionnaire structure. Partners can use this to help their users set up API projects in ReDem with recommendations that align with ReDem best practices — reducing manual configuration effort for OES, GQS, CHS, and BAS.

Use the returned question IDs, keywords, and cleaning settings when calling `POST /v3/addRespondent`.

TS is not suggested by this endpoint. DES suggestions are coming soon.

Generate smart quality-check suggestions from a survey questionnaire structure. Partners can use this endpoint to help their users set up API projects in ReDem with recommendations that align with [ReDem best practices](/knowledge-base/best-practices/best-practice-setup) — reducing the manual effort of choosing which questions to score and how to configure them.

**What you get**

* Suggested **OES** questions with keywords and duplicate-check flags
* Suggested **GQS** grids with pattern-check recommendations
* Suggested **CHS** question IDs plus a `surveyDescription`
* Suggested **BAS** tracking targets (derived from suggested OES questions)
* Recommended default **cleaning settings** for API v3

**Notes**

* **TS** is not suggested here; configure it separately in your integration. **DES** suggestions are coming soon.
* Cap suggestion volume with `allInclusive` (default `true`) to match all-inclusive plan limits.


## OpenAPI

````yaml POST /v3/qualityCheckSuggestions
openapi: 3.0.1
info:
  title: API Documentation
  description: API Documentation for Redem 3.0
  version: 1.0.0
  license:
    name: MIT
servers:
  - url: https://api.redem.io
security:
  - apiKeyAuth: []
tags:
  - name: Survey
    description: Survey management
  - name: Respondent
    description: Respondent management
paths:
  /v3/qualityCheckSuggestions:
    post:
      tags:
        - Respondent
      summary: Quality Check Suggestions
      description: >-
        Generate smart quality-check suggestions from a survey questionnaire
        structure. Partners can use this to help their users set up API projects
        in ReDem with recommendations that align with ReDem best practices —
        reducing manual configuration effort for OES, GQS, CHS, and BAS.


        Use the returned question IDs, keywords, and cleaning settings when
        calling `POST /v3/addRespondent`.


        TS is not suggested by this endpoint. DES suggestions are coming soon.
      operationId: qualityCheckSuggestionsV3
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QualityCheckSuggestionsRequest'
            example:
              surveyPlatform: SightX
              allInclusive: true
              surveyStructure:
                - questionId: Q1
                  questionType: OpenEnd
                  question: Why did you choose this product?
                - questionId: Q2
                  questionType: Grid
                  question: Please rate the following brands.
                  items:
                    - Brand A
                    - Brand B
                    - Brand C
                    - Brand D
                    - Brand E
                  answerOptions:
                    - Very poor
                    - Poor
                    - Neutral
                    - Good
                    - Excellent
                  isMultiSelect: false
                  isRandomized: false
                - questionId: Q3
                  questionType: Select
                  question: Which age group are you in?
                  answerOptions:
                    - 18-24
                    - 25-34
                    - 35-44
                    - 45-54
                    - 55+
                  isMultiSelect: false
      responses:
        '200':
          description: Suggestions generated successfully.
          content:
            application/json:
              schema:
                type: object
                required:
                  - success
                  - message
                  - results
                properties:
                  success:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: Quality check suggestions generated
                  results:
                    $ref: '#/components/schemas/QualityCheckSuggestionsResults'
              example:
                success: true
                message: Quality check suggestions generated
                results:
                  OES:
                    - questionId: Q1
                      keywords:
                        - price
                        - quality
                        - brand
                      enableDuplicateCheck: true
                  GQS:
                    - questionId: Q2
                      enablePatternCheck: true
                  CHS:
                    questionIds:
                      - Q3
                      - Q2
                    surveyDescription: >-
                      A survey about brand preference and product choice among
                      shoppers.
                  BAS:
                    - questionId: Q1
                      keystrokes: true
                      mouse: true
                  cleaningSettings:
                    redemScore: 60
                    OES:
                      activate: true
                      score: 40
                      minDataPoints: 2
                    CHS:
                      activate: true
                      score: 30
                    GQS:
                      activate: true
                      score: 20
                      minDataPoints: 2
                    TS:
                      activate: true
                      score: 30
                    BAS:
                      activate: true
                      score: 20
                      minDataPoints: 2
                    DES:
                      activate: true
                      score: 40
        '422':
          description: >-
            When a request fails due to validation errors, the API returns a 422
            Unprocessable Entity status code.
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: Validation Failed
                  errors:
                    type: object
                    additionalProperties:
                      type: string
components:
  schemas:
    QualityCheckSuggestionsRequest:
      type: object
      description: >-
        Request body for generating quality-check suggestions for an API project
        setup.

         **🔒 Authentication:** This endpoint is only accessible via a [`PRIVATE` API key](/api-reference/api-specifications/api-keys#permission-levels).
      required:
        - surveyStructure
      properties:
        surveyPlatform:
          type: string
          description: >-
            Optional survey platform identifier (for example `SightX`,
            `qualtrics`). Stored for logging and support only; it does not
            change suggestions.
          example: SightX
        allInclusive:
          type: boolean
          default: true
          description: >-
            When `true` (default), suggestion counts are capped to all-inclusive
            plan limits (OES 5, GQS 20, CHS 100 question slots). When `false`,
            higher API maxima are used (OES 30, GQS 20, CHS 300 slots).
        surveyStructure:
          type: array
          maxItems: 500
          description: >-
            Questionnaire structure used to suggest quality checks. Maximum
            **500** questions. Each item is a discriminated union on
            `questionType` (`OpenEnd`, `Grid`, or `Select`). Each `questionId`
            must be unique.
          items:
            $ref: '#/components/schemas/SurveyStructureQuestion'
    QualityCheckSuggestionsResults:
      type: object
      required:
        - OES
        - GQS
        - CHS
        - BAS
        - cleaningSettings
      properties:
        OES:
          type: array
          items:
            $ref: '#/components/schemas/SuggestedOes'
          description: Suggested open-ended checks.
        GQS:
          type: array
          items:
            $ref: '#/components/schemas/SuggestedGqs'
          description: Suggested grid checks.
        CHS:
          type: object
          required:
            - questionIds
            - surveyDescription
          description: Suggested Coherence Score configuration.
          properties:
            questionIds:
              type: array
              items:
                type: string
              description: Suggested question IDs to include in the CHS interview.
              example:
                - Q3
                - Q2
            surveyDescription:
              type: string
              description: Suggested survey description for CHS context.
              example: >-
                A survey about brand preference and product choice among
                shoppers.
        BAS:
          type: array
          items:
            $ref: '#/components/schemas/SuggestedBas'
          description: >-
            Suggested behavior tracking targets, derived from suggested OES
            questions.
        cleaningSettings:
          description: >-
            Recommended default cleaning settings for API v3 projects (includes
            DES). Same shape as [`cleaningSettings` on Add
            Respondent](/api-reference/endpoints/v3/addRespondent#body-cleaning-settings).
          allOf:
            - $ref: '#/components/schemas/CleaningSettings_v3'
    SurveyStructureQuestion:
      description: >-
        A question from your survey platform questionnaire. Discriminated by
        `questionType` (`OpenEnd` | `Grid` | `Select`) — each variant has its
        own required and optional fields. `questionId` values must be unique
        across `surveyStructure`.
      discriminator:
        propertyName: questionType
        mapping:
          OpenEnd:
            $ref: '#/components/schemas/SurveyStructureOpenEnd'
          Grid:
            $ref: '#/components/schemas/SurveyStructureGrid'
          Select:
            $ref: '#/components/schemas/SurveyStructureSelect'
      oneOf:
        - $ref: '#/components/schemas/SurveyStructureOpenEnd'
        - $ref: '#/components/schemas/SurveyStructureGrid'
        - $ref: '#/components/schemas/SurveyStructureSelect'
    SuggestedOes:
      type: object
      required:
        - questionId
        - keywords
        - enableDuplicateCheck
      properties:
        questionId:
          type: string
          example: Q1
        keywords:
          type: array
          items:
            type: string
          description: Suggested keywords for the OES datapoint.
          example:
            - price
            - quality
            - brand
        enableDuplicateCheck:
          type: boolean
          description: >-
            Whether duplicate answer / respondent detection should be enabled
            for this OES datapoint.
    SuggestedGqs:
      type: object
      required:
        - questionId
        - enablePatternCheck
      properties:
        questionId:
          type: string
          example: Q2
        enablePatternCheck:
          type: boolean
          description: Whether to enable the GQS pattern check for this suggested grid.
    SuggestedBas:
      type: object
      required:
        - questionId
        - keystrokes
        - mouse
      properties:
        questionId:
          type: string
          description: >-
            Mirrors a suggested OES question ID — BAS tracking is recommended on
            the same open ends.
          example: Q1
        keystrokes:
          type: boolean
          example: true
        mouse:
          type: boolean
          example: true
    CleaningSettings_v3:
      description: >-
        Configuration for data cleaning and review process (v3 with OES v3
        categories)
      type: object
      properties:
        redemScore:
          type: number
          description: Minimum acceptable ReDem score (0-100)
          example: 60
        OES:
          type: object
          properties:
            activate:
              type: boolean
              description: >-
                Indicates whether **OES** should be applied as a cleaning
                parameter.
              example: true
            score:
              type: number
              description: Minimum score threshold for OES checks
              example: 40
            minDataPoints:
              type: number
              description: Minimum number of data points required
              example: 2
            categories:
              type: object
              properties:
                AI_SUSPECT:
                  type: object
                  properties:
                    activate:
                      type: boolean
                    minDataPoints:
                      type: number
                BAD_LANGUAGE:
                  type: object
                  properties:
                    activate:
                      type: boolean
                    minDataPoints:
                      type: number
                OFF_TOPIC:
                  type: object
                  properties:
                    activate:
                      type: boolean
                    minDataPoints:
                      type: number
                NO_ANSWER:
                  type: object
                  properties:
                    activate:
                      type: boolean
                    minDataPoints:
                      type: number
                WRONG_LANGUAGE:
                  type: object
                  properties:
                    activate:
                      type: boolean
                    minDataPoints:
                      type: number
                GIBBERISH:
                  type: object
                  properties:
                    activate:
                      type: boolean
                    minDataPoints:
                      type: number
                DUPLICATE_RESPONDENT:
                  type: object
                  properties:
                    activate:
                      type: boolean
                    minDataPoints:
                      type: number
                DUPLICATE_ANSWER:
                  type: object
                  properties:
                    activate:
                      type: boolean
                    minDataPoints:
                      type: number
        CHS:
          type: object
          properties:
            activate:
              type: boolean
              description: >-
                Indicates whether **CHS** should be applied as a cleaning
                parameter.
              example: true
            score:
              type: number
              description: Minimum score threshold for CHS checks
              example: 30
        GQS:
          type: object
          properties:
            activate:
              type: boolean
              description: >-
                Indicates whether **GQS** should be applied as a cleaning
                parameter.
              example: true
            score:
              type: number
              description: Minimum score threshold for GQS checks
              example: 20
            minDataPoints:
              type: number
              description: Minimum number of data points required
              example: 2
        TS:
          type: object
          properties:
            activate:
              type: boolean
              description: >-
                Indicates whether **TS** should be applied as a cleaning
                parameter.
              example: true
            score:
              type: number
              description: Minimum score threshold for TS checks
              example: 20
        BAS:
          type: object
          properties:
            activate:
              type: boolean
              description: >-
                Indicates whether **BAS** should be applied as a cleaning
                parameter.
              example: true
            score:
              type: number
              description: Minimum score threshold for BAS checks
              example: 20
            categories:
              type: object
              properties:
                UNNATURAL_TYPING:
                  type: object
                  properties:
                    activate:
                      type: boolean
                    minDataPoints:
                      type: number
                COPY_AND_PASTE:
                  type: object
                  properties:
                    activate:
                      type: boolean
                    minDataPoints:
                      type: number
                UNNATURAL_MOVEMENT:
                  type: object
                  properties:
                    activate:
                      type: boolean
                    minDataPoints:
                      type: number
        DES:
          type: object
          description: Cleaning settings for Duplicate Entrance Score (DES).
          properties:
            activate:
              type: boolean
              description: >-
                Indicates whether **DES** should be applied as a cleaning
                parameter.
              example: true
            score:
              type: number
              description: >-
                Minimum score threshold for DES. Respondents below this score
                are excluded when DES cleaning is active. Recommended default:
                `40`.
              example: 40
            categories:
              type: object
              description: >-
                Optional category-based exclusion toggles. Off by default in
                recommended settings.
              properties:
                DUPLICATE_IP:
                  type: object
                  properties:
                    activate:
                      type: boolean
                    minDataPoints:
                      type: number
                DUPLICATE_ENTRANT:
                  type: object
                  properties:
                    activate:
                      type: boolean
                    minDataPoints:
                      type: number
    SurveyStructureOpenEnd:
      type: object
      title: OpenEnd
      description: >-
        Open-ended question. Candidate for **OES** / **BAS** suggestions.


        Only `questionId`, `questionType`, and `question` are accepted for this
        type — do not send `items`, `answerOptions`, `isMultiSelect`, or
        `isRandomized`.
      required:
        - questionId
        - questionType
        - question
      properties:
        questionId:
          type: string
          minLength: 1
          description: Unique question identifier within `surveyStructure`.
          example: Q1
        questionType:
          type: string
          enum:
            - OpenEnd
          description: Must be `OpenEnd`.
        question:
          type: string
          minLength: 1
          description: Full question text.
          example: Why did you choose this product?
    SurveyStructureGrid:
      type: object
      title: Grid
      description: >-
        Grid / matrix question. Candidate for **GQS** / **CHS** suggestions.


        `items` and `answerOptions` are required. `isMultiSelect` and
        `isRandomized` are optional (default `false`).
      required:
        - questionId
        - questionType
        - question
        - items
        - answerOptions
      properties:
        questionId:
          type: string
          minLength: 1
          description: Unique question identifier within `surveyStructure`.
          example: Q2
        questionType:
          type: string
          enum:
            - Grid
          description: Must be `Grid`.
        question:
          type: string
          minLength: 1
          description: Full question text.
          example: Please rate the following brands.
        items:
          type: array
          minItems: 1
          items:
            type: string
          description: Row / item labels shown in the grid. At least one item required.
          example:
            - Brand A
            - Brand B
            - Brand C
            - Brand D
            - Brand E
        answerOptions:
          type: array
          minItems: 1
          items:
            type: string
          description: Column / scale labels. At least one option required.
          example:
            - Very poor
            - Poor
            - Neutral
            - Good
            - Excellent
        isMultiSelect:
          type: boolean
          default: false
          description: >-
            Whether respondents can select multiple answers per row. Defaults to
            `false`.
          example: false
        isRandomized:
          type: boolean
          default: false
          description: >-
            Whether grid items are shown in randomized order to respondents.
            Defaults to `false`.
          example: false
    SurveyStructureSelect:
      type: object
      title: Select
      description: >-
        Single- or multi-select closed question. Candidate for **CHS**
        suggestions.


        `answerOptions` is required. `isMultiSelect` is optional (default
        `false`). Do not send `items` or `isRandomized` for this type.
      required:
        - questionId
        - questionType
        - question
        - answerOptions
      properties:
        questionId:
          type: string
          minLength: 1
          description: Unique question identifier within `surveyStructure`.
          example: Q3
        questionType:
          type: string
          enum:
            - Select
          description: Must be `Select`.
        question:
          type: string
          minLength: 1
          description: Full question text.
          example: Which age group are you in?
        answerOptions:
          type: array
          minItems: 1
          items:
            type: string
          description: Answer choices. At least one option required.
          example:
            - 18-24
            - 25-34
            - 35-44
            - 45-54
            - 55+
        isMultiSelect:
          type: boolean
          default: false
          description: >-
            Whether respondents can select multiple answers. Defaults to
            `false`.
          example: false
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: api-key

````