---
title: "Get a session"
method: GET
path: "/phones/sessions/{session_id}"
tags: ["phones"]
---

# Get a session

`GET /phones/sessions/{session_id}`

Returns one session for the Session Inspector: session lifecycle + phone display fields + workflow name (when tied to one) + an inlined presigned recording URL. Works for active and terminal sessions, and for workflow runs and workflow-less interactive leases. Org-scoped: another org's session reads as not found.

## Path parameters

- `session_id` string, uuid, required — Phone session identifier

## Response `200`

OK

- PhoneSessionDetailResponse — Detail for a single session: the session, phone display fields, and a recording URL when available.
  - `$schema` string, uri — A URL to the JSON Schema for this object.
  - `allocated_at` string, date-time, required — When the session claimed the phone.
  - `allocated_by` 'workflow_editor' | 'dashboard_run' | 'api_run' | 'interactive' — How the session was started.
  - `capture_enabled` boolean, required — Whether media this session produces on the phone is captured into the org's file library. On by default; set capture=false at allocation to disable.
  - `deallocated_at` string, date-time — When the session released the phone; absent while active.
  - `is_dedicated_phone` boolean, required — Whether the phone is a dedicated (rented) phone.
  - `location` string — Physical hosting location of the phone.
  - `model_name` string — Hardware model name of the phone.
  - `name` string — Optional user-chosen session label; unique among the org's active sessions.
  - `nickname` string — User-assigned phone nickname.
  - `phone_id` string, required — Phone the session ran on.
  - `phone_name` string — Display name of the phone.
  - `phone_status` 'active' | 'inactive' | 'maintenance' | 'suspended', required — Fleet status of the phone.
  - `phone_type` 'android' | 'iphone' | 'unknown' — Platform of the phone.
  - `recording_status` 'ready' | 'pending' | 'expired', required — 'ready' when the recording URL is present, 'pending' while the recording is still being processed, or 'expired' when it is past the plan's recording retention window.
  - `recording_url` string — Playback URL for the session recording, set only when ready.
  - `session_id` string, required — Session identifier.
  - `source` 'workflow' | 'interactive', required — 'workflow' when tied to a workflow, else 'interactive'.
  - `status` 'active' | 'completed' | 'cancelled' | 'expired', required — Session lifecycle status.
  - `tags` object — Optional key->value labels attached to the session.
  - `telemetry_disabled` boolean, required — Whether session telemetry was disabled at allocation. When true the session has no live or archived trace by policy.
  - `workflow_id` string — Workflow the session executed, when source is 'workflow'.
  - `workflow_name` string — Name of the workflow the session executed.

## Other responses

- `default` — Error

## Changes

> 18 revisions in range; 8 could not be searched.

- **2026-07-13** `84e4b1138a85` — 1 warning, 2 info
  - added the new `expired` enum value to the `recording_status` response property for the response status `200`
  - added the optional property `name` to the response with the `200` status
  - added the optional property `tags` to the response with the `200` status

[Change history](https://skmtc.dev/axilioai/apis/axilio-api/changes/phones/sessions/:session_id/get.md)

---

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