from kombo import Kombo
with Kombo(
integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:
res = k_client.ats.add_candidate_result_link(candidate_id="8Xi6iZrwusZqJmDGXs49GBmJ", label="Assessment Result", url="https://example.com/test-results/5BtP1WC1UboS7CF3yxjKcvjG", details={
"custom_field_name_prefix": "Acme:",
"attributes": [
{
"key": "Score",
"value": "100%",
},
{
"key": "Time",
"value": "2:30h",
},
],
})
# Handle response
print(res)import { Kombo } from "@kombo-api/sdk";
const kombo = new Kombo({
integration_id: "workday:HWUTwvyx2wLoSUHphiWVrp28",
api_key: "<YOUR_BEARER_TOKEN_HERE>",
});
async function run() {
const result = await kombo.ats.addCandidateResultLink({
candidate_id: "8Xi6iZrwusZqJmDGXs49GBmJ",
body: {
label: "Assessment Result",
url: "https://example.com/test-results/5BtP1WC1UboS7CF3yxjKcvjG",
details: {
custom_field_name_prefix: "Acme:",
attributes: [
{
key: "Score",
value: "100%",
},
{
key: "Time",
value: "2:30h",
},
],
},
},
});
console.log(result);
}
run();require 'kombo'
Models = ::Kombo::Models
s = ::Kombo::Kombo.new(
integration_id: 'workday:HWUTwvyx2wLoSUHphiWVrp28',
security: Models::Shared::Security.new(
api_key: '<YOUR_BEARER_TOKEN_HERE>'
)
)
res = s.ats.add_candidate_result_link(candidate_id: '8Xi6iZrwusZqJmDGXs49GBmJ', body: Models::Shared::PostAtsCandidatesCandidateIdResultLinksRequestBody.new(
label: 'Assessment Result',
url: 'https://example.com/test-results/5BtP1WC1UboS7CF3yxjKcvjG',
details: Models::Shared::PostAtsCandidatesCandidateIdResultLinksRequestBodyDetails.new(
custom_field_name_prefix: 'Acme:',
attributes: [
Models::Shared::PostAtsCandidatesCandidateIdResultLinksRequestBodyAttribute.new(
key: 'Score',
value: '100%'
),
Models::Shared::PostAtsCandidatesCandidateIdResultLinksRequestBodyAttribute.new(
key: 'Time',
value: '2:30h'
),
]
)
))
unless res.post_ats_candidates_candidate_id_result_links_positive_response.nil?
# handle response
endcurl --request POST \
--url https://api.kombo.dev/v1/ats/candidates/{candidate_id}/result-links \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Integration-Id: <x-integration-id>' \
--data '
{
"label": "Assessment Result",
"url": "https://example.com/test-results/5BtP1WC1UboS7CF3yxjKcvjG",
"details": {
"custom_field_name_prefix": "Acme:",
"attributes": [
{
"key": "Score",
"value": "100%"
},
{
"key": "Time",
"value": "2:30h"
}
]
}
}
'const options = {
method: 'POST',
headers: {
'X-Integration-Id': '<x-integration-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
label: 'Assessment Result',
url: 'https://example.com/test-results/5BtP1WC1UboS7CF3yxjKcvjG',
details: {
custom_field_name_prefix: 'Acme:',
attributes: [{key: 'Score', value: '100%'}, {key: 'Time', value: '2:30h'}]
}
})
};
fetch('https://api.kombo.dev/v1/ats/candidates/{candidate_id}/result-links', 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.kombo.dev/v1/ats/candidates/{candidate_id}/result-links",
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([
'label' => 'Assessment Result',
'url' => 'https://example.com/test-results/5BtP1WC1UboS7CF3yxjKcvjG',
'details' => [
'custom_field_name_prefix' => 'Acme:',
'attributes' => [
[
'key' => 'Score',
'value' => '100%'
],
[
'key' => 'Time',
'value' => '2:30h'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"X-Integration-Id: <x-integration-id>"
],
]);
$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.kombo.dev/v1/ats/candidates/{candidate_id}/result-links"
payload := strings.NewReader("{\n \"label\": \"Assessment Result\",\n \"url\": \"https://example.com/test-results/5BtP1WC1UboS7CF3yxjKcvjG\",\n \"details\": {\n \"custom_field_name_prefix\": \"Acme:\",\n \"attributes\": [\n {\n \"key\": \"Score\",\n \"value\": \"100%\"\n },\n {\n \"key\": \"Time\",\n \"value\": \"2:30h\"\n }\n ]\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Integration-Id", "<x-integration-id>")
req.Header.Add("Authorization", "Bearer <token>")
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.kombo.dev/v1/ats/candidates/{candidate_id}/result-links")
.header("X-Integration-Id", "<x-integration-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"label\": \"Assessment Result\",\n \"url\": \"https://example.com/test-results/5BtP1WC1UboS7CF3yxjKcvjG\",\n \"details\": {\n \"custom_field_name_prefix\": \"Acme:\",\n \"attributes\": [\n {\n \"key\": \"Score\",\n \"value\": \"100%\"\n },\n {\n \"key\": \"Time\",\n \"value\": \"2:30h\"\n }\n ]\n }\n}")
.asString();{
"status": "<string>",
"data": {},
"warnings": [
{
"message": "<string>"
}
]
}Add result link to candidate
Add a result link to a candidate.
from kombo import Kombo
with Kombo(
integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:
res = k_client.ats.add_candidate_result_link(candidate_id="8Xi6iZrwusZqJmDGXs49GBmJ", label="Assessment Result", url="https://example.com/test-results/5BtP1WC1UboS7CF3yxjKcvjG", details={
"custom_field_name_prefix": "Acme:",
"attributes": [
{
"key": "Score",
"value": "100%",
},
{
"key": "Time",
"value": "2:30h",
},
],
})
# Handle response
print(res)import { Kombo } from "@kombo-api/sdk";
const kombo = new Kombo({
integration_id: "workday:HWUTwvyx2wLoSUHphiWVrp28",
api_key: "<YOUR_BEARER_TOKEN_HERE>",
});
async function run() {
const result = await kombo.ats.addCandidateResultLink({
candidate_id: "8Xi6iZrwusZqJmDGXs49GBmJ",
body: {
label: "Assessment Result",
url: "https://example.com/test-results/5BtP1WC1UboS7CF3yxjKcvjG",
details: {
custom_field_name_prefix: "Acme:",
attributes: [
{
key: "Score",
value: "100%",
},
{
key: "Time",
value: "2:30h",
},
],
},
},
});
console.log(result);
}
run();require 'kombo'
Models = ::Kombo::Models
s = ::Kombo::Kombo.new(
integration_id: 'workday:HWUTwvyx2wLoSUHphiWVrp28',
security: Models::Shared::Security.new(
api_key: '<YOUR_BEARER_TOKEN_HERE>'
)
)
res = s.ats.add_candidate_result_link(candidate_id: '8Xi6iZrwusZqJmDGXs49GBmJ', body: Models::Shared::PostAtsCandidatesCandidateIdResultLinksRequestBody.new(
label: 'Assessment Result',
url: 'https://example.com/test-results/5BtP1WC1UboS7CF3yxjKcvjG',
details: Models::Shared::PostAtsCandidatesCandidateIdResultLinksRequestBodyDetails.new(
custom_field_name_prefix: 'Acme:',
attributes: [
Models::Shared::PostAtsCandidatesCandidateIdResultLinksRequestBodyAttribute.new(
key: 'Score',
value: '100%'
),
Models::Shared::PostAtsCandidatesCandidateIdResultLinksRequestBodyAttribute.new(
key: 'Time',
value: '2:30h'
),
]
)
))
unless res.post_ats_candidates_candidate_id_result_links_positive_response.nil?
# handle response
endcurl --request POST \
--url https://api.kombo.dev/v1/ats/candidates/{candidate_id}/result-links \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Integration-Id: <x-integration-id>' \
--data '
{
"label": "Assessment Result",
"url": "https://example.com/test-results/5BtP1WC1UboS7CF3yxjKcvjG",
"details": {
"custom_field_name_prefix": "Acme:",
"attributes": [
{
"key": "Score",
"value": "100%"
},
{
"key": "Time",
"value": "2:30h"
}
]
}
}
'const options = {
method: 'POST',
headers: {
'X-Integration-Id': '<x-integration-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
label: 'Assessment Result',
url: 'https://example.com/test-results/5BtP1WC1UboS7CF3yxjKcvjG',
details: {
custom_field_name_prefix: 'Acme:',
attributes: [{key: 'Score', value: '100%'}, {key: 'Time', value: '2:30h'}]
}
})
};
fetch('https://api.kombo.dev/v1/ats/candidates/{candidate_id}/result-links', 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.kombo.dev/v1/ats/candidates/{candidate_id}/result-links",
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([
'label' => 'Assessment Result',
'url' => 'https://example.com/test-results/5BtP1WC1UboS7CF3yxjKcvjG',
'details' => [
'custom_field_name_prefix' => 'Acme:',
'attributes' => [
[
'key' => 'Score',
'value' => '100%'
],
[
'key' => 'Time',
'value' => '2:30h'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"X-Integration-Id: <x-integration-id>"
],
]);
$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.kombo.dev/v1/ats/candidates/{candidate_id}/result-links"
payload := strings.NewReader("{\n \"label\": \"Assessment Result\",\n \"url\": \"https://example.com/test-results/5BtP1WC1UboS7CF3yxjKcvjG\",\n \"details\": {\n \"custom_field_name_prefix\": \"Acme:\",\n \"attributes\": [\n {\n \"key\": \"Score\",\n \"value\": \"100%\"\n },\n {\n \"key\": \"Time\",\n \"value\": \"2:30h\"\n }\n ]\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Integration-Id", "<x-integration-id>")
req.Header.Add("Authorization", "Bearer <token>")
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.kombo.dev/v1/ats/candidates/{candidate_id}/result-links")
.header("X-Integration-Id", "<x-integration-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"label\": \"Assessment Result\",\n \"url\": \"https://example.com/test-results/5BtP1WC1UboS7CF3yxjKcvjG\",\n \"details\": {\n \"custom_field_name_prefix\": \"Acme:\",\n \"attributes\": [\n {\n \"key\": \"Score\",\n \"value\": \"100%\"\n },\n {\n \"key\": \"Time\",\n \"value\": \"2:30h\"\n }\n ]\n }\n}")
.asString();{
"status": "<string>",
"data": {},
"warnings": [
{
"message": "<string>"
}
]
}Supported integrations
Supported integrations
Workday
SAP SuccessFactors
SmartRecruiters
Lever
Tellent Recruitee
Greenhouse (V1)
Teamtailor
Ashby
Onlyfy
UKG Pro
Bullhorn
Bullhorn Login
Workable
Jobvite
Welcome to the Jungle
eRecruiter
OTYS
JazzHR
Homerun
Gem
Mercury
Manatal
Breezy HR
Kombo Sandbox
Example Request Body
{
"label": "Assessment Result",
"url": "https://example.com/test-results/5BtP1WC1UboS7CF3yxjKcvjG",
"details": {
"custom_field_name_prefix": "Acme:",
"attributes": [
{
"key": "Score",
"value": "100%"
},
{
"key": "Time",
"value": "2:30h"
}
]
},
"remote_fields": {}
}
Authorizations
Headers
ID of the integration you want to interact with.
Path Parameters
The Kombo ID of the candidate you want to add the result link to.
Body
POST /ats/candidates/:candidate_id/result-links Request body
If the system allows us to display a display name for the link, we will use this label.
URL of the link.
Additional details with attributes that will be added to the result. This can be percentages, scores, or any text.
We generally recommend using short attribute keys and a short custom_field_name_prefix to avoid overflowing the ATS UI.
Show child attributes
Show child attributes
Additional fields that we will pass through to specific ATS systems.
Show child attributes
Show child attributes
Response
POST /ats/candidates/:candidate_id/result-links Positive response
Was this page helpful?