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

# REVIEW (POST)

Text analysis of an open-ended survey response, submitted as a JSON body. POST supports a higher number of characters than the GET method.

Send `q_id`, `text`, and `s_text_length` (plus `sn_ud`, `sy_nr`, and `question`) in the request body with `Content-Type: application/json`.

For full parameter definitions, response fields, and the copy/paste JS library, see the [REVIEW guide](https://docs.repdata.com/research-defender/guides/03-review).


## OpenAPI

````yaml POST /api/v4/respondents/review/{publishable_key}
openapi: 3.0.3
info:
  title: Research Defender API
  version: 1.0.0
  description: >-
    Research Defender protects survey data quality through digital
    fingerprinting, duplication detection, and open-end text analysis. This
    reference covers the **SEARCH**, **REVIEW**, and **PREDUPE** products.


    > ACTIVITY and VERIFY are hosted on a separate domain (resdefio.com) and are
    documented separately.


    ## Authentication


    Client-side calls (SEARCH, REVIEW, GETTOKEN) use your **publishable key** in
    the URL path. Server-side lookups (destination_platforms) use your **private
    key**. For enhanced protection, use V3 server-to-server tokens (GETTOKEN) or
    V4 Hashed Validation.


    ## Environments


    Production: `https://prod.rtymgt.com`  

    Staging: `https://staging.rtymgt.com`
servers:
  - url: https://prod.rtymgt.com
    description: Production
  - url: https://staging.rtymgt.com
    description: Staging
security: []
paths:
  /api/v4/respondents/review/{publishable_key}:
    post:
      summary: REVIEW (POST)
      operationId: Review_ReviewPost
      parameters:
        - name: publishable_key
          in: path
          required: true
          description: Your Research Defender publishable key (client-side).
          schema:
            type: string
          example: 9fc32a73-8165-4dd4-ae19-458bed3c8db5
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - q_id
                - text
              properties:
                q_id:
                  type: string
                text:
                  type: string
                s_text_length:
                  type: string
                sn_ud:
                  type: string
                sy_nr:
                  type: string
                question:
                  type: string
            example:
              q_id: '3333'
              text: I am very satisfied because the features meet all my needs.
              s_text_length: '50'
              sn_ud: T_test
              sy_nr: test
              question: How satisfied are you with the current product features?
      responses:
        '200':
          description: Open-end text analysis result.
          content:
            application/json:
              schema:
                type: object
                properties:
                  model:
                    type: object
                    properties:
                      rw_context_risk_score:
                        type: integer
                      rw_context_risk_level:
                        type: string
                      rw_context_description:
                        type: string
                      rw_llm_risk_score:
                        type: integer
                      rw_llm_risk_level:
                        type: string
                      rw_llm_description:
                        type: string
                        description: Whether the response appears LLM-generated.
                  input:
                    type: object
                    properties:
                      sy_nr:
                        type: string
                      q_id:
                        type: string
                      question:
                        type: string
                      sn_ud:
                        type: string
                      text:
                        type: string
                      similarity_text_length:
                        type: string
                  score:
                    type: object
                    properties:
                      composite_score:
                        type: integer
                        description: Primary measure of response quality.
                      similarity_text:
                        type: integer
                        description: 1 if a duplicate open-end is detected.
                      profanity_check:
                        type: integer
                        description: 1 if profanity detected, else 0.
                      engagement_score:
                        type: number
                        description: >-
                          Response length relative to others for the question
                          ID.
                      language_detected:
                        type: string
                      language_detected_score:
                        type: number
                      pasted_response_score:
                        type: number
                      page_view_time:
                        type: number
                      typed_response_time:
                        type: number
                      profanity_check_score:
                        type: number
                      pasted_response:
                        type: integer
                      garbage_words:
                        type: integer
                      garbage_words_score:
                        type: integer
              example:
                model:
                  rw_context_risk_score: 12
                  rw_context_risk_level: low
                  rw_context_description: Yes, contextually correct
                  rw_llm_risk_score: 1
                  rw_llm_risk_level: low
                  rw_llm_description: LLM not detected
                input:
                  sy_nr: test
                  q_id: '3333'
                  question: How satisfied are you with the current product features?
                  sn_ud: T_test
                  text: I am very satisfied because the features meet all my needs.
                  similarity_text_length: '50'
                score:
                  garbage_words_score: 0
                  pasted_response_score: 0
                  typed_response_time: 0
                  page_view_time: 0
                  profanity_check_score: 0
                  composite_score: 0
                  garbage_words: 0
                  language_detected_score: 0.01
                  engagement_score: 1
                  similarity_text: 1
                  profanity_check: 0
                  language_detected: English
                  pasted_response: 0

````