Decisions
Report recruiter decisions and the notices shown
Mandatory under the partnership. Each (run_id, candidate_id, decision) is stored
once; repeats are counted in duplicates. Safe to retry. Treat a 422 as
“nothing stored” and resend the corrected batch.
Report recruiter decisions and the notices shown
curl --request POST \
--url https://vort-partner-api.vercel.app/sandbox/v1/runs/{run_id}/decisions \
--header 'Content-Type: application/json' \
--header 'x-partner-key: <api-key>' \
--header 'x-vort-org: <api-key>' \
--data '
{
"acting_user_external_id": "u-88121",
"decisions": [
{
"candidate_id": 48213377,
"decision": "shortlisted",
"occurred_at": "2026-10-04T09:15:02Z"
},
{
"candidate_id": 50119020,
"decision": "rejected",
"reject_reason": "location",
"note": "Lives in Haifa, will not commute.",
"occurred_at": "2026-10-04T09:15:40Z"
}
],
"notices_shown": [
"location_relaxed",
"requirement_attribution",
"run_progress"
]
}
'const options = {
method: 'POST',
headers: {
'x-partner-key': '<api-key>',
'x-vort-org': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
acting_user_external_id: 'u-88121',
decisions: [
{
candidate_id: 48213377,
decision: 'shortlisted',
occurred_at: '2026-10-04T09:15:02Z'
},
{
candidate_id: 50119020,
decision: 'rejected',
reject_reason: 'location',
note: 'Lives in Haifa, will not commute.',
occurred_at: '2026-10-04T09:15:40Z'
}
],
notices_shown: ['location_relaxed', 'requirement_attribution', 'run_progress']
})
};
fetch('https://vort-partner-api.vercel.app/sandbox/v1/runs/{run_id}/decisions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://vort-partner-api.vercel.app/sandbox/v1/runs/{run_id}/decisions"
payload = {
"acting_user_external_id": "u-88121",
"decisions": [
{
"candidate_id": 48213377,
"decision": "shortlisted",
"occurred_at": "2026-10-04T09:15:02Z"
},
{
"candidate_id": 50119020,
"decision": "rejected",
"reject_reason": "location",
"note": "Lives in Haifa, will not commute.",
"occurred_at": "2026-10-04T09:15:40Z"
}
],
"notices_shown": ["location_relaxed", "requirement_attribution", "run_progress"]
}
headers = {
"x-partner-key": "<api-key>",
"x-vort-org": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://vort-partner-api.vercel.app/sandbox/v1/runs/{run_id}/decisions",
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([
'acting_user_external_id' => 'u-88121',
'decisions' => [
[
'candidate_id' => 48213377,
'decision' => 'shortlisted',
'occurred_at' => '2026-10-04T09:15:02Z'
],
[
'candidate_id' => 50119020,
'decision' => 'rejected',
'reject_reason' => 'location',
'note' => 'Lives in Haifa, will not commute.',
'occurred_at' => '2026-10-04T09:15:40Z'
]
],
'notices_shown' => [
'location_relaxed',
'requirement_attribution',
'run_progress'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-partner-key: <api-key>",
"x-vort-org: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"accepted": 2,
"duplicates": 0
}Authorizations
Partner API key: vpk_live_ + 48 lowercase hex. Server-side only.
Customer org token: vot_ + 48 lowercase hex, from /activations/redeem. Server-side only.
Headers
Language of notices and messages. Defaults to the partner default.
Available options:
he, en Path Parameters
Body
application/json
May be empty when only reporting notices_shown.
Hide child attributes
Hide child attributes
Available options:
shortlisted, rejected, contacted, interviewing, hired Only with decision rejected. null when the recruiter picked no reason.
Available options:
cv_irrelevant, overqualified, location, insufficient_experience, declined, candidate_withdrew, known Codes of notices rendered to a recruiter for this run, including unknown codes.
⌘I
Report recruiter decisions and the notices shown
curl --request POST \
--url https://vort-partner-api.vercel.app/sandbox/v1/runs/{run_id}/decisions \
--header 'Content-Type: application/json' \
--header 'x-partner-key: <api-key>' \
--header 'x-vort-org: <api-key>' \
--data '
{
"acting_user_external_id": "u-88121",
"decisions": [
{
"candidate_id": 48213377,
"decision": "shortlisted",
"occurred_at": "2026-10-04T09:15:02Z"
},
{
"candidate_id": 50119020,
"decision": "rejected",
"reject_reason": "location",
"note": "Lives in Haifa, will not commute.",
"occurred_at": "2026-10-04T09:15:40Z"
}
],
"notices_shown": [
"location_relaxed",
"requirement_attribution",
"run_progress"
]
}
'const options = {
method: 'POST',
headers: {
'x-partner-key': '<api-key>',
'x-vort-org': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
acting_user_external_id: 'u-88121',
decisions: [
{
candidate_id: 48213377,
decision: 'shortlisted',
occurred_at: '2026-10-04T09:15:02Z'
},
{
candidate_id: 50119020,
decision: 'rejected',
reject_reason: 'location',
note: 'Lives in Haifa, will not commute.',
occurred_at: '2026-10-04T09:15:40Z'
}
],
notices_shown: ['location_relaxed', 'requirement_attribution', 'run_progress']
})
};
fetch('https://vort-partner-api.vercel.app/sandbox/v1/runs/{run_id}/decisions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://vort-partner-api.vercel.app/sandbox/v1/runs/{run_id}/decisions"
payload = {
"acting_user_external_id": "u-88121",
"decisions": [
{
"candidate_id": 48213377,
"decision": "shortlisted",
"occurred_at": "2026-10-04T09:15:02Z"
},
{
"candidate_id": 50119020,
"decision": "rejected",
"reject_reason": "location",
"note": "Lives in Haifa, will not commute.",
"occurred_at": "2026-10-04T09:15:40Z"
}
],
"notices_shown": ["location_relaxed", "requirement_attribution", "run_progress"]
}
headers = {
"x-partner-key": "<api-key>",
"x-vort-org": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://vort-partner-api.vercel.app/sandbox/v1/runs/{run_id}/decisions",
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([
'acting_user_external_id' => 'u-88121',
'decisions' => [
[
'candidate_id' => 48213377,
'decision' => 'shortlisted',
'occurred_at' => '2026-10-04T09:15:02Z'
],
[
'candidate_id' => 50119020,
'decision' => 'rejected',
'reject_reason' => 'location',
'note' => 'Lives in Haifa, will not commute.',
'occurred_at' => '2026-10-04T09:15:40Z'
]
],
'notices_shown' => [
'location_relaxed',
'requirement_attribution',
'run_progress'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-partner-key: <api-key>",
"x-vort-org: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"accepted": 2,
"duplicates": 0
}