curl --request POST \
--url https://partner-api.taptalent.io/v1/partner/custom-field-values/bulk \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"entityType": "candidate",
"entityId": 12345,
"values": [
{
"customFieldId": 58,
"value": "Email"
},
{
"customFieldId": 59,
"value": [
"Option 1",
"Option 2"
]
}
]
}
'import requests
url = "https://partner-api.taptalent.io/v1/partner/custom-field-values/bulk"
payload = {
"entityType": "candidate",
"entityId": 12345,
"values": [
{
"customFieldId": 58,
"value": "Email"
},
{
"customFieldId": 59,
"value": ["Option 1", "Option 2"]
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
entityType: 'candidate',
entityId: 12345,
values: [
{customFieldId: 58, value: 'Email'},
{customFieldId: 59, value: ['Option 1', 'Option 2']}
]
})
};
fetch('https://partner-api.taptalent.io/v1/partner/custom-field-values/bulk', 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://partner-api.taptalent.io/v1/partner/custom-field-values/bulk",
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([
'entityType' => 'candidate',
'entityId' => 12345,
'values' => [
[
'customFieldId' => 58,
'value' => 'Email'
],
[
'customFieldId' => 59,
'value' => [
'Option 1',
'Option 2'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://partner-api.taptalent.io/v1/partner/custom-field-values/bulk"
payload := strings.NewReader("{\n \"entityType\": \"candidate\",\n \"entityId\": 12345,\n \"values\": [\n {\n \"customFieldId\": 58,\n \"value\": \"Email\"\n },\n {\n \"customFieldId\": 59,\n \"value\": [\n \"Option 1\",\n \"Option 2\"\n ]\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
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://partner-api.taptalent.io/v1/partner/custom-field-values/bulk")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"entityType\": \"candidate\",\n \"entityId\": 12345,\n \"values\": [\n {\n \"customFieldId\": 58,\n \"value\": \"Email\"\n },\n {\n \"customFieldId\": 59,\n \"value\": [\n \"Option 1\",\n \"Option 2\"\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://partner-api.taptalent.io/v1/partner/custom-field-values/bulk")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"entityType\": \"candidate\",\n \"entityId\": 12345,\n \"values\": [\n {\n \"customFieldId\": 58,\n \"value\": \"Email\"\n },\n {\n \"customFieldId\": 59,\n \"value\": [\n \"Option 1\",\n \"Option 2\"\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"data": [
{
"id": 1001,
"customFieldId": 58,
"entityType": "candidate",
"entityId": 12345,
"value": "Email",
"parentEntityType": null,
"parentEntityId": null,
"createdAt": "2024-01-15T10:00:00.000Z",
"updatedAt": "2024-01-15T10:00:00.000Z"
},
{
"id": 1002,
"customFieldId": 59,
"entityType": "candidate",
"entityId": 12345,
"value": [
"Option 1",
"Option 2"
],
"parentEntityType": null,
"parentEntityId": null,
"createdAt": "2024-01-15T10:00:00.000Z",
"updatedAt": "2024-01-15T10:00:00.000Z"
}
]
}Bulk create or update custom field values
Create or update multiple custom field values for one candidate or
job in a single request. Each entry in values is upserted using
the same key as the single-value endpoint (customFieldId,
entityType, entityId, parentEntityId).
curl --request POST \
--url https://partner-api.taptalent.io/v1/partner/custom-field-values/bulk \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"entityType": "candidate",
"entityId": 12345,
"values": [
{
"customFieldId": 58,
"value": "Email"
},
{
"customFieldId": 59,
"value": [
"Option 1",
"Option 2"
]
}
]
}
'import requests
url = "https://partner-api.taptalent.io/v1/partner/custom-field-values/bulk"
payload = {
"entityType": "candidate",
"entityId": 12345,
"values": [
{
"customFieldId": 58,
"value": "Email"
},
{
"customFieldId": 59,
"value": ["Option 1", "Option 2"]
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
entityType: 'candidate',
entityId: 12345,
values: [
{customFieldId: 58, value: 'Email'},
{customFieldId: 59, value: ['Option 1', 'Option 2']}
]
})
};
fetch('https://partner-api.taptalent.io/v1/partner/custom-field-values/bulk', 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://partner-api.taptalent.io/v1/partner/custom-field-values/bulk",
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([
'entityType' => 'candidate',
'entityId' => 12345,
'values' => [
[
'customFieldId' => 58,
'value' => 'Email'
],
[
'customFieldId' => 59,
'value' => [
'Option 1',
'Option 2'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://partner-api.taptalent.io/v1/partner/custom-field-values/bulk"
payload := strings.NewReader("{\n \"entityType\": \"candidate\",\n \"entityId\": 12345,\n \"values\": [\n {\n \"customFieldId\": 58,\n \"value\": \"Email\"\n },\n {\n \"customFieldId\": 59,\n \"value\": [\n \"Option 1\",\n \"Option 2\"\n ]\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
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://partner-api.taptalent.io/v1/partner/custom-field-values/bulk")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"entityType\": \"candidate\",\n \"entityId\": 12345,\n \"values\": [\n {\n \"customFieldId\": 58,\n \"value\": \"Email\"\n },\n {\n \"customFieldId\": 59,\n \"value\": [\n \"Option 1\",\n \"Option 2\"\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://partner-api.taptalent.io/v1/partner/custom-field-values/bulk")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"entityType\": \"candidate\",\n \"entityId\": 12345,\n \"values\": [\n {\n \"customFieldId\": 58,\n \"value\": \"Email\"\n },\n {\n \"customFieldId\": 59,\n \"value\": [\n \"Option 1\",\n \"Option 2\"\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"data": [
{
"id": 1001,
"customFieldId": 58,
"entityType": "candidate",
"entityId": 12345,
"value": "Email",
"parentEntityType": null,
"parentEntityId": null,
"createdAt": "2024-01-15T10:00:00.000Z",
"updatedAt": "2024-01-15T10:00:00.000Z"
},
{
"id": 1002,
"customFieldId": 59,
"entityType": "candidate",
"entityId": 12345,
"value": [
"Option 1",
"Option 2"
],
"parentEntityType": null,
"parentEntityId": null,
"createdAt": "2024-01-15T10:00:00.000Z",
"updatedAt": "2024-01-15T10:00:00.000Z"
}
]
}Authorizations
Company-scoped API key. Production keys are prefixed sk_live_,
sandbox keys sk_test_, each followed by 22 base62 characters
(pattern ^sk_(live|test)_[0-9A-Za-z]{22}$). Generate keys in the
TapTalent dashboard under Account Settings → Developers → API Key
Management; a key is shown once at generation and old keys are
invalidated immediately on regeneration.
Body
Request body for creating or updating multiple custom field values for one candidate or job in a single request.
The entity a custom field applies to.
candidate, job The ID of the candidate or job.
12345
Array of value objects with customFieldId, value, and optional parentEntityType/parentEntityId.
Show child attributes
Show child attributes
Response
The created or updated custom field values. The source documentation does not include a response example for this endpoint; see the schema's inference note.
Envelope returned after bulk creating or updating custom field values. Response schema inferred from related endpoints; not yet verified against production behavior.
Was this page helpful?
.png?fit=max&auto=format&n=lKy84_BssSCy2hcz&q=85&s=ac7c949427cc2893306f6036415f087e)