Send an investor their invitation
/investors/{id}/actions/send-inviteSends the investor their invitation email and returns it with invite. An Invited or Draft invite is reused with its expiry reset; otherwise a new one is created, owned by the token's user when the token has one (a personal token or a service identity) and by nobody otherwise. Any investor status can be invited, but one who has registered returns 409 invalid_state. Calling again sends again. The email goes out after commit, never on dry_run. Emits investor.invite_sent. It can't be undone. Replaces POST /investors/{userId}/invite.
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.
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/send-invite\
-H "Authorization: Bearer $HELM_API_KEY"\
-H "Content-Type: application/json"