---
title: "Get lock session by ID"
method: GET
path: "/lkbx/sessions/{id}"
tags: ["Lock Sessions"]
---

# Get lock session by ID

`GET /lkbx/sessions/{id}`

## Request

- Base URL: `https://dashboard.researchanddesire.com/api/v1`
- URL: `https://dashboard.researchanddesire.com/api/v1/lkbx/sessions/{id}`
- Auth: one of:
  - HTTP bearer
  - OAuth 2
    - Authorization code: `/oauth/authorize`
    - Token URL: `/oauth/token` scopes: `lkbx:read`

Returns detailed information about a specific lock session, including all segment history. Returns 404 if the session does not exist or belongs to a user you do not have access to.

## Path parameters

- `id` integer, required

## Response `200`

Lock session with segments

- LockSessionDetailResponse
  - `ok` true, required
  - `data` LockSessionDetail, required
    - `id` integer: Session ID
    - `bubbleId` string: Unique public identifier
    - `publicId` string: Public session ID
    - `ownerId` integer: Owner user ID
    - `name` string: Session name
    - `lockState` 'pending' | 'locked' | 'completed' | 'abandoned' | 'break': Current lock state
    - `duration` integer, nullable: Lock duration in seconds. `null` when the keyholder hid the timer and the caller is not a keyholder of this session.
    - `startDate` string, date-time, nullable: Session start time
    - `endDate` string, date-time, nullable: Session end time. `null` when the keyholder hid the timer and the caller is not a keyholder of this session.
    - `isActive` boolean: Whether session is active
    - `isFrozen` boolean: Whether the session clock is frozen, e.g. by Chaster. A frozen session's end date is stale.
    - `isTimeDisplayed` boolean: Whether the lockee may see the remaining time. When false, `endDate` and `duration` are `null` for callers who are not keyholders.
    - `revealTimeBeforeUnlock` integer, nullable: Seconds before unlock at which a hidden timer becomes visible to the lockee on an active, unfrozen session. `null` when never revealed early.
    - `createdAt` string, date-time: Creation timestamp
    - `keyholderIds` integer[]: IDs of the users assigned as keyholders for this session. An empty array means a self-lock (no keyholder). Resolve IDs to usernames via the Users endpoints.
    - `LockSegment` LockSegment[]
      - `id` integer
      - `type` string: Segment type (start, locked, break, unlocked)
      - `createdAt` string, date-time
      - `isLocked` boolean: Lock state during segment

## Other responses

- `400`: Invalid request parameters
- `401`: Authentication required or token invalid
- `404`: Lock session not found, or the caller has no user record

## Changes

- **2026-10-15** `682fc4d7f6d5`: 1 breaking, 3 info
  - the response property `data/allOf[#/components/schemas/LockSessionSummary]/duration` became nullable for the status `200`
  - added the optional property `data/allOf[#/components/schemas/LockSessionSummary]/isFrozen` to the response with the `200` status
  - added the optional property `data/allOf[#/components/schemas/LockSessionSummary]/isTimeDisplayed` to the response with the `200` status
  - added the optional property `data/allOf[#/components/schemas/LockSessionSummary]/revealTimeBeforeUnlock` to the response with the `200` status
- **2026-09-22** `2411203b3c10`: 2 info
  - the endpoint scheme security `bearerAuth` was added to the API
  - the endpoint scheme security `oauth2` was added to the API
- **2026-07-26** `9c6dc82bb579`: 1 info
  - added the optional property `data/allOf[#/components/schemas/LockSessionSummary]/keyholderIds` to the response with the `200` status

[Operation history](https://skmtc.dev/researchanddesire/apis/research-and-desire-api/changes/lkbx/sessions/:id/get.md)

---

[API](https://skmtc.dev/researchanddesire/apis/research-and-desire-api.md) - [All operations](https://skmtc.dev/researchanddesire/apis/research-and-desire-api/llms.txt) - [OpenAPI document](https://skmtc.dev/researchanddesire/apis/research-and-desire-api/revisions/682fc4d7f6d5?raw)
