Register a step document upload
/investments/{investment_id}/step-document-uploadsRegisters an already-uploaded attachment against a workflow step of the investment's deal and returns the upload with a Location. It does not move the investor to another step, so use POST /journey-events for that. It emits no webhook and sends no email, and has no delete: the attachment stays registered. It can't be undone.
Path parameters
The investment the uploads belong to.
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
The step on the deal's transaction workflow the document is for.
The uploaded attachment to register.
{
"step_id": "5f6a7b8c-9d0e-4f1a-8b2c-3d4e5f6a7b8c",
"attachment_id": "7b8c9d0e-1f2a-4b3c-8d4e-5f6a7b8c9d0e"
}Responses
{
"data": {
"id": "9a9d1c5e-4f2b-4c8e-9a7d-2f1e6b3c4d5a",
"deal_id": "9a9d1c5e-4f2b-4c8e-9a7d-2f1e6b3c4d5a",
"investment_id": "9a9d1c5e-4f2b-4c8e-9a7d-2f1e6b3c4d5a",
"step_id": "9a9d1c5e-4f2b-4c8e-9a7d-2f1e6b3c4d5a",
"attachment_id": "9a9d1c5e-4f2b-4c8e-9a7d-2f1e6b3c4d5a",
"investor_id": "9a9d1c5e-4f2b-4c8e-9a7d-2f1e6b3c4d5a",
"external_investor_id": "9a9d1c5e-4f2b-4c8e-9a7d-2f1e6b3c4d5a",
"created_at": "2026-06-12T10:00:00+00:00",
"updated_at": "2026-06-12T10:00:00+00:00"
}
}Authorization failed. error.code is one of org_disabled,
ip_blocked, missing_scope, scope_disabled, user_disabled.
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/investments/{investment_id}/step-document-uploads\
-H "Authorization: Bearer $HELM_API_KEY"\
-H "Content-Type: application/json"\
-d '{
"step_id": "5f6a7b8c-9d0e-4f1a-8b2c-3d4e5f6a7b8c",
"attachment_id": "7b8c9d0e-1f2a-4b3c-8d4e-5f6a7b8c9d0e"
}'