curl --request GET \
--url https://api.ropes.ai/api/public/candidates/{candidateId}/scout \
--header 'x-api-key: <api-key>'import requests
url = "https://api.ropes.ai/api/public/candidates/{candidateId}/scout"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.ropes.ai/api/public/candidates/{candidateId}/scout', 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://api.ropes.ai/api/public/candidates/{candidateId}/scout",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$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://api.ropes.ai/api/public/candidates/{candidateId}/scout"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.ropes.ai/api/public/candidates/{candidateId}/scout")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ropes.ai/api/public/candidates/{candidateId}/scout")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"status": "completed",
"completedAt": "2026-08-01T17:24:08.000Z",
"risk": "Review Recommended",
"summary": "The candidate's email address cannot receive mail because its domain lacks a valid mail service, and the LinkedIn profile could not be verified. Phone and resume checks passed.",
"flags": [
{
"id": "email-deliverability",
"title": "Email Deliverability",
"description": "The email address cannot receive mail - its domain has no valid mail service.",
"level": "warning"
},
{
"id": "linkedin-url-status",
"title": "LinkedIn URL Status",
"description": "LinkedIn URL could not be found in the resume. Input the candidate's LinkedIn URL manually to run LinkedIn checks.",
"level": "skipped"
}
],
"passingFlags": [
{
"id": "phone-verification",
"title": "Phone Verification",
"description": "The phone number is a valid, carrier-backed line.",
"level": "pass"
},
{
"id": "resume-authorship-check",
"title": "Resume Authorship",
"description": "No indicators of fabricated or heavily AI-generated resume content.",
"level": "pass"
}
]
}Get Scout Result
Get a candidate’s Scout result (resume and identity fraud screening): the overall verdict, a human-readable summary, and per-check findings. Read-only. The status field indicates whether a Scout run exists and whether results are available; risk, summary, and the flag arrays are only populated when status is “completed”.
curl --request GET \
--url https://api.ropes.ai/api/public/candidates/{candidateId}/scout \
--header 'x-api-key: <api-key>'import requests
url = "https://api.ropes.ai/api/public/candidates/{candidateId}/scout"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.ropes.ai/api/public/candidates/{candidateId}/scout', 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://api.ropes.ai/api/public/candidates/{candidateId}/scout",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$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://api.ropes.ai/api/public/candidates/{candidateId}/scout"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.ropes.ai/api/public/candidates/{candidateId}/scout")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ropes.ai/api/public/candidates/{candidateId}/scout")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"status": "completed",
"completedAt": "2026-08-01T17:24:08.000Z",
"risk": "Review Recommended",
"summary": "The candidate's email address cannot receive mail because its domain lacks a valid mail service, and the LinkedIn profile could not be verified. Phone and resume checks passed.",
"flags": [
{
"id": "email-deliverability",
"title": "Email Deliverability",
"description": "The email address cannot receive mail - its domain has no valid mail service.",
"level": "warning"
},
{
"id": "linkedin-url-status",
"title": "LinkedIn URL Status",
"description": "LinkedIn URL could not be found in the resume. Input the candidate's LinkedIn URL manually to run LinkedIn checks.",
"level": "skipped"
}
],
"passingFlags": [
{
"id": "phone-verification",
"title": "Phone Verification",
"description": "The phone number is a valid, carrier-backed line.",
"level": "pass"
},
{
"id": "resume-authorship-check",
"title": "Resume Authorship",
"description": "No indicators of fabricated or heavily AI-generated resume content.",
"level": "pass"
}
]
}Authorizations
Path Parameters
The unique identifier of the candidate
Response
Successfully retrieved Scout result
Lifecycle of the Scout run for this candidate. "not_run" = no Scout run exists; "processing" = a run is in progress; "completed" = results are available below.
not_run, processing, completed ISO 8601 timestamp when the Scout run completed. Null unless completed.
Overall Scout verdict. "Checks Passed" = no concerns; "Review Recommended" = manual review advised; "Insufficient Data" = not enough information to assess (NOT a clean result); "Fraud Detected" = screening found dispositive evidence of fraud. Null unless completed.
Checks Passed, Review Recommended, Insufficient Data, Fraud Detected Human-readable summary of the Scout assessment. Null unless completed.
Findings that did not pass (including checks that were skipped). Empty unless completed.
Show child attributes
Show child attributes
Checks the candidate cleared. Empty unless completed.
Show child attributes
Show child attributes