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

# PREDUPE

> Detect when a respondent has already attempted a survey while still in the supplier's environment.

PREDUPE identifies when a respondent has already attempted a survey while still in the supplier's environment, increasing platform conversion and EPC. It runs as a standalone API on `search.resdefio.com`.

## Core Functionality

* The PREDUPE API checks for duplicates across multiple survey numbers (projects) on traffic coming from another client (the destination)
* Currently supports 30 survey numbers per process
* Each destination platform ID, which can be entered multiple times, should have its corresponding survey numbers, and still follows the limit of 30 survey numbers in total
* If the survey numbers in total reach the limit, the entries are processed randomly
* This is a read-only functionality: the API does not update the survey number if it is not initially found

## Integration Options

<CardGroup cols={2}>
  <Card title="Predupe Integration" icon="code" href="/research-defender/guides/predupe/02-integration">Send a POST request from the browser with your `x-api-key`, with a full HTML sample.</Card>
</CardGroup>

## Request Parameters

Send these in a JSON body.

| Parameter | Data Type | Description |
| - | - | - |
| `Destination` | Array of objects | **Required.** The destination platforms to check, each with a `Platform_Id` and its `Survey_Numbers`. |
| `Destination[].Platform_Id` | String | **Required.** The destination key for the client to check the traffic with. Find it with the [DESTINATION\_PLATFORM](/research-defender/endpoints/get-api-v3-respondents-destination_platforms-private_key) lookup. |
| `Destination[].Survey_Numbers` | Array of strings | **Required.** A single survey number or multiple survey numbers. |
| `Panel_Id` | String | Optional. Panelist ID, to check whether it was found on a survey number. Formerly passed as `rt_sr_pd` from SEARCH on `rtymgt.com`. |
| `Hashed_Email` | String | Optional. Hashed email, to check whether it was found on a survey number. Formerly passed as `rt_hd_el` from SEARCH on `rtymgt.com`. |
| `Supplier_Id` | String | Optional. Supplier ID, for reporting purposes only. Formerly passed as `pm_sr_id` from SEARCH on `rtymgt.com`. |
| `Session_Id` | String | Optional. Session ID that identifies the transaction. Formerly passed as `sn_ud` from SEARCH on `rtymgt.com`. |

## Response Parameters

Each entry in `Destination[].Surveys` has:

| Parameter | Data Type | Description |
| - | - | - |
| `Flag` | Integer | `1` if found, `0` if not found. |
| `Duplicate_Initial_UD` | String | The session ID where the previous record was found. |
| `Survey_Number` | String | The processed survey number. |
| `Duplicate_Score` | Integer | Either `0` or `100`. |
| `Duplicate_Potential` | String | Either `low` or `high`. |

The response also has a top-level `Threat_Potential_Score`, from 1 (lowest threat) to 99 (highest threat). It is derived from internal evaluation signals that enhance fraud indicators.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.