from kombo import Kombo
from kombo.utils import parse_datetime
with Kombo(
integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:
res = k_client.ats.create_candidate(candidate={
"first_name": "Frank",
"last_name": "Doe",
"email_address": "frank.doe@example.com",
"company": "Acme Inc.",
"title": "Head of Integrations",
"phone_number": "+1-541-754-3010",
"location": {
"city": "New York",
"country": "US",
"state": "NY",
},
"gender": "MALE",
"availability_date": parse_datetime("2021-01-01T00:00:00Z"),
"salary_expectations": {
"period": "YEAR",
"amount": 100000,
},
"social_links": [
{
"url": "https://www.linkedin.com/in/frank-doe-123456789/",
},
{
"url": "https://twitter.com/frankdoe",
},
],
}, application={
"job_id": "BDpgnpZ148nrGh4mYHNxJBgx",
"stage_id": "8x3YKRDcuRnwShdh96ShBNn1",
}, screening_question_answers=[
{
"question_id": "3phFBNXRweGnDmsU9o2vdPuQ",
"answer": "Yes",
},
{
"question_id": "EYJjhMQT3LtVKXnTbnRT8s6U",
"answer": [
"GUzE666zfyjeoCJX6A8n7wh6",
"5WPHzzKAv8cx97KtHRUV96U8",
"7yZfKGzWigXxxRTygqAfHvyE",
],
},
], attachments=[
{
"name": "Frank Doe CV.txt",
"content_type": "text/plain",
"data": "SGkgdGhlcmUsIEtvbWJvIGlzIGN1cnJlbnRseSBoaXJpbmcgZW5naW5lZXJzIHRoYXQgbG92ZSB0byB3b3JrIG9uIGRldmVsb3BlciBwcm9kdWN0cy4=",
"type": "CV",
},
])
# 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.createCandidate({
candidate: {
first_name: "Frank",
last_name: "Doe",
email_address: "frank.doe@example.com",
company: "Acme Inc.",
title: "Head of Integrations",
phone_number: "+1-541-754-3010",
location: {
city: "New York",
country: "US",
state: "NY",
},
gender: "MALE",
availability_date: new Date("2021-01-01T00:00:00Z"),
salary_expectations: {
period: "YEAR",
amount: 100000,
},
social_links: [
{
url: "https://www.linkedin.com/in/frank-doe-123456789/",
},
{
url: "https://twitter.com/frankdoe",
},
],
},
application: {
job_id: "BDpgnpZ148nrGh4mYHNxJBgx",
stage_id: "8x3YKRDcuRnwShdh96ShBNn1",
},
screening_question_answers: [
{
question_id: "3phFBNXRweGnDmsU9o2vdPuQ",
answer: "Yes",
},
{
question_id: "EYJjhMQT3LtVKXnTbnRT8s6U",
answer: [
"GUzE666zfyjeoCJX6A8n7wh6",
"5WPHzzKAv8cx97KtHRUV96U8",
"7yZfKGzWigXxxRTygqAfHvyE",
],
},
],
attachments: [
{
name: "Frank Doe CV.txt",
content_type: "text/plain",
data: "SGkgdGhlcmUsIEtvbWJvIGlzIGN1cnJlbnRseSBoaXJpbmcgZW5naW5lZXJzIHRoYXQgbG92ZSB0byB3b3JrIG9uIGRldmVsb3BlciBwcm9kdWN0cy4=",
type: "CV",
},
],
});
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.create_candidate(body: Models::Shared::PostAtsCandidatesRequestBody.new(
candidate: Models::Shared::PostAtsCandidatesRequestBodyCandidate.new(
first_name: 'Frank',
last_name: 'Doe',
email_address: 'frank.doe@example.com',
company: 'Acme Inc.',
title: 'Head of Integrations',
phone_number: '+1-541-754-3010',
location: Models::Shared::PostAtsCandidatesRequestBodyLocation.new(
city: 'New York',
country: 'US',
state: 'NY'
),
gender: Models::Shared::PostAtsCandidatesRequestBodyGender::MALE,
availability_date: DateTime.iso8601('2021-01-01T00:00:00Z'),
salary_expectations: Models::Shared::PostAtsCandidatesRequestBodySalaryExpectations.new(
period: Models::Shared::PostAtsCandidatesRequestBodyPeriod::YEAR,
amount: 100_000.0
),
social_links: [
Models::Shared::PostAtsCandidatesRequestBodySocialLink.new(
url: 'https://www.linkedin.com/in/frank-doe-123456789/'
),
Models::Shared::PostAtsCandidatesRequestBodySocialLink.new(
url: 'https://twitter.com/frankdoe'
),
]
),
application: Models::Shared::PostAtsCandidatesRequestBodyApplication.new(
job_id: 'BDpgnpZ148nrGh4mYHNxJBgx',
stage_id: '8x3YKRDcuRnwShdh96ShBNn1'
),
screening_question_answers: [
Models::Shared::PostAtsCandidatesRequestBodyScreeningQuestionAnswer.new(
question_id: '3phFBNXRweGnDmsU9o2vdPuQ',
answer: 'Yes'
),
Models::Shared::PostAtsCandidatesRequestBodyScreeningQuestionAnswer.new(
question_id: 'EYJjhMQT3LtVKXnTbnRT8s6U',
answer: [
'GUzE666zfyjeoCJX6A8n7wh6',
'5WPHzzKAv8cx97KtHRUV96U8',
'7yZfKGzWigXxxRTygqAfHvyE',
]
),
],
attachments: [
Models::Shared::PostAtsCandidatesRequestBodyAttachment.new(
name: 'Frank Doe CV.txt',
content_type: 'text/plain',
data: 'SGkgdGhlcmUsIEtvbWJvIGlzIGN1cnJlbnRseSBoaXJpbmcgZW5naW5lZXJzIHRoYXQgbG92ZSB0byB3b3JrIG9uIGRldmVsb3BlciBwcm9kdWN0cy4=',
type: Models::Shared::PostAtsCandidatesRequestBodyAttachmentType::CV
),
]
))
unless res.post_ats_candidates_positive_response.nil?
# handle response
endcurl --request POST \
--url https://api.kombo.dev/v1/ats/candidates \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Integration-Id: <x-integration-id>' \
--data '
{
"candidate": {
"first_name": "Frank",
"last_name": "Doe",
"company": "Acme Inc.",
"title": "Head of Integrations",
"email_address": "frank.doe@example.com",
"phone_number": "+1-541-754-3010",
"gender": "MALE",
"salary_expectations": {
"amount": 100000,
"period": "YEAR"
},
"availability_date": "2021-01-01",
"location": {
"city": "New York",
"country": "US",
"state": "NY"
},
"social_links": [
{
"url": "https://www.linkedin.com/in/frank-doe-123456789/"
},
{
"url": "https://twitter.com/frankdoe"
}
]
},
"application": {
"job_id": "BDpgnpZ148nrGh4mYHNxJBgx",
"stage_id": "8x3YKRDcuRnwShdh96ShBNn1"
},
"attachments": [
{
"name": "Frank Doe CV.txt",
"data": "SGkgdGhlcmUsIEtvbWJvIGlzIGN1cnJlbnRseSBoaXJpbmcgZW5naW5lZXJzIHRoYXQgbG92ZSB0byB3b3JrIG9uIGRldmVsb3BlciBwcm9kdWN0cy4=",
"type": "CV",
"content_type": "text/plain"
}
],
"screening_question_answers": [
{
"question_id": "3phFBNXRweGnDmsU9o2vdPuQ",
"answer": "Yes"
},
{
"question_id": "EYJjhMQT3LtVKXnTbnRT8s6U",
"answer": [
"GUzE666zfyjeoCJX6A8n7wh6",
"5WPHzzKAv8cx97KtHRUV96U8",
"7yZfKGzWigXxxRTygqAfHvyE"
]
}
]
}
'const options = {
method: 'POST',
headers: {
'X-Integration-Id': '<x-integration-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
candidate: {
first_name: 'Frank',
last_name: 'Doe',
company: 'Acme Inc.',
title: 'Head of Integrations',
email_address: 'frank.doe@example.com',
phone_number: '+1-541-754-3010',
gender: 'MALE',
salary_expectations: {amount: 100000, period: 'YEAR'},
availability_date: '2021-01-01',
location: {city: 'New York', country: 'US', state: 'NY'},
social_links: [
{url: 'https://www.linkedin.com/in/frank-doe-123456789/'},
{url: 'https://twitter.com/frankdoe'}
]
},
application: {job_id: 'BDpgnpZ148nrGh4mYHNxJBgx', stage_id: '8x3YKRDcuRnwShdh96ShBNn1'},
attachments: [
{
name: 'Frank Doe CV.txt',
data: 'SGkgdGhlcmUsIEtvbWJvIGlzIGN1cnJlbnRseSBoaXJpbmcgZW5naW5lZXJzIHRoYXQgbG92ZSB0byB3b3JrIG9uIGRldmVsb3BlciBwcm9kdWN0cy4=',
type: 'CV',
content_type: 'text/plain'
}
],
screening_question_answers: [
{question_id: '3phFBNXRweGnDmsU9o2vdPuQ', answer: 'Yes'},
{
question_id: 'EYJjhMQT3LtVKXnTbnRT8s6U',
answer: [
'GUzE666zfyjeoCJX6A8n7wh6',
'5WPHzzKAv8cx97KtHRUV96U8',
'7yZfKGzWigXxxRTygqAfHvyE'
]
}
]
})
};
fetch('https://api.kombo.dev/v1/ats/candidates', 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",
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([
'candidate' => [
'first_name' => 'Frank',
'last_name' => 'Doe',
'company' => 'Acme Inc.',
'title' => 'Head of Integrations',
'email_address' => 'frank.doe@example.com',
'phone_number' => '+1-541-754-3010',
'gender' => 'MALE',
'salary_expectations' => [
'amount' => 100000,
'period' => 'YEAR'
],
'availability_date' => '2021-01-01',
'location' => [
'city' => 'New York',
'country' => 'US',
'state' => 'NY'
],
'social_links' => [
[
'url' => 'https://www.linkedin.com/in/frank-doe-123456789/'
],
[
'url' => 'https://twitter.com/frankdoe'
]
]
],
'application' => [
'job_id' => 'BDpgnpZ148nrGh4mYHNxJBgx',
'stage_id' => '8x3YKRDcuRnwShdh96ShBNn1'
],
'attachments' => [
[
'name' => 'Frank Doe CV.txt',
'data' => 'SGkgdGhlcmUsIEtvbWJvIGlzIGN1cnJlbnRseSBoaXJpbmcgZW5naW5lZXJzIHRoYXQgbG92ZSB0byB3b3JrIG9uIGRldmVsb3BlciBwcm9kdWN0cy4=',
'type' => 'CV',
'content_type' => 'text/plain'
]
],
'screening_question_answers' => [
[
'question_id' => '3phFBNXRweGnDmsU9o2vdPuQ',
'answer' => 'Yes'
],
[
'question_id' => 'EYJjhMQT3LtVKXnTbnRT8s6U',
'answer' => [
'GUzE666zfyjeoCJX6A8n7wh6',
'5WPHzzKAv8cx97KtHRUV96U8',
'7yZfKGzWigXxxRTygqAfHvyE'
]
]
]
]),
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"
payload := strings.NewReader("{\n \"candidate\": {\n \"first_name\": \"Frank\",\n \"last_name\": \"Doe\",\n \"company\": \"Acme Inc.\",\n \"title\": \"Head of Integrations\",\n \"email_address\": \"frank.doe@example.com\",\n \"phone_number\": \"+1-541-754-3010\",\n \"gender\": \"MALE\",\n \"salary_expectations\": {\n \"amount\": 100000,\n \"period\": \"YEAR\"\n },\n \"availability_date\": \"2021-01-01\",\n \"location\": {\n \"city\": \"New York\",\n \"country\": \"US\",\n \"state\": \"NY\"\n },\n \"social_links\": [\n {\n \"url\": \"https://www.linkedin.com/in/frank-doe-123456789/\"\n },\n {\n \"url\": \"https://twitter.com/frankdoe\"\n }\n ]\n },\n \"application\": {\n \"job_id\": \"BDpgnpZ148nrGh4mYHNxJBgx\",\n \"stage_id\": \"8x3YKRDcuRnwShdh96ShBNn1\"\n },\n \"attachments\": [\n {\n \"name\": \"Frank Doe CV.txt\",\n \"data\": \"SGkgdGhlcmUsIEtvbWJvIGlzIGN1cnJlbnRseSBoaXJpbmcgZW5naW5lZXJzIHRoYXQgbG92ZSB0byB3b3JrIG9uIGRldmVsb3BlciBwcm9kdWN0cy4=\",\n \"type\": \"CV\",\n \"content_type\": \"text/plain\"\n }\n ],\n \"screening_question_answers\": [\n {\n \"question_id\": \"3phFBNXRweGnDmsU9o2vdPuQ\",\n \"answer\": \"Yes\"\n },\n {\n \"question_id\": \"EYJjhMQT3LtVKXnTbnRT8s6U\",\n \"answer\": [\n \"GUzE666zfyjeoCJX6A8n7wh6\",\n \"5WPHzzKAv8cx97KtHRUV96U8\",\n \"7yZfKGzWigXxxRTygqAfHvyE\"\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")
.header("X-Integration-Id", "<x-integration-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"candidate\": {\n \"first_name\": \"Frank\",\n \"last_name\": \"Doe\",\n \"company\": \"Acme Inc.\",\n \"title\": \"Head of Integrations\",\n \"email_address\": \"frank.doe@example.com\",\n \"phone_number\": \"+1-541-754-3010\",\n \"gender\": \"MALE\",\n \"salary_expectations\": {\n \"amount\": 100000,\n \"period\": \"YEAR\"\n },\n \"availability_date\": \"2021-01-01\",\n \"location\": {\n \"city\": \"New York\",\n \"country\": \"US\",\n \"state\": \"NY\"\n },\n \"social_links\": [\n {\n \"url\": \"https://www.linkedin.com/in/frank-doe-123456789/\"\n },\n {\n \"url\": \"https://twitter.com/frankdoe\"\n }\n ]\n },\n \"application\": {\n \"job_id\": \"BDpgnpZ148nrGh4mYHNxJBgx\",\n \"stage_id\": \"8x3YKRDcuRnwShdh96ShBNn1\"\n },\n \"attachments\": [\n {\n \"name\": \"Frank Doe CV.txt\",\n \"data\": \"SGkgdGhlcmUsIEtvbWJvIGlzIGN1cnJlbnRseSBoaXJpbmcgZW5naW5lZXJzIHRoYXQgbG92ZSB0byB3b3JrIG9uIGRldmVsb3BlciBwcm9kdWN0cy4=\",\n \"type\": \"CV\",\n \"content_type\": \"text/plain\"\n }\n ],\n \"screening_question_answers\": [\n {\n \"question_id\": \"3phFBNXRweGnDmsU9o2vdPuQ\",\n \"answer\": \"Yes\"\n },\n {\n \"question_id\": \"EYJjhMQT3LtVKXnTbnRT8s6U\",\n \"answer\": [\n \"GUzE666zfyjeoCJX6A8n7wh6\",\n \"5WPHzzKAv8cx97KtHRUV96U8\",\n \"7yZfKGzWigXxxRTygqAfHvyE\"\n ]\n }\n ]\n}")
.asString();Create candidate
Create a new candidate and application for the specified job.
from kombo import Kombo
from kombo.utils import parse_datetime
with Kombo(
integration_id="workday:HWUTwvyx2wLoSUHphiWVrp28",
api_key="<YOUR_BEARER_TOKEN_HERE>",
) as k_client:
res = k_client.ats.create_candidate(candidate={
"first_name": "Frank",
"last_name": "Doe",
"email_address": "frank.doe@example.com",
"company": "Acme Inc.",
"title": "Head of Integrations",
"phone_number": "+1-541-754-3010",
"location": {
"city": "New York",
"country": "US",
"state": "NY",
},
"gender": "MALE",
"availability_date": parse_datetime("2021-01-01T00:00:00Z"),
"salary_expectations": {
"period": "YEAR",
"amount": 100000,
},
"social_links": [
{
"url": "https://www.linkedin.com/in/frank-doe-123456789/",
},
{
"url": "https://twitter.com/frankdoe",
},
],
}, application={
"job_id": "BDpgnpZ148nrGh4mYHNxJBgx",
"stage_id": "8x3YKRDcuRnwShdh96ShBNn1",
}, screening_question_answers=[
{
"question_id": "3phFBNXRweGnDmsU9o2vdPuQ",
"answer": "Yes",
},
{
"question_id": "EYJjhMQT3LtVKXnTbnRT8s6U",
"answer": [
"GUzE666zfyjeoCJX6A8n7wh6",
"5WPHzzKAv8cx97KtHRUV96U8",
"7yZfKGzWigXxxRTygqAfHvyE",
],
},
], attachments=[
{
"name": "Frank Doe CV.txt",
"content_type": "text/plain",
"data": "SGkgdGhlcmUsIEtvbWJvIGlzIGN1cnJlbnRseSBoaXJpbmcgZW5naW5lZXJzIHRoYXQgbG92ZSB0byB3b3JrIG9uIGRldmVsb3BlciBwcm9kdWN0cy4=",
"type": "CV",
},
])
# 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.createCandidate({
candidate: {
first_name: "Frank",
last_name: "Doe",
email_address: "frank.doe@example.com",
company: "Acme Inc.",
title: "Head of Integrations",
phone_number: "+1-541-754-3010",
location: {
city: "New York",
country: "US",
state: "NY",
},
gender: "MALE",
availability_date: new Date("2021-01-01T00:00:00Z"),
salary_expectations: {
period: "YEAR",
amount: 100000,
},
social_links: [
{
url: "https://www.linkedin.com/in/frank-doe-123456789/",
},
{
url: "https://twitter.com/frankdoe",
},
],
},
application: {
job_id: "BDpgnpZ148nrGh4mYHNxJBgx",
stage_id: "8x3YKRDcuRnwShdh96ShBNn1",
},
screening_question_answers: [
{
question_id: "3phFBNXRweGnDmsU9o2vdPuQ",
answer: "Yes",
},
{
question_id: "EYJjhMQT3LtVKXnTbnRT8s6U",
answer: [
"GUzE666zfyjeoCJX6A8n7wh6",
"5WPHzzKAv8cx97KtHRUV96U8",
"7yZfKGzWigXxxRTygqAfHvyE",
],
},
],
attachments: [
{
name: "Frank Doe CV.txt",
content_type: "text/plain",
data: "SGkgdGhlcmUsIEtvbWJvIGlzIGN1cnJlbnRseSBoaXJpbmcgZW5naW5lZXJzIHRoYXQgbG92ZSB0byB3b3JrIG9uIGRldmVsb3BlciBwcm9kdWN0cy4=",
type: "CV",
},
],
});
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.create_candidate(body: Models::Shared::PostAtsCandidatesRequestBody.new(
candidate: Models::Shared::PostAtsCandidatesRequestBodyCandidate.new(
first_name: 'Frank',
last_name: 'Doe',
email_address: 'frank.doe@example.com',
company: 'Acme Inc.',
title: 'Head of Integrations',
phone_number: '+1-541-754-3010',
location: Models::Shared::PostAtsCandidatesRequestBodyLocation.new(
city: 'New York',
country: 'US',
state: 'NY'
),
gender: Models::Shared::PostAtsCandidatesRequestBodyGender::MALE,
availability_date: DateTime.iso8601('2021-01-01T00:00:00Z'),
salary_expectations: Models::Shared::PostAtsCandidatesRequestBodySalaryExpectations.new(
period: Models::Shared::PostAtsCandidatesRequestBodyPeriod::YEAR,
amount: 100_000.0
),
social_links: [
Models::Shared::PostAtsCandidatesRequestBodySocialLink.new(
url: 'https://www.linkedin.com/in/frank-doe-123456789/'
),
Models::Shared::PostAtsCandidatesRequestBodySocialLink.new(
url: 'https://twitter.com/frankdoe'
),
]
),
application: Models::Shared::PostAtsCandidatesRequestBodyApplication.new(
job_id: 'BDpgnpZ148nrGh4mYHNxJBgx',
stage_id: '8x3YKRDcuRnwShdh96ShBNn1'
),
screening_question_answers: [
Models::Shared::PostAtsCandidatesRequestBodyScreeningQuestionAnswer.new(
question_id: '3phFBNXRweGnDmsU9o2vdPuQ',
answer: 'Yes'
),
Models::Shared::PostAtsCandidatesRequestBodyScreeningQuestionAnswer.new(
question_id: 'EYJjhMQT3LtVKXnTbnRT8s6U',
answer: [
'GUzE666zfyjeoCJX6A8n7wh6',
'5WPHzzKAv8cx97KtHRUV96U8',
'7yZfKGzWigXxxRTygqAfHvyE',
]
),
],
attachments: [
Models::Shared::PostAtsCandidatesRequestBodyAttachment.new(
name: 'Frank Doe CV.txt',
content_type: 'text/plain',
data: 'SGkgdGhlcmUsIEtvbWJvIGlzIGN1cnJlbnRseSBoaXJpbmcgZW5naW5lZXJzIHRoYXQgbG92ZSB0byB3b3JrIG9uIGRldmVsb3BlciBwcm9kdWN0cy4=',
type: Models::Shared::PostAtsCandidatesRequestBodyAttachmentType::CV
),
]
))
unless res.post_ats_candidates_positive_response.nil?
# handle response
endcurl --request POST \
--url https://api.kombo.dev/v1/ats/candidates \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Integration-Id: <x-integration-id>' \
--data '
{
"candidate": {
"first_name": "Frank",
"last_name": "Doe",
"company": "Acme Inc.",
"title": "Head of Integrations",
"email_address": "frank.doe@example.com",
"phone_number": "+1-541-754-3010",
"gender": "MALE",
"salary_expectations": {
"amount": 100000,
"period": "YEAR"
},
"availability_date": "2021-01-01",
"location": {
"city": "New York",
"country": "US",
"state": "NY"
},
"social_links": [
{
"url": "https://www.linkedin.com/in/frank-doe-123456789/"
},
{
"url": "https://twitter.com/frankdoe"
}
]
},
"application": {
"job_id": "BDpgnpZ148nrGh4mYHNxJBgx",
"stage_id": "8x3YKRDcuRnwShdh96ShBNn1"
},
"attachments": [
{
"name": "Frank Doe CV.txt",
"data": "SGkgdGhlcmUsIEtvbWJvIGlzIGN1cnJlbnRseSBoaXJpbmcgZW5naW5lZXJzIHRoYXQgbG92ZSB0byB3b3JrIG9uIGRldmVsb3BlciBwcm9kdWN0cy4=",
"type": "CV",
"content_type": "text/plain"
}
],
"screening_question_answers": [
{
"question_id": "3phFBNXRweGnDmsU9o2vdPuQ",
"answer": "Yes"
},
{
"question_id": "EYJjhMQT3LtVKXnTbnRT8s6U",
"answer": [
"GUzE666zfyjeoCJX6A8n7wh6",
"5WPHzzKAv8cx97KtHRUV96U8",
"7yZfKGzWigXxxRTygqAfHvyE"
]
}
]
}
'const options = {
method: 'POST',
headers: {
'X-Integration-Id': '<x-integration-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
candidate: {
first_name: 'Frank',
last_name: 'Doe',
company: 'Acme Inc.',
title: 'Head of Integrations',
email_address: 'frank.doe@example.com',
phone_number: '+1-541-754-3010',
gender: 'MALE',
salary_expectations: {amount: 100000, period: 'YEAR'},
availability_date: '2021-01-01',
location: {city: 'New York', country: 'US', state: 'NY'},
social_links: [
{url: 'https://www.linkedin.com/in/frank-doe-123456789/'},
{url: 'https://twitter.com/frankdoe'}
]
},
application: {job_id: 'BDpgnpZ148nrGh4mYHNxJBgx', stage_id: '8x3YKRDcuRnwShdh96ShBNn1'},
attachments: [
{
name: 'Frank Doe CV.txt',
data: 'SGkgdGhlcmUsIEtvbWJvIGlzIGN1cnJlbnRseSBoaXJpbmcgZW5naW5lZXJzIHRoYXQgbG92ZSB0byB3b3JrIG9uIGRldmVsb3BlciBwcm9kdWN0cy4=',
type: 'CV',
content_type: 'text/plain'
}
],
screening_question_answers: [
{question_id: '3phFBNXRweGnDmsU9o2vdPuQ', answer: 'Yes'},
{
question_id: 'EYJjhMQT3LtVKXnTbnRT8s6U',
answer: [
'GUzE666zfyjeoCJX6A8n7wh6',
'5WPHzzKAv8cx97KtHRUV96U8',
'7yZfKGzWigXxxRTygqAfHvyE'
]
}
]
})
};
fetch('https://api.kombo.dev/v1/ats/candidates', 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",
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([
'candidate' => [
'first_name' => 'Frank',
'last_name' => 'Doe',
'company' => 'Acme Inc.',
'title' => 'Head of Integrations',
'email_address' => 'frank.doe@example.com',
'phone_number' => '+1-541-754-3010',
'gender' => 'MALE',
'salary_expectations' => [
'amount' => 100000,
'period' => 'YEAR'
],
'availability_date' => '2021-01-01',
'location' => [
'city' => 'New York',
'country' => 'US',
'state' => 'NY'
],
'social_links' => [
[
'url' => 'https://www.linkedin.com/in/frank-doe-123456789/'
],
[
'url' => 'https://twitter.com/frankdoe'
]
]
],
'application' => [
'job_id' => 'BDpgnpZ148nrGh4mYHNxJBgx',
'stage_id' => '8x3YKRDcuRnwShdh96ShBNn1'
],
'attachments' => [
[
'name' => 'Frank Doe CV.txt',
'data' => 'SGkgdGhlcmUsIEtvbWJvIGlzIGN1cnJlbnRseSBoaXJpbmcgZW5naW5lZXJzIHRoYXQgbG92ZSB0byB3b3JrIG9uIGRldmVsb3BlciBwcm9kdWN0cy4=',
'type' => 'CV',
'content_type' => 'text/plain'
]
],
'screening_question_answers' => [
[
'question_id' => '3phFBNXRweGnDmsU9o2vdPuQ',
'answer' => 'Yes'
],
[
'question_id' => 'EYJjhMQT3LtVKXnTbnRT8s6U',
'answer' => [
'GUzE666zfyjeoCJX6A8n7wh6',
'5WPHzzKAv8cx97KtHRUV96U8',
'7yZfKGzWigXxxRTygqAfHvyE'
]
]
]
]),
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"
payload := strings.NewReader("{\n \"candidate\": {\n \"first_name\": \"Frank\",\n \"last_name\": \"Doe\",\n \"company\": \"Acme Inc.\",\n \"title\": \"Head of Integrations\",\n \"email_address\": \"frank.doe@example.com\",\n \"phone_number\": \"+1-541-754-3010\",\n \"gender\": \"MALE\",\n \"salary_expectations\": {\n \"amount\": 100000,\n \"period\": \"YEAR\"\n },\n \"availability_date\": \"2021-01-01\",\n \"location\": {\n \"city\": \"New York\",\n \"country\": \"US\",\n \"state\": \"NY\"\n },\n \"social_links\": [\n {\n \"url\": \"https://www.linkedin.com/in/frank-doe-123456789/\"\n },\n {\n \"url\": \"https://twitter.com/frankdoe\"\n }\n ]\n },\n \"application\": {\n \"job_id\": \"BDpgnpZ148nrGh4mYHNxJBgx\",\n \"stage_id\": \"8x3YKRDcuRnwShdh96ShBNn1\"\n },\n \"attachments\": [\n {\n \"name\": \"Frank Doe CV.txt\",\n \"data\": \"SGkgdGhlcmUsIEtvbWJvIGlzIGN1cnJlbnRseSBoaXJpbmcgZW5naW5lZXJzIHRoYXQgbG92ZSB0byB3b3JrIG9uIGRldmVsb3BlciBwcm9kdWN0cy4=\",\n \"type\": \"CV\",\n \"content_type\": \"text/plain\"\n }\n ],\n \"screening_question_answers\": [\n {\n \"question_id\": \"3phFBNXRweGnDmsU9o2vdPuQ\",\n \"answer\": \"Yes\"\n },\n {\n \"question_id\": \"EYJjhMQT3LtVKXnTbnRT8s6U\",\n \"answer\": [\n \"GUzE666zfyjeoCJX6A8n7wh6\",\n \"5WPHzzKAv8cx97KtHRUV96U8\",\n \"7yZfKGzWigXxxRTygqAfHvyE\"\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")
.header("X-Integration-Id", "<x-integration-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"candidate\": {\n \"first_name\": \"Frank\",\n \"last_name\": \"Doe\",\n \"company\": \"Acme Inc.\",\n \"title\": \"Head of Integrations\",\n \"email_address\": \"frank.doe@example.com\",\n \"phone_number\": \"+1-541-754-3010\",\n \"gender\": \"MALE\",\n \"salary_expectations\": {\n \"amount\": 100000,\n \"period\": \"YEAR\"\n },\n \"availability_date\": \"2021-01-01\",\n \"location\": {\n \"city\": \"New York\",\n \"country\": \"US\",\n \"state\": \"NY\"\n },\n \"social_links\": [\n {\n \"url\": \"https://www.linkedin.com/in/frank-doe-123456789/\"\n },\n {\n \"url\": \"https://twitter.com/frankdoe\"\n }\n ]\n },\n \"application\": {\n \"job_id\": \"BDpgnpZ148nrGh4mYHNxJBgx\",\n \"stage_id\": \"8x3YKRDcuRnwShdh96ShBNn1\"\n },\n \"attachments\": [\n {\n \"name\": \"Frank Doe CV.txt\",\n \"data\": \"SGkgdGhlcmUsIEtvbWJvIGlzIGN1cnJlbnRseSBoaXJpbmcgZW5naW5lZXJzIHRoYXQgbG92ZSB0byB3b3JrIG9uIGRldmVsb3BlciBwcm9kdWN0cy4=\",\n \"type\": \"CV\",\n \"content_type\": \"text/plain\"\n }\n ],\n \"screening_question_answers\": [\n {\n \"question_id\": \"3phFBNXRweGnDmsU9o2vdPuQ\",\n \"answer\": \"Yes\"\n },\n {\n \"question_id\": \"EYJjhMQT3LtVKXnTbnRT8s6U\",\n \"answer\": [\n \"GUzE666zfyjeoCJX6A8n7wh6\",\n \"5WPHzzKAv8cx97KtHRUV96U8\",\n \"7yZfKGzWigXxxRTygqAfHvyE\"\n ]\n }\n ]\n}")
.asString();Supported integrations
Supported integrations
Workday
SAP SuccessFactors
SmartRecruiters
Factorial
Oracle Recruiting Cloud
Lever
iCIMS
Cornerstone TalentLink
Tellent Recruitee
RecruiterFlow
Greenhouse (V1)
Greenhouse (V3)
Greenhouse Job Board
Teamtailor
Teamtailor Job Boards
Ashby
CEGID TalentSoft FrontOffice
concludis
Talention
P&I Loga
Onlyfy
Personio
UKG Pro
UKG Ready
Oracle Taleo
rexx systems
AFAS Software
BambooHR
Bullhorn
Bullhorn Login
Workable
Jobvite
Fountain
Softgarden
Softgarden Partner
Pinpoint
Welcome to the Jungle
d.vinci
JOIN
Sage HR
TRAFFIT
eRecruiter
Abacus Umantis
Haufe Umantis
Jobylon
Taleez
HR WORKS
OTYS
Zoho Recruit
Ceipal
Eploy
JobDiva
CareerPlug
Perview
Eightfold
Paycor
Avature
Apploi
Phenom
Paradox
Heyrecruit
RECRU
Recruit CRM
JazzHR
BITE
Brass Ring
Homerun
Mysolution
Carerix
HR Office
Talent Clue
InRecruiting by Zucchetti
JobAdder
Ubeeo
Connexys By Bullhorn
HR4YOU
Cornerstone OnDemand
Zvoove Recruit
Odoo
Spark Hire Recruit
Compleet (Pitcher API)
Compleet (only PersoProfiler)
Gem
Laura
Coveto (REST API)
Coveto (legacy SOAP API)
Mercury
Crelate
Manatal
Avionté
MHM HR
Asymbl
Breezy HR
Flatchr
Dayforce
Digital Recruiters
ApplicantStack
ReachMee
TalentAdore
Kombo Sandbox
GuideCom
Spott
Logic Melon
Loxo
Kula
TrackerRMS
Databites
Example Request Body
{
"candidate": {
"first_name": "Frank",
"last_name": "Doe",
"company": "Acme Inc.",
"title": "Head of Integrations",
"email_address": "frank.doe@example.com",
"phone_number": "+1-541-754-3010",
"gender": "MALE",
"salary_expectations": {
"amount": 100000,
"period": "YEAR"
},
"availability_date": "2021-01-01",
"location": {
"city": "New York",
"country": "US",
"state": "NY"
},
"social_links": [
{
"url": "https://www.linkedin.com/in/frank-doe-123456789/"
},
{
"url": "https://twitter.com/frankdoe"
}
]
},
"application": {
"job_id": "BDpgnpZ148nrGh4mYHNxJBgx",
"stage_id": "8x3YKRDcuRnwShdh96ShBNn1"
},
"attachments": [
{
"name": "Frank Doe CV.txt",
"data": "SGkgdGhlcmUsIEtvbWJvIGlzIGN1cnJlbnRseSBoaXJpbmcgZW5naW5lZXJzIHRoYXQgbG92ZSB0byB3b3JrIG9uIGRldmVsb3BlciBwcm9kdWN0cy4=",
"type": "CV",
"content_type": "text/plain"
}
],
"screening_question_answers": [
{
"question_id": "3phFBNXRweGnDmsU9o2vdPuQ",
"answer": "Yes"
},
{
"question_id": "EYJjhMQT3LtVKXnTbnRT8s6U",
"answer": [
"GUzE666zfyjeoCJX6A8n7wh6",
"5WPHzzKAv8cx97KtHRUV96U8",
"7yZfKGzWigXxxRTygqAfHvyE"
]
}
],
"remote_fields": {}
}
Authorizations
Headers
ID of the integration you want to interact with.
Body
POST /ats/candidates Request body
Show child attributes
Show child attributes
Currently, every candidate has one application. If you are interested in talent pools, please contact Kombo.
Show child attributes
Show child attributes
Array of answers to screening questions. Currently, not all question types are supported, and unsupported ones will not be submitted.
The available questions for a job can be retrieved from the get jobs endpoint. The answers will be validated based on the format of the questions. Make sure to follow this schema to avoid errors.
Show child attributes
Show child attributes
[ { "question_id": "D8yPrjXXvA2XeBksTmrVvKSn", "answer": "Yes" } ]
An array of the attachments you would like upload.
Show child attributes
Show child attributes
(⚠️ Deprecated - Use automatic source writing instead) Optional source information that will be attached to the candidate. If you're a job board or recruiting service, you can use this to make sure your customers can see which candidates came from you.
This is deprecated because writing sources requires users to do some setup in most ATSs.
Show child attributes
Show child attributes
Credit the recruiter or team member who sourced this candidate.
While the source field tracks the channel/platform (e.g., "Awesome Jobboard"), the sourced_by field tracks the individual person responsible for finding the candidate.
Show child attributes
Show child attributes
Optional GDPR consent information required in some jurisdictions (like the Czech Republic or Slovakia).
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 Positive response
"success"Show child attributes
Show child attributes
{ "id": "26vafvWSRmbhNcxJYqjCzuJg", "remote_id": "32", "first_name": "John", "last_name": "Doe", "company": "Acme, Inc.", "title": "Head of Marketing", "confidential": false, "source": "Employee Referral", "phone_numbers": [ { "phone_number": "+1-541-754-3010", "type": "HOME" } ], "email_addresses": [ { "email_address": "john.doe@example.com", "type": "PRIVATE" } ], "social_media": [ { "link": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "type": "YOUTUBE", "username": null } ], "location": { "city": "Berlin", "country": "DE", "raw": "Berlin, Germany", "state": "Berlin", "street_1": "Lohmühlenstraße 65", "street_2": null, "zip_code": "12435" }, "custom_fields": {}, "integration_fields": [], "remote_url": "https://app.greenhouse.io/people/32", "remote_created_at": "2022-04-02T00:00:00.000Z", "remote_updated_at": "2022-04-04T00:00:00.000Z", "remote_data": null, "changed_at": "2022-04-04T00:00:00.000Z", "remote_deleted_at": null, "applications": [ { "id": "H77fDF8uvEzGNPRubiz5DvQ7", "remote_id": "32", "outcome": "HIRED", "rejection_reason_name": null, "rejected_at": null, "remote_url": "https://app.greenhouse.io/applications/32", "changed_at": "2022-04-04T00:00:00.000Z", "remote_created_at": "2022-04-02T00:00:00.000Z", "remote_updated_at": "2022-04-04T00:00:00.000Z", "current_stage": { "id": "5J7L4b48wBfffYwek9Az9pkM", "name": "Initial Screening", "remote_id": "32", "index": 2 }, "job": { "id": "H5daSm8e85Dmvmne3wLeCPhX", "name": "Backend Engineer", "remote_id": "32" } } ], "tags": [ { "id": "26vafvWSRmbhNcxJYqjCzuJg", "name": "High Potential", "remote_id": "32" } ] }
These are the interaction warnings that are shown in the dashboard. They are meant to provide debug information to you. We recommend logging them to the console.
Show child attributes
Show child attributes
Was this page helpful?