List Companies
List the companies the authenticated key has access to — every company under the partner for a partner-scoped key, or just its own company for a company-scoped key.
Results are paginated (10 per page, 50 maximum) and ordered by -created_at unless you pass ordering. Each entry carries the same fields as Get Company.
curl -X GET "https://api.getkini.com/companies/?name=Example&ats=personio&partner_company_id=EXT-COMPANY-001&status=%5B%22active%22%5D&search=Example&page=1&page_size=20&ordering=name" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN"
import requests
import json
url = "https://api.getkini.com/companies/?name=Example&ats=personio&partner_company_id=EXT-COMPANY-001&status=%5B%22active%22%5D&search=Example&page=1&page_size=20&ordering=name"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
}
response = requests.get(url, headers=headers)
print(response.json())
const response = await fetch("https://api.getkini.com/companies/?name=Example&ats=personio&partner_company_id=EXT-COMPANY-001&status=%5B%22active%22%5D&search=Example&page=1&page_size=20&ordering=name", {
method: "GET",
headers: {
"Content-Type": "application/json",
"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/companies/?name=Example&ats=personio&partner_company_id=EXT-COMPANY-001&status=%5B%22active%22%5D&search=Example&page=1&page_size=20&ordering=name", nil)
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
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/?name=Example&ats=personio&partner_company_id=EXT-COMPANY-001&status=%5B%22active%22%5D&search=Example&page=1&page_size=20&ordering=name')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri)
request['Content-Type'] = 'application/json'
request['Authorization'] = 'Bearer YOUR_API_TOKEN'
response = http.request(request)
puts response.body
{
"count": 46,
"next": "https://api.getkini.com/companies/?page=2",
"previous": null,
"results": [
{
"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"
}
]
}
/companies/
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>.Filter by company name. Case-insensitive substring match.
Filter by the slug of the company's ATS integration. Exact match.
Filter by the company's external identifier in your system. Exact match.
Filter by lifecycle status. Repeat the parameter to match several values, e.g. status=active&status=failing.
Free-text search across name, the ATS slug, and partner_company_id.
A page number within the paginated result set.
Number of results to return per page. Defaults to 10, maximum 50.
Sort field. Prefix with - to reverse. One of name, status, created_at, updated_at. Defaults to -created_at.
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\>.
Query Parameters
Filter by the company's external identifier in your system. Exact match.
EXT-COMPANY-001Filter by lifecycle status. Repeat the parameter to match several values, e.g. status=active&status=failing.
["active"]Sort field. Prefix with - to reverse. One of name, status, created_at, updated_at. Defaults to -created_at.
nameResponses
Total number of records available across all pages
URL to the next page of results
URL to the previous page of results
List of companies