# Account Setup Source: https://docs.redem.io/account-setup Join ReDem and get started in just a few steps. ## Sign Up and Get Started To start using ReDem, simply create your account. The setup process is quick and straightforward: 1. Go to the [registration page ](https://app.redem.io/auth/register). 2. Enter your organization’s name, your first and last name, email address, and choose a password. 3. Click “Register” to complete your registration. Once registered, we’ll contact you to confirm your preferred subscription. After your plan is activated, you’ll receive an email with an activation link. Click the link to activate your account and start using ReDem. 🎊 ## Want to learn more? [Book a demo](https://meetings.hubspot.com/j-redem/get-to-know-redem) with our management team to see how ReDem can support your workflow. We’re glad to have you on board. Our team is happy to support. # API Keys Source: https://docs.redem.io/api-reference/api-specifications/api-keys Learn how to manage and use API keys within ReDem. API keys let you call the ReDem API from your own systems. When you create a key, you choose a **permission level** that defines which endpoints it may call. ## Permission levels You create keys with one of two permission levels: | Level | Where to use it | What it can call | | ----------- | ------------------------------------------------------------------------------------------------------------- | --------------------------- | | **Private** | Backend servers, secure automation, and integrations where the key never reaches a browser or end-user device | **All** ReDem API endpoints | | **Public** | Browser, mobile app, or any client-side integration where the key **must** be present on the device | **`addRespondent` only** | Use a **public** key when your integration cannot keep the key on a server—for example, a script or app that runs directly in the respondent’s browser or on their phone and submits data via `addRespondent`. Use a **private** key whenever the request originates from infrastructure you control (your backend, server-side survey tools, ETL jobs, etc.). Private keys unlock the full API (surveys, configuration, retrieval, and `addRespondent`). **Private API keys must never** be embedded in frontend code, shipped in mobile apps, checked into repositories, or shared with third parties. If a private key is exposed—whether in logs, client bundles, or elsewhere—**delete that key immediately** in ReDem and **create a new private key**. Treat a leaked private key as compromised. Public keys are designed to be visible on the client; they still authenticate your company and are subject to rate limits, but they **cannot** call endpoints other than `addRespondent`. Any other route requires a private key. In the [API reference](/api-reference/intro/introduction), each operation’s request body schema includes an **Authentication** note stating whether a **private** or **public** key is allowed. ## Create API Key You can create an API key by following these steps: To create an API Key, you'll need a ReDem account. Don’t have an account yet?
Get started by [setting up your account](/account-setup).

