Update Company
Update a specific Company partially by its unique ID. Only the fields included in the request body are modified.
curl -X PATCH "https://api.getkini.com/companies/1/" \
-H "Content-Type: application/json" \
-H "Company-Id: 1" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-d '{
"name": "Example Company GmbH",
"ats": "personio",
"partner_company_id": "EXT-COMPANY-001",
"website": "https://www.example.com",
"logo": "https://www.example.com/logo.png",
"primary_color": "#1F3A93",
"street": "Example Street 1",
"city": "Berlin",
"country": "Germany",
"postcode": "10115",
"contact_name": "Jane Doe",
"contact_email": "jane.doe@example.com",
"contact_phone": "+49 30 1234567"
}'
import requests
import json
url = "https://api.getkini.com/companies/1/"
headers = {
"Content-Type": "application/json",
"Company-Id": "1",
"Authorization": "Bearer YOUR_API_TOKEN"
}
data = {
"name": "Example Company GmbH",
"ats": "personio",
"partner_company_id": "EXT-COMPANY-001",
"website": "https://www.example.com",
"logo": "https://www.example.com/logo.png",
"primary_color": "#1F3A93",
"street": "Example Street 1",
"city": "Berlin",
"country": "Germany",
"postcode": "10115",
"contact_name": "Jane Doe",
"contact_email": "jane.doe@example.com",
"contact_phone": "+49 30 1234567"
}
response = requests.patch(url, headers=headers, json=data)
print(response.json())
const response = await fetch("https://api.getkini.com/companies/1/", {
method: "PATCH",
headers: {
"Content-Type": "application/json",
"Company-Id": "1",
"Authorization": "Bearer YOUR_API_TOKEN"
},
body: JSON.stringify({
"name": "Example Company GmbH",
"ats": "personio",
"partner_company_id": "EXT-COMPANY-001",
"website": "https://www.example.com",
"logo": "https://www.example.com/logo.png",
"primary_color": "#1F3A93",
"street": "Example Street 1",
"city": "Berlin",
"country": "Germany",
"postcode": "10115",
"contact_name": "Jane Doe",
"contact_email": "jane.doe@example.com",
"contact_phone": "+49 30 1234567"
})
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
"bytes"
"encoding/json"
)
func main() {
data := []byte(`{
"name": "Example Company GmbH",
"ats": "personio",
"partner_company_id": "EXT-COMPANY-001",
"website": "https://www.example.com",
"logo": "https://www.example.com/logo.png",
"primary_color": "#1F3A93",
"street": "Example Street 1",
"city": "Berlin",
"country": "Germany",
"postcode": "10115",
"contact_name": "Jane Doe",
"contact_email": "jane.doe@example.com",
"contact_phone": "+49 30 1234567"
}`)
req, err := http.NewRequest("PATCH", "https://api.getkini.com/companies/1/", 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/companies/1/')
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 = '{
"name": "Example Company GmbH",
"ats": "personio",
"partner_company_id": "EXT-COMPANY-001",
"website": "https://www.example.com",
"logo": "https://www.example.com/logo.png",
"primary_color": "#1F3A93",
"street": "Example Street 1",
"city": "Berlin",
"country": "Germany",
"postcode": "10115",
"contact_name": "Jane Doe",
"contact_email": "jane.doe@example.com",
"contact_phone": "+49 30 1234567"
}'
response = http.request(request)
puts response.body
{
"id": 1,
"name": "Example Company GmbH",
"slug": "example-company-gmbh",
"ats": "personio",
"ats_name": "Personio",
"partner": 1,
"partner_company_id": "EXT-COMPANY-001",
"website": "https://www.example.com",
"logo": "https://www.example.com/logo.png",
"primary_color": "#1F3A93",
"street": "Example Street 1",
"city": "Berlin",
"country": "Germany",
"postcode": "10115",
"job_sync_active": true,
"candidate_sync_active": true,
"contact_name": "Jane Doe",
"contact_email": "jane.doe@example.com",
"contact_phone": "+49 30 1234567",
"jobs_last_synced_at": "2026-08-06T04:12:07.118934Z",
"status": "active",
"is_test": false,
"magic_link": "https://app.getkini.com/magic/EXAMPLEmagiclinktoken12345x/",
"created_at": "2025-11-18T09:24:31.664829Z",
"updated_at": "2026-07-29T14:03:55.812446Z"
}
{
"error": "Not Found",
"message": "The requested resource was not found",
"code": 404
}
/companies/{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>.Unique Kini ID of the company
The media type of the request body
Kini ID of the company the key is associated with
Display name of the company
Slug of the ATS integration to link this company to. Retrieve the full list of available slugs from List Integrations.
External identifier of the company in the partner's system
Company website URL
URL of the company logo
Hex color used to brand the company's job board
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
Slug of the ATS integration to link this company to. Retrieve the full list of available slugs from List Integrations.
personioExternal identifier of the company in the partner's system
EXT-COMPANY-001Example Street 1BerlinGermany10115Jane Doejane.doe@example.com+49 30 1234567Responses
Unique Kini ID of the company
Display name of the company
URL-friendly slug of the company
Slug of the ATS integration the company is linked to. Retrieve the full list of available slugs from List Integrations.
Human-readable name of the linked ATS
Kini ID of the owning partner
External identifier of the company in the partner's system
Company website URL
URL of the company logo
Hex color used to brand the company's job board
Whether job synchronisation from the ATS is active for the company. Derived from the company's entitlements, not a stored flag — it cannot be set through this API.
Whether candidate synchronisation to the ATS is active for the company. Derived from the company's entitlements, not a stored flag — it cannot be set through this API.
Timestamp of the last successful job sync
Lifecycle status of the company
invitedrequestedactivefailingdeactivateddeletedWhether the company is marked as a test record
URL of the active magic link for the company, if any
Timestamp of when the company was first created
Timestamp of when the company was last updated