curl --request POST \
--url https://api.ropes.ai/api/public/assessments \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"candidateIdentifier": "<string>",
"problemId": "<string>",
"submitterEmail": "jsmith@example.com",
"shouldSendEmail": true,
"bypassIDCheck": false,
"isSelfServe": true,
"inviteEmailLocale": "en"
}
'import requests
url = "https://api.ropes.ai/api/public/assessments"
payload = {
"candidateIdentifier": "<string>",
"problemId": "<string>",
"submitterEmail": "jsmith@example.com",
"shouldSendEmail": True,
"bypassIDCheck": False,
"isSelfServe": True,
"inviteEmailLocale": "en"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
candidateIdentifier: '<string>',
problemId: '<string>',
submitterEmail: 'jsmith@example.com',
shouldSendEmail: true,
bypassIDCheck: false,
isSelfServe: true,
inviteEmailLocale: 'en'
})
};
fetch('https://api.ropes.ai/api/public/assessments', 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/assessments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'candidateIdentifier' => '<string>',
'problemId' => '<string>',
'submitterEmail' => 'jsmith@example.com',
'shouldSendEmail' => true,
'bypassIDCheck' => false,
'isSelfServe' => true,
'inviteEmailLocale' => 'en'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.ropes.ai/api/public/assessments"
payload := strings.NewReader("{\n \"candidateIdentifier\": \"<string>\",\n \"problemId\": \"<string>\",\n \"submitterEmail\": \"jsmith@example.com\",\n \"shouldSendEmail\": true,\n \"bypassIDCheck\": false,\n \"isSelfServe\": true,\n \"inviteEmailLocale\": \"en\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.ropes.ai/api/public/assessments")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"candidateIdentifier\": \"<string>\",\n \"problemId\": \"<string>\",\n \"submitterEmail\": \"jsmith@example.com\",\n \"shouldSendEmail\": true,\n \"bypassIDCheck\": false,\n \"isSelfServe\": true,\n \"inviteEmailLocale\": \"en\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ropes.ai/api/public/assessments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"candidateIdentifier\": \"<string>\",\n \"problemId\": \"<string>\",\n \"submitterEmail\": \"jsmith@example.com\",\n \"shouldSendEmail\": true,\n \"bypassIDCheck\": false,\n \"isSelfServe\": true,\n \"inviteEmailLocale\": \"en\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"identifier": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"success": false,
"errorCode": "INTERVIEW_ALREADY_EXISTS",
"message": "<string>",
"identifier": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Issue Screen
Issue a technical screen or video screen for a candidate. The problem type is inferred from problemId.
Required scope: assessments:write
curl --request POST \
--url https://api.ropes.ai/api/public/assessments \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"candidateIdentifier": "<string>",
"problemId": "<string>",
"submitterEmail": "jsmith@example.com",
"shouldSendEmail": true,
"bypassIDCheck": false,
"isSelfServe": true,
"inviteEmailLocale": "en"
}
'import requests
url = "https://api.ropes.ai/api/public/assessments"
payload = {
"candidateIdentifier": "<string>",
"problemId": "<string>",
"submitterEmail": "jsmith@example.com",
"shouldSendEmail": True,
"bypassIDCheck": False,
"isSelfServe": True,
"inviteEmailLocale": "en"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
candidateIdentifier: '<string>',
problemId: '<string>',
submitterEmail: 'jsmith@example.com',
shouldSendEmail: true,
bypassIDCheck: false,
isSelfServe: true,
inviteEmailLocale: 'en'
})
};
fetch('https://api.ropes.ai/api/public/assessments', 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/assessments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'candidateIdentifier' => '<string>',
'problemId' => '<string>',
'submitterEmail' => 'jsmith@example.com',
'shouldSendEmail' => true,
'bypassIDCheck' => false,
'isSelfServe' => true,
'inviteEmailLocale' => 'en'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.ropes.ai/api/public/assessments"
payload := strings.NewReader("{\n \"candidateIdentifier\": \"<string>\",\n \"problemId\": \"<string>\",\n \"submitterEmail\": \"jsmith@example.com\",\n \"shouldSendEmail\": true,\n \"bypassIDCheck\": false,\n \"isSelfServe\": true,\n \"inviteEmailLocale\": \"en\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.ropes.ai/api/public/assessments")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"candidateIdentifier\": \"<string>\",\n \"problemId\": \"<string>\",\n \"submitterEmail\": \"jsmith@example.com\",\n \"shouldSendEmail\": true,\n \"bypassIDCheck\": false,\n \"isSelfServe\": true,\n \"inviteEmailLocale\": \"en\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ropes.ai/api/public/assessments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"candidateIdentifier\": \"<string>\",\n \"problemId\": \"<string>\",\n \"submitterEmail\": \"jsmith@example.com\",\n \"shouldSendEmail\": true,\n \"bypassIDCheck\": false,\n \"isSelfServe\": true,\n \"inviteEmailLocale\": \"en\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"identifier": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"success": false,
"errorCode": "INTERVIEW_ALREADY_EXISTS",
"message": "<string>",
"identifier": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Authorizations
Each key carries scopes chosen when it is created: candidates:read, candidates:write, assessments:read, assessments:write, problems:read, problems:write, results:read. Keys created before scopes existed have full access. A request with a key that lacks an operation's scope returns 403 naming the missing scope.
Body
The identifier of the candidate
The identifier of the technical screen or video screen to assign, as returned by the problems endpoints
Email address of the screen submitter (optional)
Whether to send an email notification to the candidate
Whether to bypass ID verification checks
Whether this screen was created via the self-serve flow
Language for the invite email. Only takes effect when the problem supports that spoken locale; otherwise English is used.
en, fr