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: <api-key>' \
--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": "018b4bfb-5ece-70b1-ad5e-862a9433aa65",
"job_requisition_id": "R-00007"
}
'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": "018b4bfb-5ece-70b1-ad5e-862a9433aa65",
"job_requisition_id": "R-00007"
}
headers = {
"Authorization": "Bearer <token>",
"X-Connector-Token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
Authorization: 'Bearer <token>',
'X-Connector-Token': '<api-key>',
'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: '018b4bfb-5ece-70b1-ad5e-862a9433aa65',
job_requisition_id: 'R-00007'
})
};
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' => '018b4bfb-5ece-70b1-ad5e-862a9433aa65',
'job_requisition_id' => 'R-00007'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"X-Connector-Token: <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.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\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\",\n \"job_requisition_id\": \"R-00007\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("X-Connector-Token", "<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.bindbee.dev/api/ats/v1/candidates")
.header("Authorization", "Bearer <token>")
.header("X-Connector-Token", "<api-key>")
.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\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\",\n \"job_requisition_id\": \"R-00007\"\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["Authorization"] = 'Bearer <token>'
request["X-Connector-Token"] = '<api-key>'
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\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\",\n \"job_requisition_id\": \"R-00007\"\n}"
response = http.request(request)
puts response.read_body{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}{
"detail": "<string>"
}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: <api-key>' \
--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": "018b4bfb-5ece-70b1-ad5e-862a9433aa65",
"job_requisition_id": "R-00007"
}
'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": "018b4bfb-5ece-70b1-ad5e-862a9433aa65",
"job_requisition_id": "R-00007"
}
headers = {
"Authorization": "Bearer <token>",
"X-Connector-Token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
Authorization: 'Bearer <token>',
'X-Connector-Token': '<api-key>',
'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: '018b4bfb-5ece-70b1-ad5e-862a9433aa65',
job_requisition_id: 'R-00007'
})
};
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' => '018b4bfb-5ece-70b1-ad5e-862a9433aa65',
'job_requisition_id' => 'R-00007'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"X-Connector-Token: <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.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\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\",\n \"job_requisition_id\": \"R-00007\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("X-Connector-Token", "<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.bindbee.dev/api/ats/v1/candidates")
.header("Authorization", "Bearer <token>")
.header("X-Connector-Token", "<api-key>")
.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\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\",\n \"job_requisition_id\": \"R-00007\"\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["Authorization"] = 'Bearer <token>'
request["X-Connector-Token"] = '<api-key>'
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\": \"018b4bfb-5ece-70b1-ad5e-862a9433aa65\",\n \"job_requisition_id\": \"R-00007\"\n}"
response = http.request(request)
puts response.read_body{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}{
"detail": "<string>"
}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
Your Bindbee API key, sent as Authorization: Bearer <BINDBEE_API_KEY>. Required on every request.
The connector token for one customer's connection. This is not your Bindbee API key. Required on requests that read or write a single customer's data.
Body
application/json
Response
Successful Response
Was this page helpful?