---
title: "Create a session configuration"
method: POST
path: "/api/v1/session-configurations"
tags: ["Session Configurations"]
---

# Create a session configuration

`POST /api/v1/session-configurations`

## Request

- Base URL: `https://api.korala.ai`
- URL: `https://api.korala.ai/api/v1/session-configurations`
- Auth: one of:
  - API key in header `X-API-Key`
  - `bearer` (a scheme the document does not define)

## Headers

- `X-Korala-Mode` 'live' | 'test'

## Request body

- CreateSessionConfigurationDto
  - `name` string, required
  - `slug` string, required
  - `description` string
  - `workflowSlugs` string[]: Ordered array of workflow slugs
  - `workflowBindings` SessionWorkflowBindingDto[]: Expanded workflow bindings. When omitted, workflowSlugs are used as one binding each.
    - `workflowSlug` string, required
    - `participantRoles` SessionParticipantRole[]
    - `outputKey` string
    - `context` object
    - `maxAttempts` number
  - `subjectKind` 'individual' | 'business'
  - `isVerification` boolean: Enable resolution (approved/rejected)
  - `autoResolve` boolean: Auto-resolve based on validation results
  - `finalManualReviewRequired` boolean: Require explicit partner approval or decline after workflow completion
  - `defaultExpiresInMinutes` number: Default session expiration in minutes
  - `resubmissionMinimumWindowMinutes` integer: Minutes the person has at least, before the session expires, whenever their work resumes: every resubmission (automatic or requested, a reopen included) and every release of a session from pending_review back to in_progress (a review approval, or an async check that finishes, with workflows still to run) moves expiresAt to now plus this window when that is later, never earlier. Read each time, so a change applies to sessions already under way. 0 never extends: with expiresAt already passed, a resubmit, reopen or review approval that would resume the session is refused with 409 (reason: session_expired). A session with no expiry, or that has expired, is unchanged.
  - `defaultRedirectUrl` string: Default redirect URL after session completion

## Response `201`

- SessionConfigurationDto
  - `sandbox` boolean, required: Persisted execution mode: true for test data
  - `id` string, required
  - `organizationId` string, required
  - `name` string, required
  - `slug` string, required
  - `description` string, nullable
  - `workflowSlugs` string[], required
  - `workflowBindings` SessionWorkflowBindingDto[], required
    - `workflowSlug` string, required
    - `participantRoles` SessionParticipantRole[]
    - `outputKey` string
    - `context` object
    - `maxAttempts` number
  - `subjectKind` 'individual' | 'business', required
  - `isVerification` boolean, required
  - `autoResolve` boolean, required
  - `finalManualReviewRequired` boolean, required
  - `defaultExpiresInMinutes` number, nullable
  - `resubmissionMinimumWindowMinutes` integer, required: Minutes the person has at least, before the session expires, whenever their work resumes: every resubmission (automatic or requested, a reopen included) and every release of a session from pending_review back to in_progress (a review approval, or an async check that finishes, with workflows still to run) moves expiresAt to now plus this window when that is later, never earlier. Read each time, so a change applies to sessions already under way. 0 never extends: with expiresAt already passed, a resubmit, reopen or review approval that would resume the session is refused with 409 (reason: session_expired). A session with no expiry, or that has expired, is unchanged.
  - `defaultRedirectUrl` string, nullable
  - `isActive` boolean, required
  - `createdAt` string, date-time, required
  - `updatedAt` string, date-time, required

---

[API](https://skmtc.dev/korala/apis/korala-public-api.md) · [All operations](https://skmtc.dev/korala/apis/korala-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/korala/apis/korala-public-api/revisions/5c4d7810c507?raw)
