Create Candidate
curl --request POST \
--url https://api.bindbee.dev/api/ats/v1/candidates \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-connector-token: <x-connector-token>' \
--data '
{
"data": {
"first_name": "John",
"last_name": "Doe",
"company": "Google",
"title": "SOFTWARE ENGINEER",
"is_private": true,
"can_email": true,
"locations": "San Francisco",
"phone_numbers": "123-456-7890",
"email_addresses": "john@doe.com",
"urls": {
"type": "LINKEDIN",
"value": "https://www.linkedin.com/in/johndoe"
},
"tags": "JUNIOR",
"applications": "018b4bfb-5ece-70b1-ad5e-862a9433aa65",
"attachments": "018b4bfb-5ece-70b1-ad5e-862a9433aa65",
"avatar": "https://www.example.com/avatar.jpg",
"job_interview_stage_id": "018b4bfb-5ece-70b1-ad5e-862a9433aa65",
"job_id": "018b4bfb-5ece-70b1-ad5e-862a9433aa65"
},
"remote_user_id": "<string>",
"job_requisition_id": "<string>"
}
'import requests
url = "https://api.bindbee.dev/api/ats/v1/candidates"
payload = {
"data": {
"first_name": "John",
"last_name": "Doe",
"company": "Google",
"title": "SOFTWARE ENGINEER",
"is_private": True,
"can_email": True,
"locations": "San Francisco",
"phone_numbers": "123-456-7890",
"email_addresses": "john@doe.com",
"urls": {
"type": "LINKEDIN",
"value": "https://www.linkedin.com/in/johndoe"
},
"tags": "JUNIOR",
"applications": "018b4bfb-5ece-70b1-ad5e-862a9433aa65",
"attachments": "018b4bfb-5ece-70b1-ad5e-862a9433aa65",
"avatar": "https://www.example.com/avatar.jpg",
"job_interview_stage_id": "018b4bfb-5ece-70b1-ad5e-862a9433aa65",
"job_id": "018b4bfb-5ece-70b1-ad5e-862a9433aa65"
},
"remote_user_id": "<string>",
"job_requisition_id": "<string>"
}
headers = {
"x-connector-token": "<x-connector-token>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-connector-token': '<x-connector-token>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
data: {
first_name: 'John',
last_name: 'Doe',
company: 'Google',
title: 'SOFTWARE ENGINEER',
is_private: true,
can_email: true,
locations: 'San Francisco',
phone_numbers: '123-456-7890',
email_addresses: 'john@doe.com',
urls: {type: 'LINKEDIN', value: 'https://www.linkedin.com/in/johndoe'},
tags: 'JUNIOR',
applications: '018b4bfb-5ece-70b1-ad5e-862a9433aa65',
attachments: '018b4bfb-5ece-70b1-ad5e-862a9433aa65',
avatar: 'https://www.example.com/avatar.jpg',
job_interview_stage_id: '018b4bfb-5ece-70b1-ad5e-862a9433aa65',
job_id: '018b4bfb-5ece-70b1-ad5e-862a9433aa65'
},
remote_user_id: '<string>',
job_requisition_id: '<string>'
})
};
fetch('https://api.bindbee.dev/api/ats/v1/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.bindbee.dev/api/ats/v1/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([
'data' => [
'first_name' => 'John',
'last_name' => 'Doe',
'company' => 'Google',
'title' => 'SOFTWARE ENGINEER',
'is_private' => true,
'can_email' => true,
'locations' => 'San Francisco',
'phone_numbers' => '123-456-7890',
'email_addresses' => 'john@doe.com',
'urls' => [
'type' => 'LINKEDIN',
'value' => 'https://www.linkedin.com/in/johndoe'
],
'tags' => 'JUNIOR',
'applications' => '018b4bfb-5ece-70b1-ad5e-862a9433aa65',
'attachments' => '018b4bfb-5ece-70b1-ad5e-862a9433aa65',
'avatar' => 'https://www.example.com/avatar.jpg',
'job_interview_stage_id' => '018b4bfb-5ece-70b1-ad5e-862a9433aa65',
'job_id' => '018b4bfb-5ece-70b1-ad5e-862a9433aa65'
],
'remote_user_id' => '<string>',
'job_requisition_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-connector-token: <x-connector-token>"
],
]);
$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.bindbee.dev/api/ats/v1/candidates"
payload := strings.NewReader("{\n \"data\": {\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"company\": \"Google\",\n \"title\": \"SOFTWARE ENGINEER\",\n \"is_private\": true,\n \"can_email\": true,\n \"locations\": \"San Francisco\",\n \"phone_numbers\": \"123-456-7890\",\n \"email_addresses\": \"john@doe.com\",\n \"urls\": {\n \"type\": \"LINKEDIN\",\n \"value\": \"https://www.linkedin.com/in/johndoe\"\n },\n \"tags\": \"JUNIOR\",\n \"applications\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\",\n \"attachments\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\",\n \"avatar\": \"https://www.example.com/avatar.jpg\",\n \"job_interview_stage_id\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\",\n \"job_id\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\"\n },\n \"remote_user_id\": \"<string>\",\n \"job_requisition_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-connector-token", "<x-connector-token>")
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.bindbee.dev/api/ats/v1/candidates")
.header("x-connector-token", "<x-connector-token>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"company\": \"Google\",\n \"title\": \"SOFTWARE ENGINEER\",\n \"is_private\": true,\n \"can_email\": true,\n \"locations\": \"San Francisco\",\n \"phone_numbers\": \"123-456-7890\",\n \"email_addresses\": \"john@doe.com\",\n \"urls\": {\n \"type\": \"LINKEDIN\",\n \"value\": \"https://www.linkedin.com/in/johndoe\"\n },\n \"tags\": \"JUNIOR\",\n \"applications\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\",\n \"attachments\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\",\n \"avatar\": \"https://www.example.com/avatar.jpg\",\n \"job_interview_stage_id\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\",\n \"job_id\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\"\n },\n \"remote_user_id\": \"<string>\",\n \"job_requisition_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bindbee.dev/api/ats/v1/candidates")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-connector-token"] = '<x-connector-token>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": {\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"company\": \"Google\",\n \"title\": \"SOFTWARE ENGINEER\",\n \"is_private\": true,\n \"can_email\": true,\n \"locations\": \"San Francisco\",\n \"phone_numbers\": \"123-456-7890\",\n \"email_addresses\": \"john@doe.com\",\n \"urls\": {\n \"type\": \"LINKEDIN\",\n \"value\": \"https://www.linkedin.com/in/johndoe\"\n },\n \"tags\": \"JUNIOR\",\n \"applications\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\",\n \"attachments\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\",\n \"avatar\": \"https://www.example.com/avatar.jpg\",\n \"job_interview_stage_id\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\",\n \"job_id\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\"\n },\n \"remote_user_id\": \"<string>\",\n \"job_requisition_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Candidate
Create Candidate
Creates a Candidate object with the given values.
POST
/
api
/
ats
/
v1
/
candidates
Create Candidate
curl --request POST \
--url https://api.bindbee.dev/api/ats/v1/candidates \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-connector-token: <x-connector-token>' \
--data '
{
"data": {
"first_name": "John",
"last_name": "Doe",
"company": "Google",
"title": "SOFTWARE ENGINEER",
"is_private": true,
"can_email": true,
"locations": "San Francisco",
"phone_numbers": "123-456-7890",
"email_addresses": "john@doe.com",
"urls": {
"type": "LINKEDIN",
"value": "https://www.linkedin.com/in/johndoe"
},
"tags": "JUNIOR",
"applications": "018b4bfb-5ece-70b1-ad5e-862a9433aa65",
"attachments": "018b4bfb-5ece-70b1-ad5e-862a9433aa65",
"avatar": "https://www.example.com/avatar.jpg",
"job_interview_stage_id": "018b4bfb-5ece-70b1-ad5e-862a9433aa65",
"job_id": "018b4bfb-5ece-70b1-ad5e-862a9433aa65"
},
"remote_user_id": "<string>",
"job_requisition_id": "<string>"
}
'import requests
url = "https://api.bindbee.dev/api/ats/v1/candidates"
payload = {
"data": {
"first_name": "John",
"last_name": "Doe",
"company": "Google",
"title": "SOFTWARE ENGINEER",
"is_private": True,
"can_email": True,
"locations": "San Francisco",
"phone_numbers": "123-456-7890",
"email_addresses": "john@doe.com",
"urls": {
"type": "LINKEDIN",
"value": "https://www.linkedin.com/in/johndoe"
},
"tags": "JUNIOR",
"applications": "018b4bfb-5ece-70b1-ad5e-862a9433aa65",
"attachments": "018b4bfb-5ece-70b1-ad5e-862a9433aa65",
"avatar": "https://www.example.com/avatar.jpg",
"job_interview_stage_id": "018b4bfb-5ece-70b1-ad5e-862a9433aa65",
"job_id": "018b4bfb-5ece-70b1-ad5e-862a9433aa65"
},
"remote_user_id": "<string>",
"job_requisition_id": "<string>"
}
headers = {
"x-connector-token": "<x-connector-token>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-connector-token': '<x-connector-token>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
data: {
first_name: 'John',
last_name: 'Doe',
company: 'Google',
title: 'SOFTWARE ENGINEER',
is_private: true,
can_email: true,
locations: 'San Francisco',
phone_numbers: '123-456-7890',
email_addresses: 'john@doe.com',
urls: {type: 'LINKEDIN', value: 'https://www.linkedin.com/in/johndoe'},
tags: 'JUNIOR',
applications: '018b4bfb-5ece-70b1-ad5e-862a9433aa65',
attachments: '018b4bfb-5ece-70b1-ad5e-862a9433aa65',
avatar: 'https://www.example.com/avatar.jpg',
job_interview_stage_id: '018b4bfb-5ece-70b1-ad5e-862a9433aa65',
job_id: '018b4bfb-5ece-70b1-ad5e-862a9433aa65'
},
remote_user_id: '<string>',
job_requisition_id: '<string>'
})
};
fetch('https://api.bindbee.dev/api/ats/v1/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.bindbee.dev/api/ats/v1/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([
'data' => [
'first_name' => 'John',
'last_name' => 'Doe',
'company' => 'Google',
'title' => 'SOFTWARE ENGINEER',
'is_private' => true,
'can_email' => true,
'locations' => 'San Francisco',
'phone_numbers' => '123-456-7890',
'email_addresses' => 'john@doe.com',
'urls' => [
'type' => 'LINKEDIN',
'value' => 'https://www.linkedin.com/in/johndoe'
],
'tags' => 'JUNIOR',
'applications' => '018b4bfb-5ece-70b1-ad5e-862a9433aa65',
'attachments' => '018b4bfb-5ece-70b1-ad5e-862a9433aa65',
'avatar' => 'https://www.example.com/avatar.jpg',
'job_interview_stage_id' => '018b4bfb-5ece-70b1-ad5e-862a9433aa65',
'job_id' => '018b4bfb-5ece-70b1-ad5e-862a9433aa65'
],
'remote_user_id' => '<string>',
'job_requisition_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-connector-token: <x-connector-token>"
],
]);
$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.bindbee.dev/api/ats/v1/candidates"
payload := strings.NewReader("{\n \"data\": {\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"company\": \"Google\",\n \"title\": \"SOFTWARE ENGINEER\",\n \"is_private\": true,\n \"can_email\": true,\n \"locations\": \"San Francisco\",\n \"phone_numbers\": \"123-456-7890\",\n \"email_addresses\": \"john@doe.com\",\n \"urls\": {\n \"type\": \"LINKEDIN\",\n \"value\": \"https://www.linkedin.com/in/johndoe\"\n },\n \"tags\": \"JUNIOR\",\n \"applications\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\",\n \"attachments\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\",\n \"avatar\": \"https://www.example.com/avatar.jpg\",\n \"job_interview_stage_id\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\",\n \"job_id\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\"\n },\n \"remote_user_id\": \"<string>\",\n \"job_requisition_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-connector-token", "<x-connector-token>")
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.bindbee.dev/api/ats/v1/candidates")
.header("x-connector-token", "<x-connector-token>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"company\": \"Google\",\n \"title\": \"SOFTWARE ENGINEER\",\n \"is_private\": true,\n \"can_email\": true,\n \"locations\": \"San Francisco\",\n \"phone_numbers\": \"123-456-7890\",\n \"email_addresses\": \"john@doe.com\",\n \"urls\": {\n \"type\": \"LINKEDIN\",\n \"value\": \"https://www.linkedin.com/in/johndoe\"\n },\n \"tags\": \"JUNIOR\",\n \"applications\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\",\n \"attachments\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\",\n \"avatar\": \"https://www.example.com/avatar.jpg\",\n \"job_interview_stage_id\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\",\n \"job_id\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\"\n },\n \"remote_user_id\": \"<string>\",\n \"job_requisition_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bindbee.dev/api/ats/v1/candidates")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-connector-token"] = '<x-connector-token>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": {\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"company\": \"Google\",\n \"title\": \"SOFTWARE ENGINEER\",\n \"is_private\": true,\n \"can_email\": true,\n \"locations\": \"San Francisco\",\n \"phone_numbers\": \"123-456-7890\",\n \"email_addresses\": \"john@doe.com\",\n \"urls\": {\n \"type\": \"LINKEDIN\",\n \"value\": \"https://www.linkedin.com/in/johndoe\"\n },\n \"tags\": \"JUNIOR\",\n \"applications\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\",\n \"attachments\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\",\n \"avatar\": \"https://www.example.com/avatar.jpg\",\n \"job_interview_stage_id\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\",\n \"job_id\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\"\n },\n \"remote_user_id\": \"<string>\",\n \"job_requisition_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}To create an candidate in ATS, you first need to fetch the request body structure that ATS expects. This structure varies based on the ATS provider (e.g., Greenhouse, Teamtailor, BambooHR). The request body consists of three parts:
- Model Keys: Standard attributes required for all candidate.
- Additional Attributes: Specific fields required by the chosen ATS.
- Custom Fields: Extra metadata for specific implementations.
allowed_values, meaning only specific values are permitted based on the customer’s ATS configuration. Ensure you check for these constraints before submitting the request.
Step 1: Fetch the Required Request Body
Before calling the Create Candidate API, you need to get the request structure using the Meta Create Candidate API.Step 2: Create an Candidate
Once you have the request body structure, use the Create Candidate API to send the request.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Body
application/json
Response
Successful Response
Was this page helpful?
⌘I