curl --request POST \
--url https://api.kombo.dev/v1/ai-apply/apply \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"submission_token": "<example-token>",
"candidate_email": "john.doe@gmail.com",
"query_params": {
"source": "acme",
"user_id": "8e05b4e5-c586-4d42-8606-b45febad3af3"
},
"screening_question_answers": [
{
"question_id": "A4zHtGQLF823sNmqy4WxoduFH",
"answer": "John Doe"
},
{
"question_id": "CDEfHvMGSDnM6pq5HECdE2Kg",
"answer": "EycufwZHfwcVDmE47X7QN8X2"
},
{
"question_id": "3dT5df2PhyVp7Rze76S5NqrW",
"answer": {
"name": "john_doe_resume.pdf",
"content_type": "application/pdf",
"data": "JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovT3V0bGluZXMgMiAwIFIKL1BhZ2VzIDMgMCBSCj4+CmVuZG9iag=="
}
}
],
"additional_clicks": 10,
"additional_clicks_scatter_duration": 45
}
'import requests
url = "https://api.kombo.dev/v1/ai-apply/apply"
payload = {
"submission_token": "<example-token>",
"candidate_email": "john.doe@gmail.com",
"query_params": {
"source": "acme",
"user_id": "8e05b4e5-c586-4d42-8606-b45febad3af3"
},
"screening_question_answers": [
{
"question_id": "A4zHtGQLF823sNmqy4WxoduFH",
"answer": "John Doe"
},
{
"question_id": "CDEfHvMGSDnM6pq5HECdE2Kg",
"answer": "EycufwZHfwcVDmE47X7QN8X2"
},
{
"question_id": "3dT5df2PhyVp7Rze76S5NqrW",
"answer": {
"name": "john_doe_resume.pdf",
"content_type": "application/pdf",
"data": "JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovT3V0bGluZXMgMiAwIFIKL1BhZ2VzIDMgMCBSCj4+CmVuZG9iag=="
}
}
],
"additional_clicks": 10,
"additional_clicks_scatter_duration": 45
}
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({
submission_token: '<example-token>',
candidate_email: 'john.doe@gmail.com',
query_params: {source: 'acme', user_id: '8e05b4e5-c586-4d42-8606-b45febad3af3'},
screening_question_answers: [
{question_id: 'A4zHtGQLF823sNmqy4WxoduFH', answer: 'John Doe'},
{question_id: 'CDEfHvMGSDnM6pq5HECdE2Kg', answer: 'EycufwZHfwcVDmE47X7QN8X2'},
{
question_id: '3dT5df2PhyVp7Rze76S5NqrW',
answer: {
name: 'john_doe_resume.pdf',
content_type: 'application/pdf',
data: 'JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovT3V0bGluZXMgMiAwIFIKL1BhZ2VzIDMgMCBSCj4+CmVuZG9iag=='
}
}
],
additional_clicks: 10,
additional_clicks_scatter_duration: 45
})
};
fetch('https://api.kombo.dev/v1/ai-apply/apply', 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/ai-apply/apply",
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([
'submission_token' => '<example-token>',
'candidate_email' => 'john.doe@gmail.com',
'query_params' => [
'source' => 'acme',
'user_id' => '8e05b4e5-c586-4d42-8606-b45febad3af3'
],
'screening_question_answers' => [
[
'question_id' => 'A4zHtGQLF823sNmqy4WxoduFH',
'answer' => 'John Doe'
],
[
'question_id' => 'CDEfHvMGSDnM6pq5HECdE2Kg',
'answer' => 'EycufwZHfwcVDmE47X7QN8X2'
],
[
'question_id' => '3dT5df2PhyVp7Rze76S5NqrW',
'answer' => [
'name' => 'john_doe_resume.pdf',
'content_type' => 'application/pdf',
'data' => 'JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovT3V0bGluZXMgMiAwIFIKL1BhZ2VzIDMgMCBSCj4+CmVuZG9iag=='
]
]
],
'additional_clicks' => 10,
'additional_clicks_scatter_duration' => 45
]),
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.kombo.dev/v1/ai-apply/apply"
payload := strings.NewReader("{\n \"submission_token\": \"<example-token>\",\n \"candidate_email\": \"john.doe@gmail.com\",\n \"query_params\": {\n \"source\": \"acme\",\n \"user_id\": \"8e05b4e5-c586-4d42-8606-b45febad3af3\"\n },\n \"screening_question_answers\": [\n {\n \"question_id\": \"A4zHtGQLF823sNmqy4WxoduFH\",\n \"answer\": \"John Doe\"\n },\n {\n \"question_id\": \"CDEfHvMGSDnM6pq5HECdE2Kg\",\n \"answer\": \"EycufwZHfwcVDmE47X7QN8X2\"\n },\n {\n \"question_id\": \"3dT5df2PhyVp7Rze76S5NqrW\",\n \"answer\": {\n \"name\": \"john_doe_resume.pdf\",\n \"content_type\": \"application/pdf\",\n \"data\": \"JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovT3V0bGluZXMgMiAwIFIKL1BhZ2VzIDMgMCBSCj4+CmVuZG9iag==\"\n }\n }\n ],\n \"additional_clicks\": 10,\n \"additional_clicks_scatter_duration\": 45\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.kombo.dev/v1/ai-apply/apply")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"submission_token\": \"<example-token>\",\n \"candidate_email\": \"john.doe@gmail.com\",\n \"query_params\": {\n \"source\": \"acme\",\n \"user_id\": \"8e05b4e5-c586-4d42-8606-b45febad3af3\"\n },\n \"screening_question_answers\": [\n {\n \"question_id\": \"A4zHtGQLF823sNmqy4WxoduFH\",\n \"answer\": \"John Doe\"\n },\n {\n \"question_id\": \"CDEfHvMGSDnM6pq5HECdE2Kg\",\n \"answer\": \"EycufwZHfwcVDmE47X7QN8X2\"\n },\n {\n \"question_id\": \"3dT5df2PhyVp7Rze76S5NqrW\",\n \"answer\": {\n \"name\": \"john_doe_resume.pdf\",\n \"content_type\": \"application/pdf\",\n \"data\": \"JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovT3V0bGluZXMgMiAwIFIKL1BhZ2VzIDMgMCBSCj4+CmVuZG9iag==\"\n }\n }\n ],\n \"additional_clicks\": 10,\n \"additional_clicks_scatter_duration\": 45\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kombo.dev/v1/ai-apply/apply")
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 \"submission_token\": \"<example-token>\",\n \"candidate_email\": \"john.doe@gmail.com\",\n \"query_params\": {\n \"source\": \"acme\",\n \"user_id\": \"8e05b4e5-c586-4d42-8606-b45febad3af3\"\n },\n \"screening_question_answers\": [\n {\n \"question_id\": \"A4zHtGQLF823sNmqy4WxoduFH\",\n \"answer\": \"John Doe\"\n },\n {\n \"question_id\": \"CDEfHvMGSDnM6pq5HECdE2Kg\",\n \"answer\": \"EycufwZHfwcVDmE47X7QN8X2\"\n },\n {\n \"question_id\": \"3dT5df2PhyVp7Rze76S5NqrW\",\n \"answer\": {\n \"name\": \"john_doe_resume.pdf\",\n \"content_type\": \"application/pdf\",\n \"data\": \"JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovT3V0bGluZXMgMiAwIFIKL1BhZ2VzIDMgMCBSCj4+CmVuZG9iag==\"\n }\n }\n ],\n \"additional_clicks\": 10,\n \"additional_clicks_scatter_duration\": 45\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"id": "ADbmw5XSkeCSE1fAucoxEGnwZ",
"posting_id": "JDn252PEYa4rMhKbJBjtn3ng",
"status": "PENDING",
"created_at": "2025-01-01T00:00:00.000Z",
"updated_at": "2025-03-02T23:12:32.000Z"
}
}Submit job application
Submit a job application using a submission token. The application will be queued and processed asynchronously. Returns ID to track progress and match with webhooks.
curl --request POST \
--url https://api.kombo.dev/v1/ai-apply/apply \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"submission_token": "<example-token>",
"candidate_email": "john.doe@gmail.com",
"query_params": {
"source": "acme",
"user_id": "8e05b4e5-c586-4d42-8606-b45febad3af3"
},
"screening_question_answers": [
{
"question_id": "A4zHtGQLF823sNmqy4WxoduFH",
"answer": "John Doe"
},
{
"question_id": "CDEfHvMGSDnM6pq5HECdE2Kg",
"answer": "EycufwZHfwcVDmE47X7QN8X2"
},
{
"question_id": "3dT5df2PhyVp7Rze76S5NqrW",
"answer": {
"name": "john_doe_resume.pdf",
"content_type": "application/pdf",
"data": "JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovT3V0bGluZXMgMiAwIFIKL1BhZ2VzIDMgMCBSCj4+CmVuZG9iag=="
}
}
],
"additional_clicks": 10,
"additional_clicks_scatter_duration": 45
}
'import requests
url = "https://api.kombo.dev/v1/ai-apply/apply"
payload = {
"submission_token": "<example-token>",
"candidate_email": "john.doe@gmail.com",
"query_params": {
"source": "acme",
"user_id": "8e05b4e5-c586-4d42-8606-b45febad3af3"
},
"screening_question_answers": [
{
"question_id": "A4zHtGQLF823sNmqy4WxoduFH",
"answer": "John Doe"
},
{
"question_id": "CDEfHvMGSDnM6pq5HECdE2Kg",
"answer": "EycufwZHfwcVDmE47X7QN8X2"
},
{
"question_id": "3dT5df2PhyVp7Rze76S5NqrW",
"answer": {
"name": "john_doe_resume.pdf",
"content_type": "application/pdf",
"data": "JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovT3V0bGluZXMgMiAwIFIKL1BhZ2VzIDMgMCBSCj4+CmVuZG9iag=="
}
}
],
"additional_clicks": 10,
"additional_clicks_scatter_duration": 45
}
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({
submission_token: '<example-token>',
candidate_email: 'john.doe@gmail.com',
query_params: {source: 'acme', user_id: '8e05b4e5-c586-4d42-8606-b45febad3af3'},
screening_question_answers: [
{question_id: 'A4zHtGQLF823sNmqy4WxoduFH', answer: 'John Doe'},
{question_id: 'CDEfHvMGSDnM6pq5HECdE2Kg', answer: 'EycufwZHfwcVDmE47X7QN8X2'},
{
question_id: '3dT5df2PhyVp7Rze76S5NqrW',
answer: {
name: 'john_doe_resume.pdf',
content_type: 'application/pdf',
data: 'JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovT3V0bGluZXMgMiAwIFIKL1BhZ2VzIDMgMCBSCj4+CmVuZG9iag=='
}
}
],
additional_clicks: 10,
additional_clicks_scatter_duration: 45
})
};
fetch('https://api.kombo.dev/v1/ai-apply/apply', 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/ai-apply/apply",
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([
'submission_token' => '<example-token>',
'candidate_email' => 'john.doe@gmail.com',
'query_params' => [
'source' => 'acme',
'user_id' => '8e05b4e5-c586-4d42-8606-b45febad3af3'
],
'screening_question_answers' => [
[
'question_id' => 'A4zHtGQLF823sNmqy4WxoduFH',
'answer' => 'John Doe'
],
[
'question_id' => 'CDEfHvMGSDnM6pq5HECdE2Kg',
'answer' => 'EycufwZHfwcVDmE47X7QN8X2'
],
[
'question_id' => '3dT5df2PhyVp7Rze76S5NqrW',
'answer' => [
'name' => 'john_doe_resume.pdf',
'content_type' => 'application/pdf',
'data' => 'JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovT3V0bGluZXMgMiAwIFIKL1BhZ2VzIDMgMCBSCj4+CmVuZG9iag=='
]
]
],
'additional_clicks' => 10,
'additional_clicks_scatter_duration' => 45
]),
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.kombo.dev/v1/ai-apply/apply"
payload := strings.NewReader("{\n \"submission_token\": \"<example-token>\",\n \"candidate_email\": \"john.doe@gmail.com\",\n \"query_params\": {\n \"source\": \"acme\",\n \"user_id\": \"8e05b4e5-c586-4d42-8606-b45febad3af3\"\n },\n \"screening_question_answers\": [\n {\n \"question_id\": \"A4zHtGQLF823sNmqy4WxoduFH\",\n \"answer\": \"John Doe\"\n },\n {\n \"question_id\": \"CDEfHvMGSDnM6pq5HECdE2Kg\",\n \"answer\": \"EycufwZHfwcVDmE47X7QN8X2\"\n },\n {\n \"question_id\": \"3dT5df2PhyVp7Rze76S5NqrW\",\n \"answer\": {\n \"name\": \"john_doe_resume.pdf\",\n \"content_type\": \"application/pdf\",\n \"data\": \"JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovT3V0bGluZXMgMiAwIFIKL1BhZ2VzIDMgMCBSCj4+CmVuZG9iag==\"\n }\n }\n ],\n \"additional_clicks\": 10,\n \"additional_clicks_scatter_duration\": 45\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.kombo.dev/v1/ai-apply/apply")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"submission_token\": \"<example-token>\",\n \"candidate_email\": \"john.doe@gmail.com\",\n \"query_params\": {\n \"source\": \"acme\",\n \"user_id\": \"8e05b4e5-c586-4d42-8606-b45febad3af3\"\n },\n \"screening_question_answers\": [\n {\n \"question_id\": \"A4zHtGQLF823sNmqy4WxoduFH\",\n \"answer\": \"John Doe\"\n },\n {\n \"question_id\": \"CDEfHvMGSDnM6pq5HECdE2Kg\",\n \"answer\": \"EycufwZHfwcVDmE47X7QN8X2\"\n },\n {\n \"question_id\": \"3dT5df2PhyVp7Rze76S5NqrW\",\n \"answer\": {\n \"name\": \"john_doe_resume.pdf\",\n \"content_type\": \"application/pdf\",\n \"data\": \"JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovT3V0bGluZXMgMiAwIFIKL1BhZ2VzIDMgMCBSCj4+CmVuZG9iag==\"\n }\n }\n ],\n \"additional_clicks\": 10,\n \"additional_clicks_scatter_duration\": 45\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kombo.dev/v1/ai-apply/apply")
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 \"submission_token\": \"<example-token>\",\n \"candidate_email\": \"john.doe@gmail.com\",\n \"query_params\": {\n \"source\": \"acme\",\n \"user_id\": \"8e05b4e5-c586-4d42-8606-b45febad3af3\"\n },\n \"screening_question_answers\": [\n {\n \"question_id\": \"A4zHtGQLF823sNmqy4WxoduFH\",\n \"answer\": \"John Doe\"\n },\n {\n \"question_id\": \"CDEfHvMGSDnM6pq5HECdE2Kg\",\n \"answer\": \"EycufwZHfwcVDmE47X7QN8X2\"\n },\n {\n \"question_id\": \"3dT5df2PhyVp7Rze76S5NqrW\",\n \"answer\": {\n \"name\": \"john_doe_resume.pdf\",\n \"content_type\": \"application/pdf\",\n \"data\": \"JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovT3V0bGluZXMgMiAwIFIKL1BhZ2VzIDMgMCBSCj4+CmVuZG9iag==\"\n }\n }\n ],\n \"additional_clicks\": 10,\n \"additional_clicks_scatter_duration\": 45\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"id": "ADbmw5XSkeCSE1fAucoxEGnwZ",
"posting_id": "JDn252PEYa4rMhKbJBjtn3ng",
"status": "PENDING",
"created_at": "2025-01-01T00:00:00.000Z",
"updated_at": "2025-03-02T23:12:32.000Z"
}
}Authorizations
Body
POST /ai-apply/apply Request body
Submission JWT paired with the exact application form being answered. Single-use tokens are valid for two days. Multi-use tokens have no time-based expiry.
The email address of the candidate, used for internal tracking and candidate account behavior. It does not prevent duplicate applications. This field is required but should not be displayed to the candidate on your application form - you should provide this from your own system.
Array of screening question answers. The answers need to match exactly with the application form received together with the submission token. Otherwise, the application will be rejected.
Show child attributes
Show child attributes
Query parameters to be appended to the job posting URL when applying.
Show child attributes
Show child attributes
Number of times to simulate the job being opened in addition to the actual click related to the application. When set without additional_clicks_scatter_duration, uses the default 60-minute scatter window.
0 <= x <= 30Optional scatter window for additional_clicks, in minutes. Cannot be used without additional_clicks.
x >= 1Response
POST /ai-apply/apply Positive response
Was this page helpful?