Create Application
Create a Job Application to a Company using the Company's ID.
curl -X POST "https://api.getkini.com/applications/" \
-H "Content-Type: application/json" \
-H "Company-Id: 1" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-d '{
"job": 123456,
"talent_channel": 1,
"external_job_id": "EXT-123456",
"application_url": "https://careers.example.com/jobs/123456/apply",
"agency_job_id": "EXT-AGENCY-001",
"partner_job_id": "EXT-JOB-001",
"partner_company_id": "EXT-COMPANY-001",
"partner_application_id": "EXT-APPLICATION-001",
"candidate": {
"email": "john.doe@example.com",
"first_name": "John",
"last_name": "Doe",
"full_name": "John Doe",
"gender": "MALE",
"birthdate": "1990-01-15",
"language": "de",
"nationality": "DE",
"phone": "+49 170 1234567",
"location": {
"street": "Example Street 2",
"city": "Berlin",
"country": "Germany",
"postcode": "10117"
},
"skills": [
"Python",
"Django",
"React"
]
},
"applied_at": "2026-08-04T07:41:12.338291Z",
"notes": "Application received via Quick Apply.",
"channel": "Indeed",
"social_links": {
"LinkedIn": "https://www.linkedin.com/in/johndoe",
"Website": "https://www.example.com/john-doe",
"Xing": "https://www.xing.com/profile/John_Doe"
},
"screening_questions": [
{
"id": "sq-001",
"question": "Do you have a valid work permit for Germany?",
"answer_type": "boolean",
"answer": "true"
}
],
"custom_fields": {
"source_campaign": "spring-hiring-2026"
},
"attachments": [
{
"type": "cv",
"name": "john-doe-cv.pdf",
"content_type": "application/pdf",
"data": "JVBERi0xLjQKJeLjz9MKMyAwIG9iago8PC9UeXBlL1BhZ2UvUGFyZW50..."
}
]
}'
import requests
import json
url = "https://api.getkini.com/applications/"
headers = {
"Content-Type": "application/json",
"Company-Id": "1",
"Authorization": "Bearer YOUR_API_TOKEN"
}
data = {
"job": 123456,
"talent_channel": 1,
"external_job_id": "EXT-123456",
"application_url": "https://careers.example.com/jobs/123456/apply",
"agency_job_id": "EXT-AGENCY-001",
"partner_job_id": "EXT-JOB-001",
"partner_company_id": "EXT-COMPANY-001",
"partner_application_id": "EXT-APPLICATION-001",
"candidate": {
"email": "john.doe@example.com",
"first_name": "John",
"last_name": "Doe",
"full_name": "John Doe",
"gender": "MALE",
"birthdate": "1990-01-15",
"language": "de",
"nationality": "DE",
"phone": "+49 170 1234567",
"location": {
"street": "Example Street 2",
"city": "Berlin",
"country": "Germany",
"postcode": "10117"
},
"skills": [
"Python",
"Django",
"React"
]
},
"applied_at": "2026-08-04T07:41:12.338291Z",
"notes": "Application received via Quick Apply.",
"channel": "Indeed",
"social_links": {
"LinkedIn": "https://www.linkedin.com/in/johndoe",
"Website": "https://www.example.com/john-doe",
"Xing": "https://www.xing.com/profile/John_Doe"
},
"screening_questions": [
{
"id": "sq-001",
"question": "Do you have a valid work permit for Germany?",
"answer_type": "boolean",
"answer": "true"
}
],
"custom_fields": {
"source_campaign": "spring-hiring-2026"
},
"attachments": [
{
"type": "cv",
"name": "john-doe-cv.pdf",
"content_type": "application/pdf",
"data": "JVBERi0xLjQKJeLjz9MKMyAwIG9iago8PC9UeXBlL1BhZ2UvUGFyZW50..."
}
]
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
const response = await fetch("https://api.getkini.com/applications/", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Company-Id": "1",
"Authorization": "Bearer YOUR_API_TOKEN"
},
body: JSON.stringify({
"job": 123456,
"talent_channel": 1,
"external_job_id": "EXT-123456",
"application_url": "https://careers.example.com/jobs/123456/apply",
"agency_job_id": "EXT-AGENCY-001",
"partner_job_id": "EXT-JOB-001",
"partner_company_id": "EXT-COMPANY-001",
"partner_application_id": "EXT-APPLICATION-001",
"candidate": {
"email": "john.doe@example.com",
"first_name": "John",
"last_name": "Doe",
"full_name": "John Doe",
"gender": "MALE",
"birthdate": "1990-01-15",
"language": "de",
"nationality": "DE",
"phone": "+49 170 1234567",
"location": {
"street": "Example Street 2",
"city": "Berlin",
"country": "Germany",
"postcode": "10117"
},
"skills": [
"Python",
"Django",
"React"
]
},
"applied_at": "2026-08-04T07:41:12.338291Z",
"notes": "Application received via Quick Apply.",
"channel": "Indeed",
"social_links": {
"LinkedIn": "https://www.linkedin.com/in/johndoe",
"Website": "https://www.example.com/john-doe",
"Xing": "https://www.xing.com/profile/John_Doe"
},
"screening_questions": [
{
"id": "sq-001",
"question": "Do you have a valid work permit for Germany?",
"answer_type": "boolean",
"answer": "true"
}
],
"custom_fields": {
"source_campaign": "spring-hiring-2026"
},
"attachments": [
{
"type": "cv",
"name": "john-doe-cv.pdf",
"content_type": "application/pdf",
"data": "JVBERi0xLjQKJeLjz9MKMyAwIG9iago8PC9UeXBlL1BhZ2UvUGFyZW50..."
}
]
})
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
"bytes"
"encoding/json"
)
func main() {
data := []byte(`{
"job": 123456,
"talent_channel": 1,
"external_job_id": "EXT-123456",
"application_url": "https://careers.example.com/jobs/123456/apply",
"agency_job_id": "EXT-AGENCY-001",
"partner_job_id": "EXT-JOB-001",
"partner_company_id": "EXT-COMPANY-001",
"partner_application_id": "EXT-APPLICATION-001",
"candidate": {
"email": "john.doe@example.com",
"first_name": "John",
"last_name": "Doe",
"full_name": "John Doe",
"gender": "MALE",
"birthdate": "1990-01-15",
"language": "de",
"nationality": "DE",
"phone": "+49 170 1234567",
"location": {
"street": "Example Street 2",
"city": "Berlin",
"country": "Germany",
"postcode": "10117"
},
"skills": [
"Python",
"Django",
"React"
]
},
"applied_at": "2026-08-04T07:41:12.338291Z",
"notes": "Application received via Quick Apply.",
"channel": "Indeed",
"social_links": {
"LinkedIn": "https://www.linkedin.com/in/johndoe",
"Website": "https://www.example.com/john-doe",
"Xing": "https://www.xing.com/profile/John_Doe"
},
"screening_questions": [
{
"id": "sq-001",
"question": "Do you have a valid work permit for Germany?",
"answer_type": "boolean",
"answer": "true"
}
],
"custom_fields": {
"source_campaign": "spring-hiring-2026"
},
"attachments": [
{
"type": "cv",
"name": "john-doe-cv.pdf",
"content_type": "application/pdf",
"data": "JVBERi0xLjQKJeLjz9MKMyAwIG9iago8PC9UeXBlL1BhZ2UvUGFyZW50..."
}
]
}`)
req, err := http.NewRequest("POST", "https://api.getkini.com/applications/", bytes.NewBuffer(data))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Company-Id", "1")
req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://api.getkini.com/applications/')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request['Company-Id'] = '1'
request['Authorization'] = 'Bearer YOUR_API_TOKEN'
request.body = '{
"job": 123456,
"talent_channel": 1,
"external_job_id": "EXT-123456",
"application_url": "https://careers.example.com/jobs/123456/apply",
"agency_job_id": "EXT-AGENCY-001",
"partner_job_id": "EXT-JOB-001",
"partner_company_id": "EXT-COMPANY-001",
"partner_application_id": "EXT-APPLICATION-001",
"candidate": {
"email": "john.doe@example.com",
"first_name": "John",
"last_name": "Doe",
"full_name": "John Doe",
"gender": "MALE",
"birthdate": "1990-01-15",
"language": "de",
"nationality": "DE",
"phone": "+49 170 1234567",
"location": {
"street": "Example Street 2",
"city": "Berlin",
"country": "Germany",
"postcode": "10117"
},
"skills": [
"Python",
"Django",
"React"
]
},
"applied_at": "2026-08-04T07:41:12.338291Z",
"notes": "Application received via Quick Apply.",
"channel": "Indeed",
"social_links": {
"LinkedIn": "https://www.linkedin.com/in/johndoe",
"Website": "https://www.example.com/john-doe",
"Xing": "https://www.xing.com/profile/John_Doe"
},
"screening_questions": [
{
"id": "sq-001",
"question": "Do you have a valid work permit for Germany?",
"answer_type": "boolean",
"answer": "true"
}
],
"custom_fields": {
"source_campaign": "spring-hiring-2026"
},
"attachments": [
{
"type": "cv",
"name": "john-doe-cv.pdf",
"content_type": "application/pdf",
"data": "JVBERi0xLjQKJeLjz9MKMyAwIG9iago8PC9UeXBlL1BhZ2UvUGFyZW50..."
}
]
}'
response = http.request(request)
puts response.body
{
"id": 1,
"company": 1,
"job": 123456,
"talent_channel": 1,
"external_job_id": "EXT-123456",
"application_url": "https://careers.example.com/jobs/123456/apply",
"agency_job_id": "EXT-AGENCY-001",
"partner_job_id": "EXT-JOB-001",
"partner_company_id": "EXT-COMPANY-001",
"partner_application_id": "EXT-APPLICATION-001",
"candidate": {
"email": "john.doe@example.com",
"first_name": "John",
"last_name": "Doe",
"full_name": "John Doe",
"gender": "MALE",
"phone": "+49 170 1234567",
"location": {
"street": "Example Street 2",
"city": "Berlin",
"country": "Germany",
"postcode": "10117"
},
"skills": [
"Python",
"Django",
"React"
]
},
"applied_at": "2026-08-04T07:41:12.338291Z",
"notes": "Application received via Quick Apply.",
"channel": "Indeed",
"social_links": {
"LinkedIn": "https://www.linkedin.com/in/johndoe",
"Website": "https://www.example.com/john-doe",
"Xing": "https://www.xing.com/profile/John_Doe"
},
"screening_questions": [
{
"id": "sq-001",
"question": "Do you have a valid work permit for Germany?",
"answer_type": "boolean",
"answer": "true"
}
],
"custom_fields": {
"source_campaign": "spring-hiring-2026"
},
"attachments": [
{
"type": "cv",
"name": "john-doe-cv.pdf",
"content_type": "application/pdf"
}
],
"import_source": "api"
}
/applications/
Target server for requests. Edit to use your own host.
Authenticate every request with an API key from the Kini Partner App, sent as Authorization: Bearer <your_api_key>.
Authorization: Bearer <your_api_key>.The media type of the request body
ID of the Company
Kini ID of the job applied for (either job or external_job_id is required)
Kini ID of the talent channel the application came from. Resolved from channel when omitted on create.
Job's ID in external ATS systems, used for integrations (either job or external_job_id is required)
URL the candidate applied through. An alternative to job and external_job_id for identifying the job.
External ID of the job in the agency's system
External ID of the job in the partner's system (e.g. Jobboard)
External ID of the company in the partner's system (e.g. ATS)
External ID of the application in the partner's system (e.g. Jobboard)
Timestamp of when the candidate submitted the application. Defaults to the time of the request.
Internal notes about the application
External posting channel from which the application was received
Additional fields for the application as key-value pairs
List of attachments provided by the applicant. The total request body must stay below 27.5 MB — with Base64 overhead this allows roughly 20 MB of raw attachment files per application.
Request Preview
Response
Response will appear here after sending the request
Authentication
Bearer token. Authenticate every request with an API key from the Kini Partner App, sent as Authorization: Bearer \<your_api_key\>.
Headers
Body
Kini ID of the talent channel the application came from. Resolved from channel when omitted on create.
1Job's ID in external ATS systems, used for integrations (either job or external_job_id is required)
EXT-123456URL the candidate applied through. An alternative to job and external_job_id for identifying the job.
https://careers.example.com/jobs/123456/applyExternal ID of the job in the partner's system (e.g. Jobboard)
EXT-JOB-001External ID of the company in the partner's system (e.g. ATS)
EXT-COMPANY-001External ID of the application in the partner's system (e.g. Jobboard)
EXT-APPLICATION-001Timestamp of when the candidate submitted the application. Defaults to the time of the request.
2026-08-04T07:41:12.338291ZAdditional fields for the application as key-value pairs
{"source_campaign":"spring-hiring-2026"}List of attachments provided by the applicant. The total request body must stay below 27.5 MB — with Base64 overhead this allows roughly 20 MB of raw attachment files per application.