Update Job
Update a specific Job partially by its unique ID.
curl -X PATCH "https://api.getkini.com/jobs/123456" \
-H "Content-Type: application/json" \
-H "Company-Id: 1" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-d '{
"external_id": "EXT-123456",
"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",
"work_schedule": "full_time",
"employment_type": "permanent",
"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": {
"department": "Engineering",
"location_type": "Hybrid",
"salary_range": "60000-80000"
},
"import_source": "api",
"run_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}'
import requests
import json
url = "https://api.getkini.com/jobs/123456"
headers = {
"Content-Type": "application/json",
"Company-Id": "1",
"Authorization": "Bearer YOUR_API_TOKEN"
}
data = {
"external_id": "EXT-123456",
"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",
"work_schedule": "full_time",
"employment_type": "permanent",
"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": {
"department": "Engineering",
"location_type": "Hybrid",
"salary_range": "60000-80000"
},
"import_source": "api",
"run_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
response = requests.patch(url, headers=headers, json=data)
print(response.json())
const response = await fetch("https://api.getkini.com/jobs/123456", {
method: "PATCH",
headers: {
"Content-Type": "application/json",
"Company-Id": "1",
"Authorization": "Bearer YOUR_API_TOKEN"
},
body: JSON.stringify({
"external_id": "EXT-123456",
"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",
"work_schedule": "full_time",
"employment_type": "permanent",
"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": {
"department": "Engineering",
"location_type": "Hybrid",
"salary_range": "60000-80000"
},
"import_source": "api",
"run_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
})
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
"bytes"
"encoding/json"
)
func main() {
data := []byte(`{
"external_id": "EXT-123456",
"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",
"work_schedule": "full_time",
"employment_type": "permanent",
"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": {
"department": "Engineering",
"location_type": "Hybrid",
"salary_range": "60000-80000"
},
"import_source": "api",
"run_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}`)
req, err := http.NewRequest("PATCH", "https://api.getkini.com/jobs/123456", 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/jobs/123456')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(uri)
request['Content-Type'] = 'application/json'
request['Company-Id'] = '1'
request['Authorization'] = 'Bearer YOUR_API_TOKEN'
request.body = '{
"external_id": "EXT-123456",
"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",
"work_schedule": "full_time",
"employment_type": "permanent",
"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": {
"department": "Engineering",
"location_type": "Hybrid",
"salary_range": "60000-80000"
},
"import_source": "api",
"run_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}'
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
The media type of the request body
ID of the Company
Job's ID in external ATS systems, used for integrations
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)
Work mode of the job (remote, hybrid, on-site)
Language of the job posting as an ISO 639-1 code (e.g. 'en', 'de')
Category of the job, e.g. 'sales'
Work schedule type for the position (full-time, part-time, flexible)
Employment type of the job (permanent, contract, minijob, etc.)
Required or expected seniority level
Required 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
Fields of the application form on the company's career page, in display order
Custom fields for the job posting as key-value pairs
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.
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
Body
Detailed description of the job's responsibilities and requirements
Example job description. We are looking for a Software Engineer (m/w/d) to join our team in Berlin.URL of the job posted on the company's career page
https://careers.example.com/jobs/123456URL through which applicants can apply on the company's career page
https://careers.example.com/jobs/123456/applyPosting status of the job (active, deleted, archived)
activedeletedarchivedCategory 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_localizationwarehouseWork schedule type for the position (full-time, part-time, flexible)
full_timepart_timeflexibleEmployment type of the job (permanent, contract, minijob, etc.)
contractfreelanceinterntemporarypermanentvolunteerapprenticeshipworking_studentminijobotherRequired or expected seniority level
unexperiencedjuniormid_levelseniorleadmanagerdirectorexecutiveContractual limitations or terms associated with the job
Unlimited contractE-Mail Address of the contact person responsible for the job posting
jane.doe@example.comWork title of the contact person responsible for the job posting
Head of HRPhone Number of the contact person responsible for the job posting
+49 30 1234567Salutation of the contact person responsible for the job posting
FrauFields of the application form on the company's career page, in display order
Custom fields for the job posting as key-value pairs
{"department":"Engineering","location_type":"Hybrid","salary_range":"60000-80000"}Identifier of the import run this job last came in on. Useful when tracing a sync.
3fa85f64-5717-4562-b3fc-2c963f66afa6Responses
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