Set an investor's key contact
/investors/{id}/actions/set-key-contactMakes key_contact_id, an internal user of the token's organisation, the key contact of the investor's client organisation and returns the investor. All users of that organisation share it; only the addressed investor is announced. An unknown, foreign or non-internal id returns 422 exists; no client relationship returns 422 no_key_contact_relationship. The same key contact again returns 200 with no event. Emits investor.updated and sends no email. Setting the previous one undoes it. Replaces PUT /investors/{userId}/key-contact.
Path parameters
The investor's id, a uuid. An unknown investor, or one outside the token's organisation and its client organisations, returns 404.
Query parameters
Validate and run the call without committing it, returning what the real call would return with
meta.dry_runset.
Headers
Makes a retry safe. Send a new UUID for each new request and reuse it only to retry that request; the first response is replayed for 24 hours.
Request body
application/json, required · InvestorSetKeyContact
The id of an internal user of the token's organisation.
{
"key_contact_id": "9f8e7d6c-5b4a-4039-8271-6e5d4c3b2a19"
}Responses
{
"data": {
"id": "9a9d1c5e-4f2b-4c8e-9a7d-2f1e6b3c4d5a",
"first_name": "string",
"last_name": "string",
"title": "string",
"email": "string",
"status": "active",
"external_id": "string",
"sso_id": "string",
"key_contact_id": "9a9d1c5e-4f2b-4c8e-9a7d-2f1e6b3c4d5a",
"invite": {
"id": "9a9d1c5e-4f2b-4c8e-9a7d-2f1e6b3c4d5a",
"status": "invited",
"expires_at": "2026-06-12T10:00:00+00:00"
},
"two_factor_enabled": true,
"last_login": "2026-06-12T10:00:00+00:00",
"created_at": "2026-06-12T10:00:00+00:00",
"updated_at": "2026-06-12T10:00:00+00:00",
"data_capture": {},
"onboarding": {
"flow_id": "9a9d1c5e-4f2b-4c8e-9a7d-2f1e6b3c4d5a",
"flow_name": "string",
"status": "pending",
"completed_at": "2026-06-12T10:00:00+00:00"
},
"invites": [
{
"id": "9a9d1c5e-4f2b-4c8e-9a7d-2f1e6b3c4d5a",
"type": "string",
"status": "string",
"email": "string",
"expires_at": "2026-06-12T10:00:00+00:00",
"invited_at": "2026-06-12T10:00:00+00:00",
"created_at": "2026-06-12T10:00:00+00:00"
}
],
"roles": [
{
"id": 1,
"name": "string",
"label": "string"
}
]
}
}Authorization failed. error.code is one of org_disabled,
ip_blocked, missing_scope, scope_disabled, user_disabled.
The request conflicts with existing state (error.code = conflict),
e.g. a compliance flow with the requested name already exists.
The request can't be processed (HTTP 422): validation_failed with one ErrorDetail per
problem, or a code documented on the operation.
Examples
curl -X POST https://your-org-domain/kong/core/api/v2/investors/{id}/actions/set-key-contact\
-H "Authorization: Bearer $HELM_API_KEY"\
-H "Content-Type: application/json"\
-d '{
"key_contact_id": "9f8e7d6c-5b4a-4039-8271-6e5d4c3b2a19"
}'