> ## 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.

# SEARCH

Digital fingerprinting with bot and click-farm detection. Returns a threat potential score, duplication scoring, and geolocation checks for a respondent at survey entry.

`sn_ud` and `sy_nr` are required; `rt_cy_ce` (country code) is strongly recommended so SEARCH can detect country mismatches. Adding `destination_platform_id` and `destination_platform_survey_number` activates [PREDUPE](https://docs.repdata.com/research-defender/guides/02-predupe).

For parameter definitions, failure-reason codes, the advanced fingerprinting JS library, and redundant-parameter guidance, see the [SEARCH guide](https://docs.repdata.com/research-defender/guides/01-search).


## OpenAPI

````yaml GET /api/v4/respondents/search/{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/search/{publishable_key}:
    get:
      summary: SEARCH
      operationId: Search_Search
      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
        - name: sn_ud
          in: query
          required: true
          description: >-
            Unique identifier for each API call (do not reuse across
            surveys/respondents). GUID recommended.
          schema:
            type: string
          example: '170716409'
        - name: sy_nr
          in: query
          required: true
          description: Unique identifier for the client survey, consistent for each survey.
          schema:
            type: string
          example: '20210575'
        - name: rt_cy_ce
          in: query
          required: false
          description: >-
            Survey country code (ISO 3166-1 alpha-2) so SEARCH can detect
            country mismatches. Recommended.
          schema:
            type: string
          example: us
        - name: rt_sr_pd
          in: query
          required: false
          description: >-
            Persistent respondent identifier for deduplication. Only use if you
            have independently verified respondent identity.
          schema:
            type: string
        - name: pm_sr_id
          in: query
          required: false
          description: Supplier ID (name, abbreviation, or numeric) for backend reporting.
          schema:
            type: string
        - name: sy_gp_nr
          in: query
          required: false
          description: Survey group identifier to deduplicate respondents across surveys.
          schema:
            type: string
        - name: set_window
          in: query
          required: false
          description: >-
            Lockout period in days for a survey. Returns days_flag=1 if the
            respondent attempted the survey within fewer days than this window.
          schema:
            type: integer
          example: 30
        - name: coordinates
          in: query
          required: false
          description: >-
            Set to 1 to include coordinate-related attributes (latitude,
            time_zone, weather_code, state_name).
          schema:
            type: string
          example: '1'
        - name: wd
          in: query
          required: false
          description: >-
            Set to 1 to include the recent date of a survey transaction
            (d_date).
          schema:
            type: string
          example: '1'
        - name: mm
          in: query
          required: false
          description: >-
            Set to 0 to disable MaxMind termed-failure detection
            (failure_reason=18).
          schema:
            type: string
          example: '0'
        - name: csipqs
          in: query
          required: false
          description: Set to 1 to include an IPQS fraud_score result.
          schema:
            type: string
          example: '1'
        - name: df_details
          in: query
          required: false
          description: >-
            Set to 1 to include an additional dataset with respondent
            information.
          schema:
            type: string
          example: '1'
        - name: sip
          in: query
          required: false
          description: Controls whether the IP address is shown on the response.
          schema:
            type: string
        - name: vpt
          in: query
          required: false
          description: Pass 'check' to test whether the request is via VPN (returns 1/0).
          schema:
            type: string
          example: check
        - name: usage_type
          in: query
          required: false
          description: 'Set to 1 to return usage type: consumer, corporate, or hosting.'
          schema:
            type: string
          example: '1'
        - name: validation
          in: query
          required: false
          description: >-
            V4 only: SHA-256 of the request URL signed with your private key
            (Hashed Validation).
          schema:
            type: string
        - name: destination_platform_id
          in: query
          required: false
          description: >-
            PREDUPE: unique identifier for the destination platform/buyer.
            Retrieve via the destination_platforms endpoint.
          schema:
            type: string
        - name: destination_platform_survey_number
          in: query
          required: false
          description: >-
            PREDUPE: the destination platform's internal survey number (for
            Research Desk, use the ProjectUd).
          schema:
            type: string
      responses:
        '200':
          description: Respondent fingerprint and survey duplication results.
          content:
            application/json:
              schema:
                type: object
                properties:
                  Respondent:
                    type: object
                    properties:
                      threat_potential_score:
                        type: string
                        description: 1 (lowest) to 99 (highest threat).
                      country:
                        type: string
                      country_code:
                        type: string
                      respondent_risk:
                        type: integer
                      respondent_ud:
                        type: string
                        format: uuid
                        description: >-
                          Stable identifier tracking a respondent across
                          sessions.
                      time_zone:
                        type: string
                  Surveys:
                    type: array
                    items:
                      type: object
                      properties:
                        flag:
                          type: integer
                          description: >-
                            Deprecated. 1 if previously accessed. Use
                            duplicate_score.
                        duplicate_initial_ud:
                          type: string
                          description: >-
                            sn_ud of the most recent prior session for a
                            duplicate.
                        duplicate_potential:
                          type: string
                          description: Deprecated. Use duplicate_score.
                        duplicate_score:
                          type: string
                          description: 100 if duplicate, 0 if unique.
                        country_mismatch:
                          type: integer
                          description: 1 if the geolocated country differs from rt_cy_ce.
                        failure_reason:
                          type: string
                          description: >-
                            Populated when threat_potential_score >= 31. See the
                            SEARCH guide for codes.
                        days_flag:
                          type: integer
                          description: Populated when set_window is used.
                        days_difference:
                          type: integer
              example:
                Respondent:
                  threat_potential_score: '23'
                  country: United States
                  country_code: US
                  respondent_risk: 0
                  respondent_ud: 4489560a-507f-468a-ae4b-d81ea80fab5d
                  time_zone: America/Chicago
                Surveys:
                  - flag: 1
                    duplicate_initial_ud: 481cd5cf-88f1-44c2-8292-6b779b8a3a8e
                    duplicate_potential: high
                    duplicate_score: '100'
                    country_mismatch: 0
                    failure_reason: '02'
                    days_flag: 1
                    days_difference: 0

````