---
title: "Get Session"
method: GET
path: "/sessions/{session_id}"
tags: ["Sessions"]
---

# Get Session

`GET /sessions/{session_id}`

Get a session by ID with optional transcript messages.

Only returns text messages from user and assistant (excludes system messages,
tool calls, and other internal message types).

The `recording_url` field contains a URL to download the session recording.
The field is null if the session is still in progress, the recording is
still processing, or the recording is unavailable.

## Path parameters

- `session_id` string, uuid, required

## Query parameters

- `include_messages` boolean — Include transcript messages in response

## Headers

- `x-api-key` string, nullable

## Response `200`

Successful Response

- PublicSessionWithMessages — Session with optional transcript messages.
  - `id` string, uuid, required
  - `project_id` string, uuid, nullable, required
  - `duration_seconds` integer, nullable, required
  - `status` string, required
  - `created_at` string, date-time, required
  - `email` string, nullable, required
  - `summary` string, nullable, required
  - `intent_rate` integer, nullable, required
  - `intent_name` string, nullable, required
  - `labels` object, nullable, required
  - `metadata` object, nullable, required
  - `tracked_journeys` object, nullable, required
  - `excluded_from_analytics_at` string, date-time, nullable — Set when an operator marked this session as not counting towards analytics (monitoring or test traffic). The session is still real and still listed here — this flag is what lets you leave it out of your own numbers. Null means it counts normally.
  - `goals` string[] — IDs of goal journeys completed in this session
  - `messages` PublicTranscriptMessage[]
    - `id` string, uuid, required
    - `speaker` 'user' | 'assistant', required
    - `content` string, required
    - `created_at` string, date-time, required
  - `recording_url` string, nullable — Presigned URL to download or stream the session recording. Expires in 1 hour - fetch a fresh URL if expired. Null if: session is still in progress, recording is processing, or recording is unavailable.

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/karumi/apis/karumi-public-api.md) · [All operations](https://skmtc.dev/karumi/apis/karumi-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/karumi/karumi-public-api/revisions/8e5e6a464b81/schema)
