CompaniesCompose Company Integration

Compose Company Integration

Configure the Company's integration in a single call: store the integration credentials, switch on the features the partner is entitled to, and optionally update the Company's own master data.

Which keys config accepts depends on the integration and on the partner's entitlements — unknown keys are rejected with 400. Use List Integration Fields to discover the field list of the integration you are wiring up.

Existing configuration for the same company and integration is overwritten, so the call is safe to repeat.

curl -X POST "https://api.getkini.com/companies/1/compose/" \
  -H "Content-Type: application/json" \
  -H "Company-Id: 1" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -d '{
  "integration": "personio",
  "config": {
    "credentials": {
      "api_key": "papi-EXAMPLE-0123456789abcdef"
    },
    "ats_config": {
      "company_id": "12345",
      "subdomain": "example-company"
    }
  },
  "company_data": {
    "contact_email": "jane.doe@example.com",
    "website": "https://www.example.com"
  }
}'
{
  "detail": "success"
}
POST
/companies/{id}/compose/
POST
Base URLstring

Target server for requests. Edit to use your own host.

Bearer Token
Bearer Tokenstring
Required

Authenticate every request with an API key from the Kini Partner App, sent as Authorization: Bearer <your_api_key>.

Authenticate every request with an API key from the Kini Partner App, sent as Authorization: Bearer <your_api_key>.
path
idinteger
Required

Unique Kini ID of the company

Content-Typestring
Required

The media type of the request body

Options: application/json
header
Company-Idinteger

Kini ID of the company the key is associated with. Optional here — the company is already identified by the path parameter.

integrationstring
Required

Slug of the integration to configure, e.g. personio or softgarden

configobject

Integration settings, keyed by the config_path values from List Integration Fields. Dotted paths may be sent flat ("credentials.api_key": "…") or nested ({"credentials": {"api_key": "…"}}) — both are accepted. Keys under credentials. are written to the secret store and never returned by the API; everything else is stored as plain configuration. Unknown keys are rejected with 400, and required fields differ per integration.

company_dataobject

Optional partial update of the Company itself. Accepts the same fields as Update Company.

Request Preview
Response

Response will appear here after sending the request

Authentication

header
Authorizationstring
Required

Bearer token. Authenticate every request with an API key from the Kini Partner App, sent as Authorization: Bearer \<your_api_key\>.

Path Parameters

idinteger
Required

Unique Kini ID of the company

Example:
1

Headers

Company-Idinteger

Kini ID of the company the key is associated with. Optional here — the company is already identified by the path parameter.

Example:
1

Body

application/json
integrationstring
Required

Slug of the integration to configure, e.g. personio or softgarden

Example:
personio
configobject

Integration settings, keyed by the config_path values from List Integration Fields. Dotted paths may be sent flat ("credentials.api_key": "…") or nested (\\{"credentials": \\{"api_key": "…"\\}\\}) — both are accepted. Keys under credentials. are written to the secret store and never returned by the API; everything else is stored as plain configuration. Unknown keys are rejected with 400, and required fields differ per integration.

Example:
{"credentials":{"api_key":"papi-EXAMPLE-0123456789abcdef"},"ats_config":{"company_id":"12345","subdomain":"example-company"}}
company_dataobject

Optional partial update of the Company itself. Accepts the same fields as Update Company.

Example:
{"contact_email":"jane.doe@example.com","website":"https://www.example.com"}

Responses