---
title: "Create Session"
method: POST
path: "/voice/v1/sessions"
tags: ["protocol"]
---

# Create Session

`POST /voice/v1/sessions`

Create a new scribing session. Returns a `session_id` that must be used in every subsequent call (audio upload, end session, status polling) and an `upload_url` to which audio is sent. Only `upload_type` is required — use `single` (one audio file, max 10 MB via the API; for larger recordings use the SDKs, which chunk automatically) unless you need chunked or streaming upload. The communication protocol is derived from `upload_type` by the server: `single`/`chunked` → http, `stream` → websocket.

## Request body

- CreateSessionRequest
  - `language_hint` string[] — ISO 639-1 language code(s) hinting the audio input language. If your UI doesn't offer a language picker, use `["auto_detect"]` for the best results.
  - `model` 'pro' | 'lite' — Model ID from the discovery document.
  - `templates` string[] — Optional template IDs to extract (max 2). See List Templates for valid IDs.
  - `upload_type` 'single' | 'chunked' | 'stream', required — Audio upload method. `single` — one complete audio file up to 10 MB; `chunked` — sequential HTTP chunks for longer recordings; `stream` — real-time WebSocket. The communication protocol is derived automatically (single/chunked → http, stream → websocket).
  - `session_id` string — Optional client-supplied session id (16–32 chars). If omitted, the server generates one.
  - `additional_data` object — Optional pass-through metadata returned in webhooks and status responses (≤4KB recommended).
  - `patient_details` object — Optional patient demographic / identifier metadata. `oid` is promoted to `patient_oid` for indexing.

## Response `201`

Session created

- CreateSessionResponse
  - `session_id` string — Unique session identifier. Use in all subsequent calls.
  - `status` string
  - `created_at` string, date-time
  - `expires_at` string, date-time
  - `upload_url` string — Endpoint for uploading audio to this session.
  - `patient_details` object

## Other responses

- `400` — Invalid request (e.g. template validation failed)
- `401` — Authentication failed
- `422` — Validation error

---

[API](https://skmtc.net/eka/apis/eka-developer-apis.md) · [All operations](https://skmtc.net/eka/apis/eka-developer-apis/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/eka/eka-developer-apis/revisions/9ea23456f722/schema)
