REVIEW
REVIEW (GET)
GET
/
api
/
v4
/
respondents
/
review
/
{publishable_key}
REVIEW (GET)
curl --request GET \
--url https://prod.rtymgt.com/api/v4/respondents/review/{publishable_key}import requests
url = "https://prod.rtymgt.com/api/v4/respondents/review/{publishable_key}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://prod.rtymgt.com/api/v4/respondents/review/{publishable_key}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://prod.rtymgt.com/api/v4/respondents/review/{publishable_key}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://prod.rtymgt.com/api/v4/respondents/review/{publishable_key}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://prod.rtymgt.com/api/v4/respondents/review/{publishable_key}")
.asString();require 'uri'
require 'net/http'
url = URI("https://prod.rtymgt.com/api/v4/respondents/review/{publishable_key}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"model": {
"rw_context_risk_score": 12,
"rw_context_risk_level": "low",
"rw_context_description": "Yes, contextually correct",
"rw_llm_risk_score": 1,
"rw_llm_risk_level": "low",
"rw_llm_description": "LLM not detected"
},
"input": {
"sy_nr": "test",
"q_id": "3333",
"question": "How satisfied are you with the current product features?",
"sn_ud": "T_test",
"text": "I am very satisfied because the features meet all my needs.",
"similarity_text_length": "50"
},
"score": {
"garbage_words_score": 0,
"pasted_response_score": 0,
"typed_response_time": 0,
"page_view_time": 0,
"profanity_check_score": 0,
"composite_score": 0,
"garbage_words": 0,
"language_detected_score": 0.01,
"engagement_score": 1,
"similarity_text": 1,
"profanity_check": 0,
"language_detected": "English",
"pasted_response": 0
}
}Text analysis of an open-ended survey response. Returns a composite quality score plus copy/paste, profanity, engagement, language, and LLM-detection signals.
q_id, text, sn_ud, sy_nr, and question are required. The GET method caps the number of characters that can be sent — use REVIEW (POST) for longer text.
For full parameter definitions and the copy/paste JS library, see the REVIEW guide.Path Parameters
Your Research Defender publishable key (client-side).
Query Parameters
Identifier for each survey question.
Text entered by the respondent.
Unique session identifier (GUID recommended).
Unique identifier for the client survey.
The survey question, which drives contextual analysis.
Pasted text from the JS library, base64-encoded.
Minimum number of characters needed to run the similarity check.
Page-load time (base64-encoded).
Time when typing started (base64-encoded).
Time on submit (base64-encoded).
Behavioral data (keystrokes, mouse, and scroll) collected by the JS library.
Respondent country code (ISO 3166-1 alpha-2), used for locale-based validation.
Was this page helpful?
REVIEW (GET)
curl --request GET \
--url https://prod.rtymgt.com/api/v4/respondents/review/{publishable_key}import requests
url = "https://prod.rtymgt.com/api/v4/respondents/review/{publishable_key}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://prod.rtymgt.com/api/v4/respondents/review/{publishable_key}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://prod.rtymgt.com/api/v4/respondents/review/{publishable_key}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://prod.rtymgt.com/api/v4/respondents/review/{publishable_key}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://prod.rtymgt.com/api/v4/respondents/review/{publishable_key}")
.asString();require 'uri'
require 'net/http'
url = URI("https://prod.rtymgt.com/api/v4/respondents/review/{publishable_key}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"model": {
"rw_context_risk_score": 12,
"rw_context_risk_level": "low",
"rw_context_description": "Yes, contextually correct",
"rw_llm_risk_score": 1,
"rw_llm_risk_level": "low",
"rw_llm_description": "LLM not detected"
},
"input": {
"sy_nr": "test",
"q_id": "3333",
"question": "How satisfied are you with the current product features?",
"sn_ud": "T_test",
"text": "I am very satisfied because the features meet all my needs.",
"similarity_text_length": "50"
},
"score": {
"garbage_words_score": 0,
"pasted_response_score": 0,
"typed_response_time": 0,
"page_view_time": 0,
"profanity_check_score": 0,
"composite_score": 0,
"garbage_words": 0,
"language_detected_score": 0.01,
"engagement_score": 1,
"similarity_text": 1,
"profanity_check": 0,
"language_detected": "English",
"pasted_response": 0
}
}