Get Job
Read a specific Job detail identified by its unique ID.
curl -X GET "https://api.getkini.com/jobs/123456" \
-H "Content-Type: application/json" \
-H "Company-Id: 1" \
-H "Authorization: Bearer YOUR_API_TOKEN"
import requests
import json
url = "https://api.getkini.com/jobs/123456"
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/jobs/123456", {
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/jobs/123456", 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/jobs/123456')
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": 123456,
"external_id": "EXT-123456",
"company": 1,
"title": "Software Engineer (m/w/d)",
"description": "Example job description. We are looking for a Software Engineer (m/w/d) to join our team in Berlin.",
"posting_url": "https://careers.example.com/jobs/123456",
"application_url": "https://careers.example.com/jobs/123456/apply",
"application_email": "jobs@example.com",
"status": "active",
"remote": "on-site",
"language": "en",
"category": "software_development",
"employment_type": "permanent",
"work_schedule": "full_time",
"senority": "mid_level",
"education": "Bachelor's degree",
"start_date": "2026-10-01",
"contract_limitation": "Unlimited contract",
"location_name": "Berlin, Germany",
"street": "Example Street 1",
"city": "Berlin",
"country": "Germany",
"postcode": "10115",
"longitude": 13.405,
"latitude": 52.52,
"salary": "50,000 – 65,000 € gross per year",
"salary_from": 50000,
"salary_to": 65000,
"salary_currency": "EUR",
"salary_frequency": "annual",
"contact_name": "Jane Doe",
"contact_email": "jane.doe@example.com",
"contact_title": "Head of HR",
"contact_phone": "+49 30 1234567",
"contact_salutation": "Frau",
"banner_image": "https://www.example.com/banner.jpg",
"screening_questions": [
{
"id": "sq-001",
"question": "Do you have a valid work permit for Germany?",
"answer_type": "boolean",
"required": true,
"options": [
{
"label": "Yes",
"value": "yes"
}
]
}
],
"application_form_fields": [
{
"id": "email",
"name": "email",
"label": "Email address",
"type": "email",
"subtype": null,
"required": true,
"order": 1,
"options": []
}
],
"description_sections": [
{
"id": "tasks",
"type": "tasks",
"order": 2,
"title": "Your tasks",
"content": "Example section content. Describe the responsibilities of the role here."
}
],
"custom_fields": {
"employer_name": "Example Company GmbH",
"employer_logo": "https://www.example.com/logo.png"
},
"raw_values": {
"employmentType": "FULL_TIME"
},
"import_source": "api",
"run_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"fingerprint": "8f3c1a92d47b0e6558a1c0d4b7e39625f0a1c8d3b6e94275a0c1f8d3b6e94275",
"apply_webhooks": {
"indeed": "https://api.getkini.com/indeed/apply/1/123456/"
},
"created_at": "2026-06-02T11:07:44.512038Z",
"updated_at": "2026-07-30T09:15:02.771604Z",
"last_content_update_at": "2026-07-30T09:15:02.771604Z"
}
/jobs/{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 Job
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 job
Job's ID in external ATS systems, used for integrations
Kini ID of the company offering the job
Title of the job
Detailed description of the job's responsibilities and requirements
URL of the job posted on the company's career page
URL through which applicants can apply on the company's career page
Email address through which applicants can apply
Posting status of the job (active, deleted, archived)
activedeletedarchivedWork mode of the job (remote, hybrid, on-site)
remotehybridon-siteLanguage of the job posting
Category of the job, e.g. 'sales'
accounting_financeadministrationarchitecture_constructionarts_media_entertainmentbusiness_developmentcleaning_facilitiesconsultingcustomer_service_supportdata_analyticsdesigneducation_trainingengineeringentertainment_travelevent_managementfinancehealthcarehospitality_tourismhr_recruitmentinstallation_maintenance_repairit_supportlegallogistics_supply_chainmanagement_executivemarketingnon_profitoperationsotherpersonal_care_servicespharmaceutical_life_sciencesproduct_managementproject_managementpublic_relationsreal_estateretailsalesscience_technologysoftware_developmentsocial_servicessports_fitness_recreationtranslation_localizationwarehouseEmployment type of the job (permanent, contract, minijob, etc.)
contractfreelanceinterntemporarypermanentvolunteerapprenticeshipworking_studentminijobotherWork schedule type for the position (full-time, part-time, flexible)
full_timepart_timeflexibleRequired or expected seniority level
unexperiencedjuniormid_levelseniorleadmanagerdirectorexecutiveRequired or preferred education level
Required or expected start date
Contractual limitations or terms associated with the job
Full-text location of where the job is based
Street of the job's location
City of the job's location
Country of the job's location
Postal code of the job's location
Longitude coordinate of the job's location
Latitude coordinate of the job's location
General description of the salary package
Starting salary range
Maximum salary range
Currency of the stated salary
Payout frequency of the stated salary (annual, monthly, etc.)
Name of the contact person responsible for the job posting
E-Mail Address of the contact person responsible for the job posting
Work title of the contact person responsible for the job posting
Phone Number of the contact person responsible for the job posting
Salutation of the contact person responsible for the job posting
Banner Image URL
Fields of the application form on the company's career page, in display order
Structured sections of the job description
Custom fields for the job posting as key-value pairs
The untouched values Kini received from the ATS, before mapping. Diagnostic only — the shape follows the source system, not this API.
How the job reached Kini, e.g. api, crawler, or clickout
Identifier of the import run this job last came in on. Useful when tracing a sync.
Hash over the job's content fields. Changes whenever the posting's content changes, so you can detect real edits without diffing every field.
Apply webhook URLs for the channels the company is entitled to, keyed by channel. Empty when no apply integration is enabled.
Timestamp of when the job was first created
Timestamp of when the job was last updated
Timestamp of when the job content was last updated