---
title: "List sessions"
method: GET
path: "/phones/sessions"
tags: ["phones"]
---

# List sessions

`GET /phones/sessions`

Returns one page of the org's phone sessions for the Session Inspector table: active/unbilled sessions pinned on top, terminal history paginated beneath. Covers workflow runs and workflow-less interactive leases; each row links to a session. Filters: search, workflow_id, status.

## Query parameters

- `limit` integer — max rows to return (default 50, max 100)
- `offset` integer — rows to skip for pagination
- `search` string — case-insensitive match on phone/session/workflow
- `workflow_id` string — only sessions for this workflow
- `status` string[], nullable — filter by session status (ACTIVE/COMPLETED/CANCELLED/EXPIRED); repeatable
- `source` string[], nullable — filter by source: workflow and/or interactive; repeatable
- `dedicated` string[], nullable — filter by type: shared and/or dedicated; repeatable
- `started_after` string — only sessions started at/after this RFC3339 time
- `started_before` string — only sessions started at/before this RFC3339 time
- `ended_after` string — only sessions de-allocated at/after this RFC3339 time
- `ended_before` string — only sessions de-allocated at/before this RFC3339 time
- `sort` string — sort column: started|ended|status|duration|source (default started)
- `order` string — sort direction: asc|desc (default desc)

## Response `200`

OK

- PhoneSessionListResponse — One page of the sessions list: active and queued sessions pinned on top, completed history paginated beneath.
  - `$schema` string, uri — A URL to the JSON Schema for this object.
  - `limit` integer, required — Page size used for this response.
  - `offset` integer, required — Pagination offset used for this response.
  - `sessions` PhoneSessionListItem[], nullable, required — Page of session rows.
    - `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.
    - `deallocated_at` string, date-time — When the session released the phone; absent while active.
    - `duration_seconds` integer — Session length in seconds; 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_type` 'android' | 'iphone' | 'unknown' — Platform of the phone.
    - `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.
    - `thumbnail_url` string — Short-lived URL for the session's current screen thumbnail; present on active sessions only. The image updates in place — re-fetch the list for a fresh URL.
    - `workflow_id` string — Workflow the session executed, when source is 'workflow'.
    - `workflow_name` string — Name of the workflow the session executed.
  - `total` integer, required — Total number of sessions matching the query.

## Other responses

- `default` — Error

---

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