curl --request POST \
--url https://api.talentunveiled.com/api/v1/jobs/{job_posting_id}/applications \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"first_name": "John",
"last_name": "Doe",
"phone_number": "+16505551234",
"email": "john@example.com",
"custom_fields": {
"Notice period": "30 days",
"Why this role?": "Looking for growth opportunities",
"Years of experience": 7
},
"cv_url": "https://example.com/cv/jane-doe.pdf"
}
'import requests
url = "https://api.talentunveiled.com/api/v1/jobs/{job_posting_id}/applications"
payload = {
"first_name": "John",
"last_name": "Doe",
"phone_number": "+16505551234",
"email": "john@example.com",
"custom_fields": {
"Notice period": "30 days",
"Why this role?": "Looking for growth opportunities",
"Years of experience": 7
},
"cv_url": "https://example.com/cv/jane-doe.pdf"
}
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({
first_name: 'John',
last_name: 'Doe',
phone_number: '+16505551234',
email: 'john@example.com',
custom_fields: {
'Notice period': '30 days',
'Why this role?': 'Looking for growth opportunities',
'Years of experience': 7
},
cv_url: 'https://example.com/cv/jane-doe.pdf'
})
};
fetch('https://api.talentunveiled.com/api/v1/jobs/{job_posting_id}/applications', 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.talentunveiled.com/api/v1/jobs/{job_posting_id}/applications",
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([
'first_name' => 'John',
'last_name' => 'Doe',
'phone_number' => '+16505551234',
'email' => 'john@example.com',
'custom_fields' => [
'Notice period' => '30 days',
'Why this role?' => 'Looking for growth opportunities',
'Years of experience' => 7
],
'cv_url' => 'https://example.com/cv/jane-doe.pdf'
]),
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://api.talentunveiled.com/api/v1/jobs/{job_posting_id}/applications"
payload := strings.NewReader("{\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"phone_number\": \"+16505551234\",\n \"email\": \"john@example.com\",\n \"custom_fields\": {\n \"Notice period\": \"30 days\",\n \"Why this role?\": \"Looking for growth opportunities\",\n \"Years of experience\": 7\n },\n \"cv_url\": \"https://example.com/cv/jane-doe.pdf\"\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://api.talentunveiled.com/api/v1/jobs/{job_posting_id}/applications")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"phone_number\": \"+16505551234\",\n \"email\": \"john@example.com\",\n \"custom_fields\": {\n \"Notice period\": \"30 days\",\n \"Why this role?\": \"Looking for growth opportunities\",\n \"Years of experience\": 7\n },\n \"cv_url\": \"https://example.com/cv/jane-doe.pdf\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.talentunveiled.com/api/v1/jobs/{job_posting_id}/applications")
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 \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"phone_number\": \"+16505551234\",\n \"email\": \"john@example.com\",\n \"custom_fields\": {\n \"Notice period\": \"30 days\",\n \"Why this role?\": \"Looking for growth opportunities\",\n \"Years of experience\": 7\n },\n \"cv_url\": \"https://example.com/cv/jane-doe.pdf\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "applied",
"created_at": "2023-11-07T05:31:56Z",
"candidate": {
"first_name": "<string>",
"last_name": "<string>",
"phone_number": "<string>",
"email": "jsmith@example.com"
},
"custom_fields": "<unknown>"
}Create Application
Create a job application for a candidate. Phone number must be in E.164 format (e.g. +16505551234, +66812345678). The interview call is triggered automatically.
curl --request POST \
--url https://api.talentunveiled.com/api/v1/jobs/{job_posting_id}/applications \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"first_name": "John",
"last_name": "Doe",
"phone_number": "+16505551234",
"email": "john@example.com",
"custom_fields": {
"Notice period": "30 days",
"Why this role?": "Looking for growth opportunities",
"Years of experience": 7
},
"cv_url": "https://example.com/cv/jane-doe.pdf"
}
'import requests
url = "https://api.talentunveiled.com/api/v1/jobs/{job_posting_id}/applications"
payload = {
"first_name": "John",
"last_name": "Doe",
"phone_number": "+16505551234",
"email": "john@example.com",
"custom_fields": {
"Notice period": "30 days",
"Why this role?": "Looking for growth opportunities",
"Years of experience": 7
},
"cv_url": "https://example.com/cv/jane-doe.pdf"
}
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({
first_name: 'John',
last_name: 'Doe',
phone_number: '+16505551234',
email: 'john@example.com',
custom_fields: {
'Notice period': '30 days',
'Why this role?': 'Looking for growth opportunities',
'Years of experience': 7
},
cv_url: 'https://example.com/cv/jane-doe.pdf'
})
};
fetch('https://api.talentunveiled.com/api/v1/jobs/{job_posting_id}/applications', 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.talentunveiled.com/api/v1/jobs/{job_posting_id}/applications",
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([
'first_name' => 'John',
'last_name' => 'Doe',
'phone_number' => '+16505551234',
'email' => 'john@example.com',
'custom_fields' => [
'Notice period' => '30 days',
'Why this role?' => 'Looking for growth opportunities',
'Years of experience' => 7
],
'cv_url' => 'https://example.com/cv/jane-doe.pdf'
]),
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://api.talentunveiled.com/api/v1/jobs/{job_posting_id}/applications"
payload := strings.NewReader("{\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"phone_number\": \"+16505551234\",\n \"email\": \"john@example.com\",\n \"custom_fields\": {\n \"Notice period\": \"30 days\",\n \"Why this role?\": \"Looking for growth opportunities\",\n \"Years of experience\": 7\n },\n \"cv_url\": \"https://example.com/cv/jane-doe.pdf\"\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://api.talentunveiled.com/api/v1/jobs/{job_posting_id}/applications")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"phone_number\": \"+16505551234\",\n \"email\": \"john@example.com\",\n \"custom_fields\": {\n \"Notice period\": \"30 days\",\n \"Why this role?\": \"Looking for growth opportunities\",\n \"Years of experience\": 7\n },\n \"cv_url\": \"https://example.com/cv/jane-doe.pdf\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.talentunveiled.com/api/v1/jobs/{job_posting_id}/applications")
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 \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"phone_number\": \"+16505551234\",\n \"email\": \"john@example.com\",\n \"custom_fields\": {\n \"Notice period\": \"30 days\",\n \"Why this role?\": \"Looking for growth opportunities\",\n \"Years of experience\": 7\n },\n \"cv_url\": \"https://example.com/cv/jane-doe.pdf\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "applied",
"created_at": "2023-11-07T05:31:56Z",
"candidate": {
"first_name": "<string>",
"last_name": "<string>",
"phone_number": "<string>",
"email": "jsmith@example.com"
},
"custom_fields": "<unknown>"
}Authorizations
API key authentication for the public API. Pass your API key as a Bearer token.
Path Parameters
Body
1 - 150Phone number in E.164 format (e.g. +16505551234, +66812345678).
1 - 201 - 1501Free-form JSON object of customer-submitted data collected before the application reaches TalentUnveiled (e.g. answers from a pre-application funnel). Top-level must be a JSON object; any keys and value types are allowed inside. Max 64 KB serialized.
Show child attributes
Show child attributes
Optional https URL to the candidate's CV (PDF). If provided, the CV is downloaded and processed asynchronously.
Response
applied- Appliedscreened- Screenedinterviewed- Interviewedshortlisted- Shortlistedhired- Hiredrejected- Rejected
applied, screened, interviewed, shortlisted, hired, rejected Show child attributes
Show child attributes
Customer-provided custom fields submitted at application creation via the external API. Free-form JSON object. Top-level must be an object; inside, any keys/values are allowed. Max 64 KB serialized.

