Get Application
Read a specific Application detail identified by its unique ID. Note: applications older than 180 days are returned anonymized — personal data (candidate, attachments, notes, social links, screening questions, custom fields) is omitted from the response.
curl -X GET "https://api.getkini.com/applications/1" \
-H "Content-Type: application/json" \
-H "Company-Id: 1" \
-H "Authorization: Bearer YOUR_API_TOKEN"
import requests
import json
url = "https://api.getkini.com/applications/1"
headers = {
"Content-Type": "application/json",
"Company-Id": "1",
"Authorization": "Bearer YOUR_API_TOKEN"
}
response = requests.get(url, headers=headers)
print(response.json())
const response = await fetch("https://api.getkini.com/applications/1", {
method: "GET",
headers: {
"Content-Type": "application/json",
"Company-Id": "1",
"Authorization": "Bearer YOUR_API_TOKEN"
}
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
)
func main() {
req, err := http.NewRequest("GET", "https://api.getkini.com/applications/1", nil)
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/1')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri)
request['Content-Type'] = 'application/json'
request['Company-Id'] = '1'
request['Authorization'] = 'Bearer YOUR_API_TOKEN'
response = http.request(request)
puts response.body
{
"id": 1,
"company": 1,
"job": 123456,
"job_title": "Software Engineer (m/w/d)",
"job_external_id": "EXT-123456",
"talent_channel": 1,
"talent_channel_name": "Indeed",
"talent_channel_logo": "https://storage.googleapis.com/prod-product-logos/logos/indeedcom.com",
"external_id": "PERS-APP-99213",
"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",
"status": "active",
"sync_status": "SUCCESS",
"email_sync_status": "NOTSENT",
"external_apply_status": "NOTSENT",
"failure_error": null,
"created_at": "2026-08-04T07:41:12.338291Z",
"updated_at": "2026-08-04T07:41:19.902114Z"
}
/applications/{id}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>.ID of the Application
Kini ID of the Company
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\>.
Path Parameters
Headers
Responses
Kini ID of the application
Kini ID of the company offering the job
Kini ID of the job applied for (either job or external_job_id is required)
Title of the job applied for, copied from the job at read time
The job's ID in the ATS, copied from the job at read time
Kini ID of the talent channel the application came from. Resolved from channel when omitted on create.
Name of the talent channel the application came from
Logo URL of the talent channel the application came from
The application's ID in the company's ATS, set once Kini has synced it
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
Social media links as key-value pairs where key is the platform name and value is the profile URL
Additional fields for the application as key-value pairs
List of attachments provided by the applicant
How the application reached Kini. Always api for applications created through this endpoint.
Lifecycle status of the application record. Enum: active, anonymized (personal data removed after 180 days), deleted.
activeanonymizeddeletedIndicates the current state of the application synchronization to the company's ATS. Enum: SUCCESS (Sync Successful), SUCCESS_FALLBACK (Delivered to the Company's Fallback Job), EXPECTED_FAILURE (Sync Failed Expectedly, e.g. Duplicate Candidate — No Action Needed, see failure_error), FAILURE (Sync Failed), NOTSENT (Sync Not Triggered).
SUCCESSSUCCESS_FALLBACKEXPECTED_FAILUREFAILURENOTSENTState of the fallback delivery by email, used when the ATS sync is not available
SUCCESSFAILURENOTSENTProgress of the external apply follow-up with the candidate
NOTSENTCONTACTEDREMINDEDENGAGEDError type if the application synchronization failed, e.g. DuplicateApplicationError (candidate already exists in the ATS) or JobNotPublishedError
Timestamp of when the application was first created
Timestamp of when the application was last updated