Once you are logged in to [ReDem Application](https://app.redem.io/), navigate to the API Keys section in your profile.

Click on the "Create API Key" button to generate a new key. Give your API key a clear, descriptive name so you can identify its purpose later, and choose **Private (server-side)** or **Public (browser / client)** according to [permission levels](#permission-levels) above. Once you’ve created an API key, copy it and store it somewhere safe. You will not be able to see it again after you leave the screen.

Send the key in the api-key header on requests your integration is allowed to make (see your key’s permission level).

```http theme={null} api-key: your_api_key_xxx ```

For submitting respondents from the client, use a public key with the addRespondent endpoint. For all other API calls, use a private key from your backend.

**Best practices for API key management:** * Use separate keys for testing and live surveys * Prefer a **private** key for server-side integrations; use a **public** key only when the key must live on the client. * If any key is compromised or exposed inappropriately, delete it immediately and generate a new one. ## Rate limits All API requests authenticated with `api-key` are subject to per-key rate limiting. * `addRespondent`: * Standard API keys: 1200 requests per minute * Premium API keys (configured per client): up to 1600 requests per minute * Other endpoints: * 1200 requests per minute If you exceed the limit, you will receive a `429` response: ```json theme={null} { "error": "rate_limit_exceeded", "message": "This API key exceeded 1200 requests per minute.", "statusCode": 429 } ``` # Rate Limits Source: https://docs.redem.io/api-reference/api-specifications/rate-limits Learn about ReDem’s API rate limits. ## Rate Limits & Performance Considerations Rate limits are enforced **per API key** to protect platform stability and ensure fair usage across clients. ### Endpoint-specific limits #### `addRespondent` * **Standard API keys**: **600 requests / minute** * **Premium API keys**: **1200 requests / minute** #### All other endpoints (excluding `addRespondent`) * **1200 requests / minute** per API key ⭕ **Please note:** If you exceed the configured limits, requests may be temporarily rejected (HTTP `429`). **🔦 Tip:**
For clients with specific performance requirements or higher scalability needs, contact `info@redem.io` to explore the **Dedicated Tier**. # Response Structure Source: https://docs.redem.io/api-reference/api-specifications/response-structure Understand the standardized response format used across all ReDem endpoints. The ReDem API delivers clear, consistent, and well-structured responses to ensure seamless integration and efficient processing. Each response follows a standardized format aligned with **RESTful principles** and **OpenAPI standards**. This structure enhances transparency, simplifies parsing and error handling, and supports fast debugging—ensuring reliability and predictability in every interaction. ### ✅ Success Response The success response of the ReDem API indicates that the request has been processed successfully. This response is well-structured and provides crucial information about the request's status. The success response follows a standardized format to ensure consistency, predictability, and ease of use for developers. Success responses are structured as follows: * `success`: A variable indicating whether the operation was successful. * `message`: A variable that human-readable message providing additional context or confirmation of the requested action. * `results`: This object serves as a container to hold the results for the requested data, encapsulating all relevant information and outputs in a structured format. ```json Sample success response for "Add Respondent" theme={null} { "success": true, "message": "Respondent Evaluated successfully", "results": { "status": "JOB_COMPLETED", "respondentQuality": { "isExcluded": true, "reasonsForExclusion": [ "Open Ended Score Threshold", "Coherence Score Threshold" ], "redemScore": 85, // ... rest of the response object ... } } } ``` ### ⚠️ Error Response The error response of the ReDem API is returned when a request fails due to various reasons. This response provides clear, actionable information to help developers identify and resolve the cause of the error. The response format is consistent, ensuring easy parsing and fast debugging. Error responses are structured as follows: * `success`: A variable indicating whether the operation was successful. * `message`: A variable that human-readable message providing additional context or confirmation of the requested action. * `errors`: This object serves as a container to hold the errors for the requested data. ```json Sample error response for "Add Respondent" theme={null} { "success": false, "message": "Validation Error", "errors": { "0": "\"surveyName\" is required", "1": "\"dataPoints[0].dataPointId\" is required" } } ``` # Add Respondent Source: https://docs.redem.io/api-reference/endpoints/v3/addRespondent POST /v3/addRespondent API endpoint for adding a new respondent with quality check data (v3 with OES v3 categories) # Credit Calculation Source: https://docs.redem.io/api-reference/endpoints/v3/creditCalculation POST /v3/creditCalculation API endpoint for calculating the required number of credits for a respondent. If you need to estimate the number of credits required to add a respondent, you can use this endpoint. This endpoint is optional and serves informational purposes only. It provides an estimate of the credits required based on the selected quality scores. # Delete Respondents Source: https://docs.redem.io/api-reference/endpoints/v3/deleteRespondents POST /v3/deleteRespondents Delete one or more respondents from a survey and clean up related data. Delete one or more respondents from a survey. Also removes related metadata, interaction data, and flattened records. If no respondents remain for the survey, the survey is deleted automatically. # Delete Surveys Source: https://docs.redem.io/api-reference/endpoints/v3/deleteSurveys POST /v3/deleteSurveys Delete one or more surveys and all associated data that you own. Delete one or more surveys that you own. This removes all associated data: respondents, respondent metadata, interaction data, flattened collections, quality settings, and the survey itself. # Get All Respondents Source: https://docs.redem.io/api-reference/endpoints/v3/getAllRespondents POST /v3/getAllRespondents Retrieve all respondents for a survey. # Get Respondent Source: https://docs.redem.io/api-reference/endpoints/v3/getRespondent POST /v3/getRespondent Retrieve the quality check results and status for a specific respondent. # Quality Check Suggestions Source: https://docs.redem.io/api-reference/endpoints/v3/qualityCheckSuggestions POST /v3/qualityCheckSuggestions 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. # Recalculate Respondents Source: https://docs.redem.io/api-reference/endpoints/v3/recalculateRespondents POST /v3/recalculateRespondents This endpoint allows you to recalculate specific quality checks for a list of respondents within a given survey. It is useful for re-running checks with updated parameters or if they were skipped previously. Note that this operation requires the survey to be created with API version v3 and after the feature release date (2025-12-02). This endpoint allows you to recalculate specific quality checks for a list of respondents within a survey. It is useful when you need to re-evaluate respondents with updated check configurations (e.g., enabling OES or Duplicate Detection) or if previous checks were skipped. **Prerequisites:** * The survey must have been created with API version `v3`. * The feature must be enabled and the survey created after the feature release date (2025-12-02). * You must provide valid `respondentIds` belonging to the specified `surveyName`. * The number of `respondentIds` per request is limited to 100. # Restart Survey Source: https://docs.redem.io/api-reference/endpoints/v3/restartSurvey POST /v3/restartSurvey Restart a previously stopped survey to allow new respondent additions. A **restarted survey resumes accepting new respondents**, allowing further additions after being previously stopped. # Stop Survey Source: https://docs.redem.io/api-reference/endpoints/v3/stopSurvey POST /v3/stopSurvey Stop a survey to prevent further respondent additions. A **stopped survey no longer accepts new respondents**, preventing any further additions. # Update Respondents Excluded Status Source: https://docs.redem.io/api-reference/endpoints/v3/updateRespondentsExcludedStatus POST /v3/updateRespondentsExcludedStatus Updates the exclusion status of respondents within a specific survey. This endpoint allows you to manually update the exclusion status of one or more respondents within a survey. It acts as a toggle — if a respondent is currently excluded, they will be included after the update, and vice versa. The endpoint also automatically updates the `reasonsForExclusion` field to reflect the respondent’s new status. # Asynchronous Response Source: https://docs.redem.io/api-reference/intro/asynchronous-response Learn how to integrate ReDem with your survey tools To integrate with ReDem, you must have a ReDem account.
Don’t have an account yet? Get started by [setting up your account](/account-setup).
Contact us at [support@redem.io](mailto:support@redem.io) to request an API key. Ensure your data is formatted correctly according to the guidelines before sending it via the API. Below is a sample request object to help you structure your data properly.

For an asynchronous response approach, the `synchronousResponse` field **must always be set to `false`**. This allows you to continue engaging with your respondents without waiting for a response from ReDem.

```javascript Example request body theme={null} { "respondentId": "RESP497770", "surveyName": "Global Vacation Insights 2024", "dataPoints": [ { "qualityCheck": "OES", "dataPointId": "Q1", "question": "Where did you spend your last vacation?", "answer": "We were at Lake Garda in Italy", "keywords": ["Beach", "Mountains", "Lake", "Museums", "Europe", "Asia", "Destination"], "activateDuplicateDetection": true, "allowedLanguages": ["en"] }, { "qualityCheck": "TS", "dataPointId": "durationQ1", "duration": 42670 }, // ... other data points ... ], "activateCleaning": true, "cleaningSettings": { "redemScore": 60, "OES": { "score": 60, "minDataPoints":2, "categories": { "BAD_LANGUAGE": {"activate": true, "minDataPoints":2}, "GIBBERISH": {"activate": true, "minDataPoints":2}, "OFF_TOPIC": {"activate": true, "minDataPoints":2}, "WRONG_LANGUAGE": {"activate": true, "minDataPoints":2}, "AI_SUSPECT": {"activate": true, "minDataPoints":2}, // ... other categories ... } }, "CHS": {"score": 50}, "GQS": {"score": 40, "minDataPoints":2}, "TS": {"score": 30} }, "synchronousResponse": false, } ``` For a full example and detailed guidance on using this request object, visit the [Add Respondent](/api-reference/endpoints/v3/addRespondent) endpoint. It includes explanations of all fields and their usage.

At the end of the survey, just before the respondent reaches the ‘complete’ state, submit an API request to ReDem including the respondent’s information and your API key.

```javascript Example request (JavaScript) theme={null} const options = { method: 'POST', headers: {Authorization: 'Bearer ', 'Content-Type': 'application/json'}, body: '{"respondentId":"RESP497770","projectName":"Global Vacation Insights 2024","dataPoints":[{"qualityCheck":"OES","dataPointId":"Q1","question":"Where did you spend your last vacation?","answer":"We were at Lake Garda in Italy","keywords":["Beach","Mountains","Lake","Museums","Europe","Asia","Destination"],"activateDuplicateDetection":true,"allowedLanguages":["en","de","it"]},{"qualityCheck":"TS","dataPointId":"durationQ1","duration":42670},{"qualityCheck":"GQS","dataPointId":"Q2","gridAnswersPattern":[7,8,9,1,3,5,2,5,9,6]},{"qualityCheck":"OES","dataPointId":"Q3","question":"What was the most memorable part of your last vacation?","answer":"Italian cuisine, especially pizza and fine wine.","keywords":["Cuisine","Food","Art","Adventure","History","Landscape","Culture"],"activateDuplicateDetection":true,"allowedLanguages":["en","de","it"]},{"qualityCheck":"TS","dataPointId":"durationQ3","duration":69720},{"qualityCheck":"CHS","dataPointId":"CHS_Question","interviewData":[{"question":"What mode of transport did you use?","answer":"Car"},{"question":"How many days did you stay?","answer":5},{"question":"Did you travel with family?","answer":"yes"},{"question":"What was your approximate total budget for the trip (in EUR)?","answer":1500},{"question":"What type of accommodation did you stay in?","answer":"Hotel"}]},{"qualityCheck":"GQS","dataPointId":"Q4","gridAnswersPattern":[2,1,4,3,5,2,3,1,1,1]},{"qualityCheck":"TS","dataPointId":"totalDuration","duration":256843}],"cleaningSettings":{"standardSettings":false,"CustomSettings":{"redemScore":60,"OES":{"score":30,"minimumAnswers":2,"categories":{"genericAnswers":{"exclude":true,"minDataPoints":2},"noInformation":{"exclude":true,"minDataPoints":2},"badLanguage":{"exclude":true,"minDataPoints":2},"nonsense":{"exclude":true,"minDataPoints":1},"duplicateAnswer":{"exclude":true,"minDataPoints":1},"duplicateRespondent":{"exclude":true,"minDataPoints":1},"wrongTopic":{"exclude":true,"minDataPoints":1},"wrongLanguage":{"exclude":true,"minDataPoints":1},"copyPastAnswer":{"exclude":true,"minDataPoints":1},"fakeAnswer":{"exclude":true,"minDataPoints":1}}},"CHS":{"score":20},"GQS":{"score":10,"minimumItems":15},"TS":{"score":30}}},"synchronousResponse":false}' }; fetch('https://api.redem.io/respondent/add', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err)); ```

Retrieve the response from ReDem to ensure your request was successfully submitted and is still in progress.

```javascript Example response (JavaScript) theme={null} { "success": true, "message": "Respondent Queued for Evaluation", "results": { "status": "QUEUED" } } ``` For a full example and detailed guidance on using this response object, visit the [Add Respondent](api-reference/endpoints/v3/addRespondent) endpoint. It includes explanations of all fields and their usage.

Since an asynchronous response approach is recommended, you can synchronize respondent evaluations from ReDem at any time.

To streamline the process, you can set up an automated job that performs the synchronization on a regular basis, ensuring your data remains up-to-date without requiring manual intervention.

To do this, you can use the [Get Respondent](/api-reference/endpoints/v3/getRespondent) endpoint or the [Get All Respondents](/api-reference/endpoints/v3/getAllRespondents) endpoint.

# Introduction Source: https://docs.redem.io/api-reference/intro/introduction Fundamental concepts of ReDem's API. **Welcome to the ReDem API documentation! 👋🏼** This documentation provides a step-by-step approach to seamlessly integrating the ReDem API into your workflows and applications. The backbone of our platform is the ReDem API. With our API you have direct access to every feature ReDem offers from real-time data access to smooth integration with your existing applications. Best of all, since the ReDem Application runs entirely on this API, everything you can do in the app, you can also do through the API. **No limitations, just endless possibilities!** ## Integration Use Cases The ReDem API supports two main integration use cases, allowing you to choose the approach that best fits your workflow: Receive an instant evaluation of the respondent's quality and seamlessly integrate this data into your workflow. Process respondent quality evaluations in the background and retrieve results later using the Get Respondent/s endpoints. ## API Versioning ReDem's API uses versioned endpoints to ensure backward compatibility while introducing new features. Currently, three API versions are available: * **v1**: Legacy endpoints (deprecated) * **v2**: Introduced consistent CHS question IDs * **v3**: Enhanced OES with improved categories and effort scale (recommended) **Important:** You cannot upgrade the API version for a survey that is currently running. Each survey is permanently tied to the API version it was created with. To use a newer API version, you must create a new survey with the updated endpoints. For detailed migration instructions, see the [API Version Migration Guide](/api-reference/others/migration-guide). ## Base URL ReDem's API is built on REST principles following the [OpenAPI](https://www.openapis.org/) standard as much as possible. To ensure data security, it operates exclusively over HTTPS, encrypting all interactions. Unencrypted HTTP connections are not supported, safeguarding your data by default. The Base URL for all API endpoints is: ```plainApiKey_xxx theme={null} https://api.redem.io/ ``` Versioned endpoints use the format: `https://api.redem.io/v3/addRespondent`. ReDem's API is currently in public beta and is subject to change. However, we will do our best to keep breaking changes to a minimum. Need help or have questions? Contact our support team at [support@redem.io](mailto:support@redem.io). we're here to help you make the most of ReDem! # Synchronous Response Source: https://docs.redem.io/api-reference/intro/synchronous-response Learn how to integrate ReDem and instantly receive all quality information To integrate with ReDem, you must have a ReDem account.
Don’t have an account yet? Get started by [setting up your account](/account-setup).
Contact us at [support@redem.io](mailto:support@redem.io) to request an API key. Ensure your data is formatted correctly according to the guidelines before sending it via the API. Below is a sample request object to help you structure your data properly.

For a synchronous response approach, the `synchronousResponse` field **must always be set to `true`**. This ensures you receive responses from ReDem in real time.

Please format the request data as shown below:

```javascript Example request body theme={null} { "respondentId": "RESP497770", "surveyName": "Global Vacation Insights 2024", "dataPoints": [ { "qualityCheck": "OES", "dataPointId": "Q1", "question": "Where did you spend your last vacation?", "answer": "We were at Lake Garda in Italy", "keywords": ["Beach", "Mountains", "Lake", "Museums", "Europe", "Asia", "Destination"], "activateDuplicateDetection": true, "allowedLanguages": ["en"] }, { "qualityCheck": "TS", "dataPointId": "durationQ1", "duration": 42670 }, // ... other data points ... ], "activateCleaning": true, "cleaningSettings": { "redemScore": 60, "OES": { "score": 40, "minDataPoints":2, "categories": { "BAD_LANGUAGE": {"activate": true, "minDataPoints":2}, "GIBBERISH": {"activate": true, "minDataPoints":2}, "OFF_TOPIC": {"activate": true, "minDataPoints":2}, "WRONG_LANGUAGE": {"activate": true, "minDataPoints":2}, "AI_SUSPECT": {"activate": true, "minDataPoints":2}, // ... other categories ... } }, "CHS": {"score": 30}, "GQS": {"score": 20, "minDataPoints":2}, "TS": {"score": 30} }, "synchronousResponse": true, } ``` For a full example and detailed guidance on using this request object, visit the [Add Respondent](/api-reference/endpoints/v3/addRespondent) endpoint. It includes explanations of all fields and their usage.

At the end of the survey, just before the respondent reaches the ‘complete’ state, submit an API request to ReDem including the respondent’s information and your API key.

```javascript Example request (JavaScript) theme={null} const options = { method: 'POST', headers: {Authorization: 'Bearer ', 'Content-Type': 'application/json'}, body: '{"respondentId":"RESP497770","projectName":"Global Vacation Insights 2024","dataPoints":[{"qualityCheck":"OES","dataPointId":"Q1","question":"Where did you spend your last vacation?","answer":"We were at Lake Garda in Italy","keywords":["Beach","Mountains","Lake","Museums","Europe","Asia","Destination"],"activateDuplicateDetection":true,"allowedLanguages":["en","de","it"]},{"qualityCheck":"TS","dataPointId":"durationQ1","duration":42670},{"qualityCheck":"GQS","dataPointId":"Q2","gridAnswersPattern":[7,8,9,1,3,5,2,5,9,6]},{"qualityCheck":"OES","dataPointId":"Q3","question":"What was the most memorable part of your last vacation?","answer":"Italian cuisine, especially pizza and fine wine.","keywords":["Cuisine","Food","Art","Adventure","History","Landscape","Culture"],"activateDuplicateDetection":true,"allowedLanguages":["en","de","it"]},{"qualityCheck":"TS","dataPointId":"durationQ3","duration":69720},{"qualityCheck":"CHS","dataPointId":"CHS_Question","interviewData":[{"question":"What mode of transport did you use?","answer":"Car"},{"question":"How many days did you stay?","answer":5},{"question":"Did you travel with family?","answer":"yes"},{"question":"What was your approximate total budget for the trip (in EUR)?","answer":1500},{"question":"What type of accommodation did you stay in?","answer":"Hotel"}]},{"qualityCheck":"GQS","dataPointId":"Q4","gridAnswersPattern":[2,1,4,3,5,2,3,1,1,1]},{"qualityCheck":"TS","dataPointId":"totalDuration","duration":256843}],"cleaningSettings":{"standardSettings":false,"CustomSettings":{"redemScore":60,"OES":{"score":30,"minimumAnswers":2,"categories":{"genericAnswers":{"exclude":true,"minDataPoints":2},"noInformation":{"exclude":true,"minDataPoints":2},"badLanguage":{"exclude":true,"minDataPoints":2},"nonsense":{"exclude":true,"minDataPoints":1},"duplicateAnswer":{"exclude":true,"minDataPoints":1},"duplicateRespondent":{"exclude":true,"minDataPoints":1},"wrongTopic":{"exclude":true,"minDataPoints":1},"wrongLanguage":{"exclude":true,"minDataPoints":1},"copyPastAnswer":{"exclude":true,"minDataPoints":1},"fakeAnswer":{"exclude":true,"minDataPoints":1}}},"CHS":{"score":20},"GQS":{"score":10,"minimumItems":15},"TS":{"score":30}}},"synchronousResponse":true}' }; fetch('https://api.redem.io/respondent/add', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err)); ```

Retrieve the response from ReDem to trigger the next step in your workflow. If cleaning is enabled, low-quality responses will be excluded before reaching the complete state, while high-quality responses will be retained as complete.

```javascript Example response (JavaScript) theme={null} { "success": true, "message": "Respondent Evaluated successfully", "results": { "status": "JOB_COMPLETED", "respondentQuality": { "isExcluded": true, "reasonsForExclusion": [ "Open Ended Score Threshold", "Coherence Score Threshold" ], "redemScore": 85, "qualityScoreSummary": [ { "qualityCheck": "OES", "score": 80 }, { "qualityCheck": "CHS", "score": 75, "reason": "The user shows several inconsistencies and contradictions, such as different ..." }, { "qualityCheck": "GQS", "score": 85 }, { "qualityCheck": "TS", "score": 70 } ], "dataPointsSummary": [ { "qualityCheck": "OES", "dataPointId": "Q1", "score": 85, "category": "Valid Answer" }, { "qualityCheck": "TS", "dataPointId": "durationQ1", "score": 95 }, { "qualityCheck": "GQS", "dataPointId": "Q2", "score": 90 }, { "qualityCheck": "OES", "dataPointId": "Q3", "score": 75, "category": "Valid Answer" }, { "qualityCheck": "TS", "dataPointId": "durationQ3", "score": 50 }, { "qualityCheck": "CHS", "dataPointId": "CHS_Question", "score": 75, "reason": "The user shows several inconsistencies and contradictions, such as different ..." }, { "qualityCheck": "GQS", "dataPointId": "Q4", "score": 80 }, { "qualityCheck": "TS", "dataPointId": "totalDuration", "score": 65 } ] } } } ``` For a full example and detailed guidance on using this response object, visit the [Add Respondent](/api-reference/endpoints/v3/addRespondent) endpoint. It includes explanations of all fields and their usage.
# Behavior Tracking Source: https://docs.redem.io/api-reference/others/behavior-tracking Learn how to track respondent behavior ReDem only uses the last 300 `MOUSE_MOVEMENT` and last 300 `MOUSE_CLICK` events per BAS data point. Cap client-side tracking at the same limits — storing more only inflates browser session data without improving scoring.

Copy the simple **JavaScript tracker code** (attached) into your survey platform’s frontend codebase or UI. This ensures that, whenever respondent complete surveys, it tracks input behavior data for open-ended questions directly from their individual browsers.

We are using this script to persist this input\_behavior in the browser until you are ready to call the API

```javascript theme={null} ```

When you are making the API call to ReDem use this structure from the session storage and make sure to connect `QUESTION_ID` during the integration process

# API Version Migration Guide Source: https://docs.redem.io/api-reference/others/migration-guide Step-by-step guide to migrate between ReDem API versions. This guide will help you migrate your integration from one API version to another. Before starting, it's important to understand a key limitation: **You cannot upgrade the API version for a survey that is currently running.** Each survey is permanently tied to the API version it was created with. To use a newer API version, you must create a new survey with the updated endpoints. ## Migration Overview The ReDem API uses versioned endpoints to ensure backward compatibility while introducing new features: * **v1**: Legacy endpoints * **v2**: Introduced consistent CHS question IDs * **v3**: Enhanced OES with improved categories and effort scale ## Migration from v1 to v2 ### Key Changes 1. **Endpoint paths**: All endpoints now use the `/v2` prefix * `POST /addRespondent` → `POST /v2/addRespondent` * `POST /getRespondent` → `POST /v2/getRespondent` * `POST /getAllRespondents` → `POST /v2/getAllRespondents` * `POST /stopSurvey` → `POST /v2/stopSurvey` * `POST /restartSurvey` → `POST /v2/restartSurvey` * `POST /creditCalculation` → `POST /v2/creditCalculation` 2. **CHS questionId requirement**: Each CHS interview entry must include a `questionId` field ### Step-by-Step Migration #### Step 1: Update Endpoint URLs Update your base URL construction to include the `/v2` prefix: ```javascript theme={null} // Before (v1) const baseUrl = 'https://api.redem.io/addRespondent'; // After (v2) const baseUrl = 'https://api.redem.io/v2/addRespondent'; ``` #### Step 2: Add questionId to CHS Data Points For each CHS data point, add the `questionId` field to the `interviewData` array: ```javascript theme={null} // Before (v1) { "qualityCheck": "CHS", "dataPointId": "CHS_Q1", "interviewData": [ { "question": "What type of accommodation did you stay in?", "answer": "Hotel" } ] } // After (v2) { "qualityCheck": "CHS", "dataPointId": "CHS_Q1", "interviewData": [ { "questionId": "Q1", // Required in v2 "question": "What type of accommodation did you stay in?", "answer": "Hotel" } ] } ``` The `questionId` should be consistent across all respondents for the same question. Use meaningful identifiers like "Q1", "Q2", or custom IDs that match your survey structure. #### Step 3: Important: Create New Survey **Important:** You cannot update a running survey to a new API version. You must create a new survey using v2 endpoints. ```javascript theme={null} // Use v2 endpoint to create new survey POST https://api.redem.io/v2/addRespondent ``` #### Step 4: Test Your Integration 1. Test adding a single respondent with the new v2 endpoint 2. Verify CHS results include consistent question IDs 3. Confirm all other endpoints work correctly with v2 paths ## Migration from v2 to v3 ### Key Changes 1. **Endpoint paths**: All endpoints now use the `/v3` prefix * `POST /v2/addRespondent` → `POST /v3/addRespondent` * `POST /v2/getRespondent` → `POST /v3/getRespondent` * `POST /v2/getAllRespondents` → `POST /v3/getAllRespondents` * `POST /v2/stopSurvey` → `POST /v3/stopSurvey` * `POST /v2/restartSurvey` → `POST /v3/restartSurvey` * `POST /v2/creditCalculation` → `POST /v3/creditCalculation` * `POST /v2/deleteRespondents` → `POST /v3/deleteRespondents` * `POST /v2/deleteSurveys` → `POST /v3/deleteSurveys` * `POST /v2/updateRespondentsExcludedStatus` → `POST /v3/updateRespondentsExcludedStatus` 2. **OES categories**: Updated category names in cleaning settings * `NO_INFORMATION`, `GENERIC_ANSWER` → `NO_ANSWER` * `FAKE_ANSWER` → `AI_SUSPECT` * New categories: `OFF_TOPIC`, `GIBBERISH` 3. **New optional fields**: * `surveyDescription` for CHS data points * `respondentAttributes` for additional respondent metadata ### Step-by-Step Migration #### Step 1: Update Endpoint URLs Update your base URL construction to include the `/v3` prefix: ```javascript theme={null} // Before (v2) const baseUrl = 'https://api.redem.io/v2/addRespondent'; // After (v3) const baseUrl = 'https://api.redem.io/v3/addRespondent'; ``` #### Step 2: Update OES Categories in Cleaning Settings Update the OES category names in your cleaning settings request: ```javascript theme={null} // Before (v2) { "cleaningSettings": { "redemScore": 60, "OES": { "activate": true, "score": 60, "minDataPoints": 2, "categories": { "GENERIC_ANSWER": {"activate": true, "minDataPoints": 2}, "NO_INFORMATION": {"activate": true, "minDataPoints": 3}, "FAKE_ANSWER": {"activate": true, "minDataPoints": 2} } } } } // After (v3) { "cleaningSettings": { "redemScore": 60, "OES": { "activate": true, "score": 40, "minDataPoints": 2, "categories": { "AI_SUSPECT": {"activate": true, "minDataPoints": 2}, "BAD_LANGUAGE": {"activate": true, "minDataPoints": 2}, "OFF_TOPIC": {"activate": true, "minDataPoints": 2}, "NO_ANSWER": {"activate": false, "minDataPoints": 2}, "WRONG_LANGUAGE": {"activate": true, "minDataPoints": 2}, "GIBBERISH": {"activate": true, "minDataPoints": 2}, "DUPLICATE_ANSWER": {"activate": false, "minDataPoints": 1}, "DUPLICATE_RESPONDENT": {"activate": false, "minDataPoints": 1} } } } } ``` These cleaning settings are examples and can be customized for each survey. Review and adjust the activation status and minimum data points thresholds according to your specific survey requirements and quality standards. #### Step 3: Optional: Add Survey Description for CHS You can now provide a `surveyDescription` when submitting CHS data points to improve accuracy: ```javascript theme={null} { "qualityCheck": "CHS", "dataPointId": "CHS_Q1", "surveyDescription": "Survey about vacation experiences in 2024", // Optional "interviewData": [ { "questionId": "Q1", "question": "What type of accommodation did you stay in?", "answer": "Hotel" } ] } ``` #### Step 4: Optional: Add Respondent Attributes You can add metadata about respondents: ```javascript theme={null} { "surveyName": "Vacation Survey 2024", "respondentId": "RESP001", "respondentAttributes": { // Optional "panel": "PanelA", "market": "US", "source": "email" }, "dataPoints": [ // ... data points ] } ``` #### Step 5: Important: Create New Survey **Important:** You cannot update a running survey to a new API version. You must create a new survey using v3 endpoints. #### Step 6: Test Your Integration 1. Test adding respondents with the new v3 endpoint 2. Verify responses use the new category names 3. Confirm all category names in cleaning settings are updated correctly ## Migration from v1 to v3 If you're migrating directly from v1 to v3, follow both migration paths: 1. First, apply all changes from v1 → v2 (especially adding `questionId` to CHS) 2. Then, apply all changes from v2 → v3 (OES categories, etc.) ## Best Practices 1. **Test with a sample survey** before migrating production surveys. Do not test with production surveys. 2. **Important:** You cannot update a running survey to a new API version. Create new surveys with the updated endpoints. 3. **Check responses in your tests** to ensure category mappings work correctly ## Need Help? If you encounter issues during migration or have questions: * Review the [API Change Log](/changelogs/api-change-log) for detailed version history * Check the [endpoint documentation](/api-reference/endpoints/v3/addRespondent) for v3 specifics * Contact support at [support@redem.io](mailto:support@redem.io) # Structuring Surveys Responses for ReDem Compatibility Source: https://docs.redem.io/api-reference/others/structuring-survey-responses A complete guide on how to transform survey responses into ReDem-compatible data points This guide explains how to format your survey data into structured data points suitable for submission to the addRespondent endpoint of the ReDem API. ## Preparing survey responses for CHS (Coherence Score) For each CHS data point, all question–answer pairs must be included as separate objects within the interviewData array. Each object should contain a * questionId - A unique identifier for the question. * question - The full text of the question, When applicable, include all possible answer options that respondents can choose from to provide full context for the AI. * answer - The respondent's selected answer(s) or written response. ### Recommended formats for different question types For the most accurate assessments, the AI performs best when it has full visibility into the context of the questionnaire. Therefore, it is recommended to include as much information as possible from the questionnaire. * **Single Choice Questions**
Includes dropdowns, radio buttons, yes/no, and Likert scale questions. * **Question Field**: Provide the question text. If applicable, include all key answer options to give context to the selected response. For Likert scale questions, also include the scale labels in the Question field to ensure clarity. * **Answer Field**: Include the respondent’s selected choice as a string or number. ```javascript Example interviewData object for a single-select question theme={null} // Dropdown question { "questionId": "Q1", "question": "What is your favorite type of cuisine? Select one option that describes your preference. - Italian, French, Chinese, Indian, Japanese, Mexican, Thai, Greek", "answer": "Italian" } // Radio button question { "questionId": "Q1", "question": "In a typical week, how frequently do you eat red meat (e.g., beef, pork)?", "answer": "3–5 times per week" } // Yes/No question { "questionId": "Q1", "question": "Do you like Fish or seafood? - Yes, No", "answer": "No" } // Likert scale question - with text answer { "questionId": "Q1", "question": "How much do you enjoy eating street food? - Not at all, A little, Somewhat, Quite a bit, Very much", "answer": "Not at all" } // Likert scale question - with number answer { "questionId": "Q1", "question": "To what extent do you agree with the following statement: Do you prefer home-cooked meals over eating out? - 1 = Strongly disagree, 2 = Disagree, 3 = Neutral, 4 = Agree, 5 = Strongly agree", "answer": 4 } // NPS question { "questionId": "Q1", "question": "How likely are you to recommend our food delivery service to a friend or colleague - 1 = Not at all, 10 = Very much", "answer": 8 } ``` * **Multiple Choice Questions**
* **Question Field**: Include the full question text and all possible answer options, separated by commas. * **Answer Field**: List all selected options, separated by commas. ```javascript Example interviewData object for a checkbox question theme={null} { "questionId": "Q1", "question": "Which of the following foods do you eat regularly? (You may select more than one.) - Chicken, Cheese, Bacon or sausage, Eggs, Fish or seafood, Plant-based meat substitutes (e.g., tofu, tempeh), Milk or dairy products, Fruits, Leafy vegetables (e.g., spinach, kale)", "answer": "Cheese, Eggs" } ``` * **Open-ended question**
These collect free-text input from respondents. * **Question Field**: Include only the question text. * **Answer Field**: Record the answer provided by the respondent. ```javascript Example interviewData object for an open-ended question theme={null} { "questionId": "Q1", "question": "Can you describe your typical eating habits during the week?", "answer": "I usually eat home-cooked meals with lots of vegetables and lean meats. I occasionally eat out on weekends, mostly opting for Asian or Mediterranean dishes. I try to avoid sugary snacks and drink plenty of water throughout the day." } ``` * **Grid (matrix) questions**
Grid/matrix questions contain a stem plus multiple row items that share the same answer scale. Transform the grid/matrix stem, row labels and answer scale into a structured object with the following format: * Emit one object per row item so that each cell becomes its own data point * **Question Field**: Concatenate the stem and the row label, separated by a hyphen (-), to form the full question text. Additionally, include all answer scale labels, separated by commas. * **Answer Field**: Keep the selected scale label as the answer. ```javascript Example interviewData object for a grid/matrix question theme={null} { "questionId": "Q1", "question": "Please indicate how often you usually eat the following types of food. Think about a normal week. - Red meat (e.g., beef, pork) - Not at all, 1–2 times per week, 3–5 times per week, Several times per day, Daily", "answer": "3–5 times per week" }, { "questionId": "Q2", "question": "Please indicate how often you usually eat the following types of food. Think about a normal week. - Fish or seafood - Not at all, 1–2 times per week, 3–5 times per week, Several times per day, Daily", "answer": "Several times per day" }, { "questionId": "Q3", "question": "Please indicate how often you usually eat the following types of food. Think about a normal week. - Poultry (e.g., chicken, turkey) - Not at all, 1–2 times per week, 3–5 times per week, Several times per day, Daily", "answer": "1–2 times per week" }, { "questionId": "Q4", "question": "Please indicate how often you usually eat the following types of food. Think about a normal week. - Dairy products (e.g., milk, cheese, yogurt) - Not at all, 1–2 times per week, 3–5 times per week, Several times per day, Daily", "answer": "Daily" }, { "questionId": "Q5", "question": "Please indicate how often you usually eat the following types of food. Think about a normal week. - Eggs - Not at all, 1–2 times per week, 3–5 times per week, Several times per day, Daily", "answer": "3–5 times per week" }, { "questionId": "Q6", "question": "Please indicate how often you usually eat the following types of food. Think about a normal week. - Legumes (e.g., beans, lentils, chickpeas) - Not at all, 1–2 times per week, 3–5 times per week, Several times per day, Daily", "answer": "1–2 times per week" }, { "questionId": "Q7", "question": "Please indicate how often you usually eat the following types of food. Think about a normal week. - Grains (e.g., rice, pasta, bread) - Not at all, 1–2 times per week, 3–5 times per week, Several times per day, Daily", "answer": "Daily" } ``` ### Minimum required formats for different question types While we recommend the settings from the previous chapter to provide maximum context and achieve precise results, you can also use a simplified version, which does work but may not achieve the same level of accuracy. * **Single Choice Questions**
Includes dropdowns, radio buttons, yes/no, and Likert scale questions. * **Question Field**: Provide the question text. * **Answer Field**: Include the respondent’s selected choice as a string or number. ```javascript Example interviewData object for a single-select question theme={null} // Dropdown question { "questionId": "Q1", "question": "What is your favorite type of cuisine? Select one option that describes your preference.", "answer": "Italian" } // Radio button question { "questionId": "Q1", "question": "In a typical week, how frequently do you eat red meat (e.g., beef, pork)?", "answer": "3–5 times per week" } // Yes/No question { "questionId": "Q1", "question": "Do you like Fish or seafood?", "answer": "No" } // Likert scale question { "questionId": "Q1", "question": "How much do you enjoy eating street food?", "answer": "Not at all" } ``` * **Multiple Choice Questions**
* **Question Field**: Include the full question text. * **Answer Field**: List all selected options, separated by commas. ```javascript Example interviewData object for a checkbox question theme={null} { "questionId": "Q1", "question": "Which of the following foods do you eat regularly? (You may select more than one.) - Chicken, Cheese, Bacon or sausage, Eggs, Fish or seafood, Plant-based meat substitutes (e.g., tofu, tempeh), Milk or dairy products, Fruits, Leafy vegetables (e.g., spinach, kale)", "answer": "Cheese, Eggs" } ``` * **Open-ended question**
These collect free-text input from respondents. * **Question Field**: Include only the question text. * **Answer Field**: Record the answer provided by the respondent. ```javascript Example interviewData object for an open-ended question theme={null} { "questionId": "Q1", "question": "Can you describe your typical eating habits during the week?", "answer": "I usually eat home-cooked meals with lots of vegetables and lean meats. I occasionally eat out on weekends, mostly opting for Asian or Mediterranean dishes. I try to avoid sugary snacks and drink plenty of water throughout the day." } ``` * **Grid (matrix) questions**
Grid/matrix questions contain a stem plus multiple row items that share the same answer scale. Transform the grid/matrix stem, row labels and answer scale into a structured object with the following format: * Emit one object per row item so that each cell becomes its own data point * **Question Field**: Concatenate the stem and the row label, separated by a hyphen (-), to form the full question text. * **Answer Field**: Keep the selected scale label as the answer. ```javascript Example interviewData object for a grid/matrix question theme={null} { "questionId": "Q1", "question": "Please indicate how often you usually eat the following types of food. Think about a normal week. - Red meat (e.g., beef, pork)", "answer": "3–5 times per week" }, { "questionId": "Q2", "question": "Please indicate how often you usually eat the following types of food. Think about a normal week. - Fish or seafood", "answer": "Several times per day" }, { "questionId": "Q3", "question": "Please indicate how often you usually eat the following types of food. Think about a normal week. - Poultry (e.g., chicken, turkey)", "answer": "1–2 times per week" }, { "questionId": "Q4", "question": "Please indicate how often you usually eat the following types of food. Think about a normal week. - Dairy products (e.g., milk, cheese, yogurt)", "answer": "Daily" }, { "questionId": "Q5", "question": "Please indicate how often you usually eat the following types of food. Think about a normal week. - Eggs", "answer": "3–5 times per week" }, { "questionId": "Q6", "question": "Please indicate how often you usually eat the following types of food. Think about a normal week. - Legumes (e.g., beans, lentils, chickpeas)", "answer": "1–2 times per week" }, { "questionId": "Q7", "question": "Please indicate how often you usually eat the following types of food. Think about a normal week. - Grains (e.g., rice, pasta, bread)", "answer": "Daily" } ``` # API Change Log Source: https://docs.redem.io/changelogs/api-change-log Stay updated on the latest changes and improvements in the API. ## Duplicate Entrance Score * Coming soon on POST /v3/addRespondent — Send a `DES` datapoint (v3 only) with optional `entranceTime`, optional `ip`, and up to 10 demographics (at least 4 for a valid score). At most one DES datapoint per respondent. * DES detects likely duplicate entrants by comparing demographics and IP against recent peers in the same survey. See the [v3 addRespondent](/api-reference/endpoints/v3/addRespondent) endpoint documentation and the [Duplicate Entrance Score](/knowledge-base/quality-checks/duplicate-entrance-score) guide. ## Quality Check Suggestions * POST /v3/qualityCheckSuggestions — New endpoint for partners: send a survey questionnaire structure and receive smart quality-check suggestions (OES, GQS, CHS, BAS) plus recommended cleaning settings. * Suggestions align with ReDem best practices so end users spend less effort configuring an API project. * `allInclusive` (default `true`) caps suggestion counts to all-inclusive plan limits. See the [Quality Check Suggestions](/api-reference/endpoints/v3/qualityCheckSuggestions) endpoint documentation. ## OES Answer Translation: Skip Languages * POST /v3/addRespondent — On an OES datapoint, set `skipTranslationLanguages` to a list of ISO 639-1 language codes that should **not** be translated when `shouldTranslate` is `true`. * Example: a German agency can send `skipTranslationLanguages: ["de"]` so German answers are left as-is while other non-English answers are still translated. * English answers are never translated, with or without this field. Use the same two-letter codes as `allowedLanguages`. * `ignoreAllowedLanguageError` also applies to `skipTranslationLanguages`: invalid codes are dropped instead of rejecting the request. See the [v3 addRespondent](/api-reference/endpoints/v3/addRespondent) endpoint documentation for field details. ## OES Answer Translation * POST /v3/addRespondent — Set `shouldTranslate: true` on an OES datapoint to translate non-valid, non-English answers to English during quality evaluation. This makes it easy to review and verify our results for any language. * Valid answers and answers already detected as English are not translated. * On success, the OES entry in `dataPointsSummary` includes `translatedAnswer`. If translation was requested but failed, `translationFailed` is `true` and no translation credits are charged. * Translation is available on API **v3** only. See the [v3 addRespondent](/api-reference/endpoints/v3/addRespondent) endpoint documentation and the [ReDem Credits docs](/knowledge-base/miscellaneous/redem-credits) for credit rules. ## Ignore Validation Errors You can now opt in to skip specific validation errors instead of rejecting the request. All flags default to `false`. * POST /v1/addRespondent , POST /v2/addRespondent , POST /v3/addRespondent * **OES** `ignoreEmptyAnswer` — When `true`, this OES datapoint is removed if `answer` is empty (including whitespace-only). If every OES datapoint is removed, OES is skipped. * **OES** `ignoreAllowedLanguageError` — When `true`, invalid `allowedLanguages` codes (wrong format or non-ISO 639-1) are dropped instead of rejecting the request. Valid codes are kept. If every code is invalid, `allowedLanguages` is removed. Wrong-language scoring is unchanged for remaining valid codes. * **CHS** `ignoreEmptyAnswers` — When `true`, questions with no answer (empty or whitespace-only) are removed from `interviewData`. If no questions remain, the CHS datapoint is dropped and CHS is skipped. See the [v3 addRespondent](/api-reference/endpoints/v3/addRespondent) endpoint documentation for field details. ## BAS: Mouse Movement and Click Tracking * POST /v3/addRespondent — BAS `interactionData` now accepts two additional interaction types alongside keystrokes and copy-paste: * `MOUSE_MOVEMENT` — pointer position as `{ x, y }` in pixels * `MOUSE_CLICK` — click position on the target element as `{ width, height, offsetX, offsetY }` * ReDem scores **typing** and **mouse** behaviour separately and uses the **lower** score for the BAS data point. If both scores are equal, the typing category is used. * Two new BAS categories can be returned: `NATURAL_MOVEMENT` and `UNNATURAL_MOVEMENT`. * ReDem only uses the **last 300** `MOUSE_MOVEMENT` and **last 300** `MOUSE_CLICK` events per data point. Cap client-side tracking at the same limits. See the [Behavior Tracking guide](/api-reference/others/behavior-tracking) for a sample tracker and the [Behavioral Analytics Score docs](/knowledge-base/quality-checks/behavior-analysis-score#mouse-movement-and-clicks) for how mouse behaviour is evaluated. ## New Attribute: retentionDays * POST /v3/addRespondent - You can now send an optional `retentionDays` in the request body. It is the number of days to retain the respondent's data. After the retention period is over the respondent will be deleted from ReDem. The data will be no longer available in our platform. The minimum value is 30 days. See the [v3 addRespondent](/api-reference/endpoints/v3/addRespondent#body-retention-days) endpoint documentation for the request body. ## New Attribute: referenceSurveyId * POST /v3/addRespondent - You can now send an optional `referenceSurveyId` in the request body. It is your **external survey identifier** (for example, the id or key of the project in your survey tool). When ReDem **creates** a new survey for the given `surveyName`, that value is stored on the survey for correlation with your own systems. If a survey with that `surveyName` already exists, the stored `referenceSurveyId` is **not** changed by later requests. See the [v3 addRespondent](/api-reference/endpoints/v3/addRespondent) endpoint documentation for the request body. ## GQS Grid Length Update You can now send grids with a minimum length of 5 items. Previously the lower limit was 7 items in a grid. The upper limit remains at 50 items. The pattern check is not available to grids with length 5 or 6. You can send the `patternCheckEnabled` flag for these grids, but it will be silently ignored. Reason being that 5 or 6 items is not sufficient to detect patterns beyond (partial-)straightlining confidently. ## CHS Limit Update * POST /v3/addRespondent - The maximum number of CHS question/answer pairs has been reduced from `1000` to `300`. Recommendation for integrators: * Send only the most relevant `interviewData` entries (up to 300) in a deterministic order. * If your source survey has more than 300 CHS pairs, trim before sending to keep payloads predictable. ## New Attribute: surveyPlatform * POST /v3/addRespondent - You can now provide `surveyPlatform` as an optional top-level field in the request body. This value is stored with the respondent and can be used to identify survey-platform-origin traffic in downstream workflows. Recommended integration approach: * Send a stable platform identifier (for example, `SightX`, `qualtrics`, `keyingress`) for every respondent created through a survey tool integration. * Keep naming consistent across environments to avoid fragmented reporting (for example, use `qualtrics` instead of mixing `Qualtrics`, `QUALTRICS`, and `qtrx`). * If an internal connector is used, send a deterministic connector name (for example, `my-company-ingress`) instead of dynamic values. See the [v3 addRespondent endpoint documentation](/api-reference/endpoints/v3/addRespondent) for request details. ## New Attribute: Survey Description for CHS * POST /v3/addRespondent - You can now provide a `surveyDescription` field when submitting CHS (Coherence Score) data points. This optional field provides additional context about the survey's purpose and intent, helping improve the quality and accuracy of the Coherence Score evaluation. The survey description is especially useful when your survey asks about current events that occurred after the training cutoff date of the large language models, such as recently opened facilities, current political events, product launches, or recent market changes. See the [Coherence Score documentation](/knowledge-base/quality-checks/coherence-score#survey-description) for more details and examples. ## New Attribute: Respondent Attributes * POST /v3/addRespondent - You can now add additional attributes to the respondent, such as the panel source or the market of a respondent. These values will be available in the ReDem App and in the result export and can be used for further analysis of your data. See the [endpoint docs](/api-reference/endpoints/v3/addRespondent#body-respondent-attributes) for further details. ## New Endpoint: Recalculate Respondents * POST /v3/recalculateRespondents - Recalculate specific quality checks for a list of respondents within a survey. See the [endpoint docs](/api-reference/endpoints/v3/recalculateRespondents) for request/response details. ## API v3 Released: OES v3 with Enhanced Category Detection and Effort Scale ### 🔥 OES v3 Now Available in ReDem API v3 We're excited to announce the release of ReDem API v3, featuring a major upgrade to the OES (Open-Ended Scoring) quality check system. This release introduces improved category definitions, enhanced scoring accuracy, and a new effort scale metric. **All version 3 endpoints are now accessible via the /v3 path (e.g., /v3/addRespondent), ensuring a clean separation from previous versions.** ### 🚀 What's new in OES v3? OES v3 introduces refined category definitions with clearer boundaries to reduce false positives and false negatives. The new categories are: * **VALID\_ANSWER**: Responses that adequately address the question * **NO\_ANSWER**: Responses that provide no meaningful information * **BAD\_LANGUAGE**: Responses containing inappropriate or offensive language * **GIBBERISH**: Responses that are nonsensical or incoherent * **OFF\_TOPIC**: Responses that do not address the question asked * **AI\_SUSPECT**: Responses that appear to be AI-generated * **WRONG\_LANGUAGE**: Responses in an unexpected language * **DUPLICATE\_ANSWER**: Responses that duplicate previous answers * **DUPLICATE\_RESPONDENT**: Responses that duplicate other respondents' answers ### Key improvements in OES v3: * **Clearer category boundaries**: Refined detection logic reduces false positives and false negatives across all categories, providing more accurate quality assessments. * **Enhanced scoring system**: OES v3 introduces an effort scale (LOW, MEDIUM, HIGH) that factors into the final quality score. For VALID\_ANSWER and NO\_ANSWER categories, the effort level directly influences the score calculation, providing more nuanced quality metrics. ### 🔄 Backward Compatibility: How do v1 and v2 work? Version 1 and version 2 endpoints remain available but use the legacy OES v2 classification system, which has less precise category boundaries and does not include the effort scale metric. ### ⛔ Deprecation Notice * **API v1**: Will be deprecated within 7 days of this notice. Please migrate to v2 or v3 immediately. * **API v2**: Will be deprecated on January 15th, 2026. We strongly encourage all teams and integrators to migrate to v3 endpoints before that date to take advantage of the improved OES accuracy and scoring system. We recommend upgrading to API v3 at your earliest convenience to benefit from the enhanced OES v3 quality checks and improved scoring accuracy. **Important:** You cannot upgrade the API version for a survey that is currently running. Each survey is permanently tied to the API version it was created with. To use a newer API version, you must create a new survey with the updated endpoints. See the [Migration Guide](/api-reference/others/migration-guide) for step-by-step instructions. ## New Endpoint: Update Respondents Excluded Status * POST /v2/updateRespondentsExcludedStatus - Update the exclusion status of one or more respondents within a specific survey. See the [endpoint docs](/api-reference/endpoints/v2/updateRespondentsExcludedStatus) for request/response details. ## New Endpoints: Delete Surveys and Delete Respondents * POST /v2/deleteRespondents - Delete one or more respondents from a survey and clean up related data. * POST /v2/deleteSurveys - Delete one or more surveys and all associated data. See the endpoint docs for request/response details. ## API v2 Released: Consistent CHS Question IDs Supported ### 🔥 New Versioning Layer Introduced Across the ReDem API We’re excited to introduce ReDem API v2 — a structured versioning layer that enables long-term enhancements while preserving backward compatibility with current integrations. **All version 2 endpoints are now accessible via the /v2 path (e.g., /v2/addRespondent), ensuring a clean separation from legacy endpoints.** ### 🚀 What's new in v2? In version 2, each CHS interview entry must explicitly include the associated questionId. ```javascript theme={null} { "questionId": "Q1" "question": "What type of accommodation did you stay in?", "answer": "Hotel", } ``` By making questionId a required field in CHS interviewData, you now have: * Consistent identifiers across all respondents * Clear mapping between survey questions and CHS results ### 🔄 Backward Compatibility: How does v1 work? In version 1, since questionId is not part of the schema: * The system auto-generates questionIds like Q1, Q2, etc. uniquely for each respondent, making cross-respondent comparisons unreliable. This means Q1 for one respondent may refer to a completely different question than Q1 for another. ### ⛔ Deprecation Notice: API v1 Version 1 of the ReDem API will be **deprecated starting 16th September 2025**. We strongly encourage all teams and integrators to migrate to v2 endpoints before that date to avoid any disruption. **Important:** You cannot upgrade the API version for a survey that is currently running. Each survey is permanently tied to the API version it was created with. To use a newer API version, you must create a new survey with the updated endpoints. See the [Migration Guide](/api-reference/others/migration-guide) for step-by-step instructions. ## API endpoint updates The POST /addRespondent endpoint has been updated to rename parameters in the cleaning settings, changing from **camelCase to UPPERCASE\_UNDERSCORE** formatting. The following is an example of the new cleaning settings object: ```javascript theme={null} "redemScore": 60, "OES": { "activate": true, "score": 60, "minDataPoints":2, "categories": { "GENERIC_ANSWER": {"activate": true, "minDataPoints":2}, "NO_INFORMATION": {"activate": true, "minDataPoints":3}, // ... other categories ... } }, "CHS": {"activate": true,"score": 50}, "GQS": {"activate": true,"score": 40, "minDataPoints":2}, "TS": {"activate": true,"score": 20}, "BAS": { "activate": true, "score": 60, "minDataPoints":2, "categories": { "UNNATURAL_TYPING": {"activate": true, "minDataPoints":2}, "COPY_AND_PASTE": {"activate": true, "minDataPoints":2}, } } ``` ## API endpoint updates The following API endpoint changes have been implemented to improve consistency and standardization: POST /respondent/add POST /addRespondent
* The `interactionData` field within `dataPoints` → `qualityCheck: BAS` has been modified to support additional interaction types. Now, it has been expanded to include both `KEYSTROKE` and `COPY_AND_PASTE` interactions, enhancing tracking capabilities. * Enhanced the **request body cleaning settings** by allowing **activate/deactivate** options for each quality check and enhanced **cleaning settings** by introducing **Behavioral Analytics Score (BAS)** along with its categories. * Renamed the **Fake Answer** category in **Open-Ended Score (OES)** to **AI-Generated Answer**. * We have **enhanced** the response structure by adding a field to retrieve **Behavioral Analytics Score (BAS)** results. GET /respondent/getRespondent POST /getRespondent
* Previously with `GET` request we pass the `surveyName` and `respondentId` as a path parameters. Now we pass it in the request body. GET /respondent/getAllRespondents POST /getAllRespondents
* Previously with `GET` request we pass the `surveyName` as a path parameter. Now we pass it in the request body. GET /survey/stop POST /stopSurvey
* Previously with `GET` request we pass the `surveyName` as a path parameter. Now we pass it in the request body. GET /respondent/estimation POST /creditCalculation
* Introduced a new variable, **`BASDataPoints`**, to specify the number of BAS data points required for credit calculation when evaluating a respondent. * Rename the variable **`CHSInterviews`** to **`CHSAnswers`** in the request body. * We have introduced a new response structure for the `POST /creditCalculation` endpoint, improving clarity by renaming several fields for better self-explanatory representation. ## Enhanced the quality checks by introducing Behavioral Analytics Score (BAS) We have enhanced the quality checks by introducing **Behavioral Analytics Score (BAS)** to evaluate the respondent's behavior and provide a score and categories based on the behavior. * Removed the **Copy-Paste** category from **Open-Ended Score (OES)** and incorporated it under **Behavioral Analytics Score (BAS)**. ## Streamlined the API response in error cases When a request fails due to invalid input or other errors, the all API returns a **400 Bad Request** status code. The response includes a descriptive `message` explaining the issue and an `error` object containing additional details to aid in diagnosing and resolving the problem.
## **ReDem 3.0 API - Initial Release** This initial release of the **ReDem API** empowers you to seamlessly integrate ReDem into your workflows and applications. As the backbone of our platform, the API provides direct access to all ReDem features, from real-time data insights to smooth integration with existing systems. Since the **ReDem Application** is entirely powered by this API, anything you can do in the app, you can also achieve programmatically—without limitations, unlocking endless possibilities! ### 🎉 Key Endpoints * POST /respondent/add - Add a respondent to a survey. * GET /respondent/getRespondent - Get a respondent's details. * GET /respondent/getAllRespondents - Get all respondents for a survey. * GET /survey/stop - Stop a survey. * GET /respondent/estimation - Get a respondent's estimation. # Application Change Log Source: https://docs.redem.io/changelogs/application-change-log Stay updated on the latest changes and improvements in the ReDem application. ## Duplicate Entrance Score * The **Duplicate Entrance Score (DES)** is coming soon. It detects likely duplicate survey entrants using demographics and IP. * **API only at first** — send a DES datapoint on `POST /v3/addRespondent`. File import support will follow. * See the [Duplicate Entrance Score guide](/knowledge-base/quality-checks/duplicate-entrance-score) and [best-practice set-up](/knowledge-base/best-practices/best-practice-setup#duplicate-entrance-score) for details. * Also see the [API Change Log](/changelogs/api-change-log) for request fields. ## Performance * Even the largest surveys in the platform now open essentially instantly, instead of showing a loading spinner. ## Data Cleaning * Fixed a bug where activating cleaning for an OES category with the threshold set to **0** excluded every respondent for that category. * Fixed a bug where respondents exactly at the exclusion threshold were excluded. For example, with a Timescore threshold of **30**, a score of **30** is now kept; only scores **below** 30 are excluded. ## File Import * Fixed edge cases in Quick Import for Decipher surveys that should not have affected anyone. ## Decipher Integration Agent * Fixed a bug that could break a live survey when a page had multiple number inputs. ## Open-Ended Score: Answer Translation * You can now enable translation on open-ended questions. ReDem translates non-valid, non-English answers to English so you can easily review and verify our results for any language. * Translated answers appear in the respondents table, respondent details, and exports. * Via the API, set `shouldTranslate: true` on OES datapoints in `POST /v3/addRespondent`. * See the [ReDem Credits docs](/knowledge-base/miscellaneous/redem-credits) for translation credit rules and the [API Change Log](/changelogs/api-change-log) for request and response details. ## BAS * Fixed a bug where the Behavioral Analytics Score could occasionally show **101**. The score is now always capped at **100**. ## File Import * Intellisurvey exports are now supported in Quick Import, just like Decipher and Confirmit. ReDem automatically detects the format and prepares the file. * When a file has duplicate values in the header row, the import now shows exactly which values are duplicated. ## Respondent Insights * AI explanations are now visible in the respondents table (**Explanation** column), the respondent details, and in downloads — alongside the structured **Reasons for Exclusion**. * Explanations are removed after excluding or including a respondent, applying cleaning settings, recalculating scores, or changing quality checks. You can re-generate them afterward. * See the [Respondent Insights guide](/features/respondent-insights) for details. ## Open-Ended Score * Short answers are no longer marked as `AI_SUSPECT`, even when most of a respondent's other answers are. There is not enough evidence to classify very short answers as AI-written. * See the [Open-Ended Score docs](/knowledge-base/quality-checks/open-ended-score#5-ai-suspect-probable-non-human-generated-response) for details. ## Duplicate Respondent Check * Previously, a new respondent was only checked against the last 500 respondents in the survey. Many duplicates arrive days apart, so that window missed them. The check is now smarter and catches duplicates regardless of when they entered the survey. ## Small Fixes * We fixed a handful of minor usability quirks and bugs — the kind most of you would never notice, but that make things feel a little smoother once they're gone. ## Exclusion Reason Breakdown * The exclusion reason breakdown is now available at the company level on the **Surveys** page. Click the **info icon** next to **Excluded Respondents** in the metrics row to open it. * **Employees** see a breakdown across all surveys they uploaded. **Admins** see a breakdown for the whole company. * Per-survey breakdowns on the survey **results** page are unchanged. See the [Data Cleaning guide](/knowledge-base/features/cleaning-and-review#view-exclusion-reason-breakdown) for details. ## File Import * Post-processing after the last respondent is scored now finishes much faster. Results are available almost immediately instead of keeping the progress bar visible for up to three minutes. ## Confirmit Import * Confirmit exports do not include a length-of-interview column, only `interview_start` and `interview_end`. During Quick Import, ReDem now adds an artifical **`Length of Interview`** column so you can use the Time Score without creating that column yourself. ## Timescore * The Timescore carries less weight in the ReDem Score when a survey has many time-score data points but few other quality checks. This prevents the Timescore from dominating the overall score in those cases. ## Performance * The app loads noticeably faster again, especially when viewing 100 or 1,000 respondents at once. ## BAS * Voice dictation and swipe typing are now classified as natural typing with a BAS score of 60. * See the [Behavioral Analytics Score docs](/knowledge-base/quality-checks/behavior-analysis-score) for details. ## Exclusion Reason Breakdown * You can now view a breakdown of exclusion reasons at the survey level, showing how many excluded respondents were removed for each cleaning criterion. * See the [Data Cleaning guide](/knowledge-base/features/cleaning-and-review#view-exclusion-reason-breakdown) for how to find this information. ## Change Quality Check Settings * Quality check settings can now be changed for API projects after the initial upload, including **BAS**. Use the same **Quality Checks** workflow as for manual imports. * See the [File Import guide](/features/file-import#change-quality-check-settings) for details. ## Performance * Opening larger surveys feels much faster now, especially when loading many respondents at once (for example, 1,000 respondents). ## File Import * AYTM, Confirmit, and Quantilope exports can now be uploaded directly in Quick Import. We automatically detect the format and prepare the file. No separate conversion step is required. ## Respondent Insights * **Explain All** is now available to every customer. Generate AI summaries in bulk for respondents that are excluded or have a low Coherence Score. * See the [Respondent Insights guide](/features/respondent-insights) for how individual and bulk insights work. ## Open-Ended Score * AI Suspect detection is more accurate. ReDem now evaluates all of a respondent's open-ended answers together instead of checking each answer in isolation. Individual answers are still categorized separately, but the combined context helps catch AI-generated text that short answers alone might miss. * See the [Open-Ended Score docs](/knowledge-base/quality-checks/open-ended-score#5-ai-suspect-probable-non-human-generated-response) for details. ## Teams * You can now create teams in ReDem to control which employees can access which surveys. * See the [Teams guide](/features/teams) for details. ## File Import * The import process now detects Confirmit files more accurately. * For very large surveys, columns with a low response rate are removed automatically during upload. The separate [Column Cleaner](https://app.redem.io/integrationAssistance/clean-excel) utility is no longer required. * You can delete multiple suggested datapoints in the upload process at once. ## Respondent Details * When opening the respondent details you can now see how much weight each quality check has on the respondent's overall ReDem Score. This is only available for surveys created via new uploads or API projects after this release. ## Answer Distribution Analysis * When opening the answer distribution chart in the Data Visualization tab, ReDem automatically highlights the top 5 questions where the difference in results pre and post cleaning is the biggest. ## Change Quality Check Settings * After the initial upload you can now change the quality check settings for any manually imported survey. ReDem only re-runs checks that changed and only deducts credits for those changes. * See the [File Import guide](/features/file-import#change-quality-check-settings) for details. ## Import Assistant * The import assistant can now process files with any amount of respondents. Larger files may take longer, but AI suggestions are much more reliable, especially for the CHS. ## CHS * The CHS survey description is now visible in the Respondent Detail View. * CHS scoring is more reliable at distinguishing between a score of 20 and a score of 50. Previously the same respondent could receive either score inconsistently; results are now more stable. ## Contract Expiration * You receive an email when your contract is about to expire and when it did expire. ## Decipher Integration Agent * The Decipher Integration Agent can now handle multiple text-boxes for the same question for the OES and BAS. ## Answer Distribution Analysis * In the overview of the Data Visualization tab you can select any question from the interview and see the respondents answer distribution pre and post cleaning. * This is currently restricted to surveys that use the CHS. * Some type of questions, like open ended questions, are currently not supported. ## Respondent Retention period * Via the API you can now set a retention period for the respondents. This means that respondents will be deleted after the retention period has passed. This is only available for API v3 surveys. Check out the [API docs](/api-reference/endpoints/v3/addRespondent#body-retention-days) for more information. ## BAS * We tuned the BAS to reduce the number of false positives for respondents that had a long chain of uninterrupted keystrokes. ## CHS * The CHS will not flag false inconsistencies regarding the respondents age range and birth year anymore. * For quick imports the CHS is using an additional verification step to reduce any false positives. ## Minor improvements * The credit overview now shows the remaining and total credits from the current contract period by default. * The resopndent explanations are much more precise and on point. * The filters for the respondent table are visible by default. * The sorting of the columns in the respondent table has been fixed. Previously the order was e.g. Q1, Q10, Q2. Now it's Q1, Q2, Q10. * Copy & Paste of keywords for the OES is much smoother. * Fixed a bug where larger surveys in the quick import did not finish the post-processing step. ## Respondent Table * When sorting by any scores the unavailable scores, e.g. because some didn't respondent to an open ended question, will always be sorted to the end of the table. This means you get to always see the relevant results on the first page of the table. * The table and the respondent details were sometimes not showing the incoherrent questions for the CHS. This issue is now resolved. ## Duplicate Answer Check * The duplicate answer check had a high false positive rate on very short answers. We will only check for duplicate answers if at minimum 10 characters are provided. For CJK languages the threshold is 3 characters. ## Company Settings * You can configure defaults for respondent attributes and missing values. These defaults are applied automatically for every import. * You can enforce a survey description during import for the CHS. ## BAS * The total BAS score has been slightly adapted so that it takes the number of keystrokes into account. More keystrokes carry a higher weight. * In the BAS visualization you can show the chart without extreme outliers for easier review. ## Quick Import * Decipher files are detected automatically. The **Is Decipher Export** checkbox has been removed. ## Quick Import * There's a utility for the quick import that removes all columns from the survey export with a response rate lower than 10%. This improves the results you get from the CHS. You can find it here: [Column Cleaner](https://app.redem.io/integrationAssistance/clean-excel). * In step 2 of the quick import you can now enter your own survey ID instead of just using a survey name. That allows for easier traceability between your survey platfom and ReDem. ## Respondent Table * When you open the detail view of a respondent, you can let the AI generate a summary of the respondent's quality to understand the respondents score at a glance. * You can now recalculate up to 500 respondents at once and see a progress bar while the recalculation is running. ## CHS * The CHS has been improved to reduce the false positive rate for any type of survey and any type of question. ## Timescore * We fixed a bug where the Timescore wasn't calculated for surveys with more than 100 TS datapoints. ## Decipher Integration Agent * We updated the Decipher Integration Agent such that it generates higher quality code and works out of the box for more surveys. It's still required to test the integration of your Survey with ReDem before going Live. The integration Agent has no guarantee that the integration will work out of the box. ## Bugfixes * Fixed a bug where the respondent search yielded no results when on a page other than the first one. * Some surveys couldn't load 1000 respondents at once. This issue is now resolved. ## API Keys * There are now two different types of API keys: Private and Public. * Private API keys are used for server-side integrations and can be used to access all endpoints. * Public API keys are used for client-side integrations and can only be used to access the `addRespondent` endpoint. * You can create and manage API keys in the API keys section of your profile as you're already used to. * You can find more information about API keys in the [API Keys documentation](/api-reference/api-specifications/api-keys). For API integrations in Decipher surveys you must use a Public API key. Otherwise you expose yourself to the risk of unauthorized access to your survey data. ## GQS Grid Length * You can now send grids with a minimum length of 5 items. Previously the lower limit was 7 items in a grid. The upper limit remains at 50 items. * The pattern check is not available to grids with length 5 or 6. The pattern check is only available for grids with length 7 or more. Reason being that 5 or 6 items is not sufficient to detect patterns beyond (partial-)straightlining confidently. ## BAS accuracy * The BAS accuracy has been improved to detect more unnatural typing behaviors while simultaneously reducing false positives. ## Supported file formats * We now support AYTM and Confirmit files for the quick import. The files must be pre-processed in our Integrations section and then imported into ReDem. * [Confirmit Integration Assistance](https://app.redem.io/integrationAssistance/confirmit) * [AYTM Integration Assistance](https://app.redem.io/integrationAssistance/aytm) ## Respondents * You can now search for multiple respondents at once by typing their IDs into the search bar, or copy pasting a list of IDs into it. * By clicking on a respondent in the table, this will open a detailed view of the respondent. In their you can easily find e.g. the incoherrent questions and answers for the CHS, a visualization of their grid answer pattern. More useful information will be added in the future. ## OES and CHS * For our US customers we added a new geographic location to the OES and CHS processing. That way we avoid missing scores more reliably. * An issue in the CHS was fixed were it flagged respondents based on valid ages in combination with their birth year. ## Respondents * The download of respondents now works reliably with surveys of any size. Please keep in mind that large surveys may take a while to download. * When hovering over a respondents OES or CHS answer, you can now see the exact question and answer text and don't have to resize columns anymore. ## Duplicate detection * Previously the duplicate detection didn't flag the first duplicate response. Only subsequent duplicates were flagged. This issue is now resolved and the first duplicate response is now flagged as well. This only applies to the quick import. ## Import Assistant * The Start and End Columns for the Grid Score can now be changed after their first selection. ## Respondents * In the survey view you can **filter respondents by included or excluded** status. The filter applies to **downloads** and **data visualizations**, so exports and charts match the subset you are looking at. ## Other improvements * **CHS & OES**: Requests Blocked by the AIs content filter are classified consistently as BAD\_LANGUAGE; CHS scoring is adjusted so common, realistic answer patterns are not penalized as inconsistent. * **Import Assistant**: Hard limits on row and column counts clear errors when a file exceeds them. ## Surveys * You can now rename a survey after it has been created. It's important to highlight that the survey name used to add respondents via the API must not be changed, even after renaming the survey in the app. This is the only safe way to ensure that respondents are tracked in the correct survey. ## Timescore * The lowest score a respondent can get if they're above the median time is now 20. Previously it was 30. * In case their score is below 30, they will be excluded when using the default cleaning settings for the Timescore. ## Default Cleaning Settings * The TS excludes respondents at a threshold of 30 by default. * The BAS excludes respondents at a threshold of 20 by default and excludes respondents starting with the first Unnatural Typing data point. ## UX Improvements * The respondent table shows the question text for all OES questions in the header. * Pressing Enter on the keyboard in a confirm dialog now triggers the action, e.g. deleting respondents. * Deleting and recalculating respondents fetches the updated data immediately. Previously there was a brief delay which led to confusion. ## File Import * The upload of respondents is noticeably faster, such that results are available much earlier. * We improved the import process for Decipher files. The import is now more reliable and configuring the survey is way faster than before. * In case a file contains duplicate respondent IDs, the import will now point to the exact IDs that are duplicates. ## Support for tracking surveys * When uploading a new survey, you can now choose to use the quality checks and cleaning settings from a previous one. This makes the import of recurring surveys much smoother and less error prone. ## Admin Permissions * Company Admins can now exclude, recalculate and delete respondents for other employess in the company. They also can add additional respondents and delete surveys. ## CHS * The CHS now accepts only up to 300 questions per respondent. We observed decreased accuracy of the CHS when using too many questions. * Selecting single questions for the CHS during the import is now more intuitive. ## System Stability * Recent issues with missing OES and CHS scores are now resolved. ## Minor improvements * The UI now indicates if a respondent has been manually included when it was previously excluded. * Pay-as-you-go customers can now see their used credits in the Credit Overview. ## CHS Import Assistant * Configuring the CHS for the manual import is now easier than ever before. Instead of selecting individual questions, you can now select full groups of questions that belong together. ## Downloading Survey Results * The export for larger surveys will now be sent via email to you. This way you don't have to wait on the page for the export to be ready. ## Minor improvements * The manual import loading indicator is now more intuitive. * Solved an issue where an error screen appeared after not using the app for a while. ## New Attribute: Survey Description for CHS * You can now add a `surveyDescription` when submitting CHS data points to provide context about the survey’s purpose and intent. This increases the precision of the CHS. Find more information see the [Coherence Score docs](/knowledge-base/quality-checks/coherence-score) and the [API docs](/api-reference/endpoints/v3/addRespondent). ## Import Assistant * Selecting Grid Scores with more than 50 items is now prevented. Previously this led to errors in the upload. * Fixed an issue where ZIP codes lost leading zeros. ## Respondent Table * It is easier to change the cleaning status of a respondent. * Changing the cleaning status, deleting or recalculating respondents, does no longer reset your filter and sorting settings. * Improved loading indicator when loading or sorting larger tables. ## Filtering Respondents by Attributes * In the Respondent Table, you can now filter the respondents by their attributes to e.g. view all respondents from a specific panel. * In the Data Visualization tab you can filter for specific attributes as well, giving you in depth insights into the data. ## Grid Quality Score * The overall Grid Quality Score now takes into account the number of items in the grid. This means longer grids have a higher impact on the overall score. ## Minor improvements * **Data Import**: Duplicate header rows are now consistently flagged as errors as soon as possible. * **Adding additional respondents**: It could rarely happen that no or only few respondents were added to the survey. This issue is now resolved. ## Decipher Import Assistant * The assistant’s output is now more accurate, requiring fewer manual adjustments to integrate with the ReDem API. ## Data Import * **Reliability**: - The manual data import process can now handle even larger files more reliably, reducing the likelihood of errors. * **Speed**: Individual steps in the import process have been optimized, significantly reducing upload times, especially for larger files. * **Bugfixes**: In some cases, an error message was displayed on the survey page after the import process completed instead of the progress bar. This issue has now been resolved. ## Respondent Attributes: Support for your own custom attributes * You can now add any custom attributes to the respondent during the import process. These values will be available in the ReDem App and in the result export and can be used for further analysis of your data. ## Minor improvements * **Survey Overview**: The survey overview page is loading considerably faster now. * **Respondent Table**:The table pagination used to be buggy when switching between pages and page sizes. This issue is now resolved. ## Improved Respondent Table * **Column filtering**: You can now select which columns are displayed in the Respondent Table. This allows for a more focused view of the data. * **Header grouping**: The headers in the Respondent Table used to be hard to read as grouping of columns was not clear. Now columns that belong together have their own header group. * **Accessibility**: the readibility of several buttons in the Respondent Table is improved. ## Refined Excel and CSV Export * **Column filtering**: The Excel and CSV export mimic the column filtering in the Respondent Table. Only columns visible in the Respondent Table will be exported. * **Additional Excel sheets**: The Excel export now includes additional sheets for the OES, GQS, TS and CHS results. This makes post processesing the data easier. ## Time Score * Respondents that take a very long time to complete a survey are now scored lower. Previously the lowest Time Score for a respondent that took longer than the median was 50. The lowest Score is now 30. ## New BAS keystroke visualization * The BAS keystroke visualization has been completely revamped. You can skip the visualization during long pauses from respondents, see the total time spent typing and more. ## Survey Import * There are several minor improvements to the survey import process that make it feel smoother and more user-friendly. ## Transaction Overview * **Overview**: The Transaction Overview for Account Admins now shows a summary of the transactions for the account, as well as the total credits used and available. * **Export**: It's now possible to export all transactions of your account. This is useful if you want to review transactions and get a better overview of your usage. ## Export: Excel Format Support * **Excel export**: Results can now be exported in Excel (.xlsx) format in addition to CSV. * **Reliable data structure**: Excel exports avoid the common issue of CSV imports incorrectly identifying separator characters, which often results in broken columns. * **Better compatibility**: Excel format preserves data integrity across different regional settings and spreadsheet applications. ## File Import: OES Keywords Paste Support * **Flexible keyword input**: OES keywords can now be pasted directly into the UI during file import with semicolons, commas, or newlines as separators. * **Automatic separation**: The system automatically detects and separates keywords regardless of delimiter format. * **Improved workflow**: Copy and paste keyword lists from spreadsheets or other sources without manual reformatting. ## Recalculate Respondents * **Recalculate specific checks**: You can now recalculate specific respondents and select exactly which quality checks to recalculate (OES, GQS, TS, CHS, BAS). * **Cost Efficiency**: Credits are only deducted for the specific checks you select. * **Granular control**: Provides flexibility to fix data issues or apply new quality standards to a subset of respondents. * **Updated configuration**: Recalculation operations can include options to update allowed languages for OES, activate duplicate detection, and enable pattern checks for GQS. ## OES v3 Support: Enhanced Category Visualization and Effort Scale ### 🔥 OES v3 Integration The application now fully supports OES v3 with improved category detection and visualization capabilities. ### 🚀 New Features * **OES v3 Categories Visualization**: Support for visualizing the new OES v3 categories (AI\_SUSPECT, OFF\_TOPIC, NO\_ANSWER, GIBBERISH) with clearer boundaries and improved accuracy. * **Effort Scale Chart**: New chart visualizing the average effort (LOW, MEDIUM, HIGH) across a survey, providing insights into respondent engagement levels. ### 📊 Enhanced Quality Metrics * Improved category boundaries reduce false positives and false negatives * Effort scale integration provides more nuanced quality assessments for VALID\_ANSWER and NO\_ANSWER categories * Better scoring accuracy with OES v3 classification system The application automatically detects surveys created with API v3 and displays the appropriate OES v3 categories and effort metrics. ### 🧹 Manually Update Respondents' Excluded Status * **Toggle exclusion status**: Manually switch one or more respondents between included and excluded without re-running the full import or cleaning flow. * **Automatic reason updates**: The `Reasons For Exclusion` field is automatically updated to "Manually Excluded" to reflect each respondent's new status, keeping your quality reporting consistent. * **Clear auditability**: Changes to exclusion status are surfaced in the UI so teams can quickly review which respondents were updated and why. ## File Import: Multi-Sheet Excel Support * Users can upload Excel files where the data map is on a separate sheet. The system automatically relates columns in the data sheet with the data map sheet using AI. ## Export & Download * CSV exports now include the survey name and a timestamp in the filename for clarity. ## UX & Interface * Various small improvements. ## UX & Interface * Various small UI improvements across the application. * Survey Update: UX improvements to streamline updating surveys. ## Quality Checks: CHS * Reduced CHS Quality Score errors by hardening parsing and validation. ## Manual Data Import * It is now possible to specify a questionnaire language column to set allowed languages for OES data points during manual imports. ## UX & Interface * Survey Update: Add new data records to surveys directly from the survey results page, improving imports for multi-wave surveys. ## Delete Features * New feature for deleting respondents and surveys. ## Integrations & Monitoring * Public-facing status page for ReDem 3.0 API & Application providing real-time availability and health monitoring. ## Bulk Cleaning and File Import UX * Bulk cleaning: New backend endpoint and UI to clean all respondents from the survey results page with reusable settings. * File import: Immediate progress bar after confirmation showing the total respondents being processed. ## Respondent Details: BAS Typing Behavior Chart The BAS tab now displays an interactive chart of a respondent’s typing behavior for the question. * Visualizes bursts, pauses, and total time; includes the typed text * Hover or tap for moment-by-moment details * Clicking on the BAS score or typing behavior of a respondent in the table opens this tab directly ## Respondent Details: Cleaning Tab A dedicated Cleaning tab now shows all cleaning information for a single respondent. * Clicking “Status” or “Reason for Exclusion” opens this tab directly ## File Import: CSV and Excel with AI Suggestions You can now manually upload respondents from CSV (.csv) or Excel (.xlsx) files on the Import page. After uploading, the app provides AI-powered suggestions for the best quality checks to enable (e.g. OES, CHS, GQS, TS) based on your data. * Supported file types: .csv, .xlsx * AI suggestions: recommends quality checks and pre-fills survey metadata (title, row indexes, missing values, etc.) 👉 [Read the full guide](/features/file-import) ## Authentication: Letter Capitalization Fix Fixed a bug that caused incorrect letter-case handling across authentication flows: * Registration * Login * Password reset * Invite user Inputs are now normalized and validated consistently, preventing case-related failures. ## Performance: Faster Survey Page The Surveys page now loads the list in under 3 seconds for typical workspaces. * Optimized queries and pagination * Improved caching # File Import Source: https://docs.redem.io/features/file-import Learn how to upload your survey data in ReDem