---
title: "List coding sessions"
method: GET
path: "/api/apps/{app_id}/imported/sessions"
---

# List coding sessions

`GET /api/apps/{app_id}/imported/sessions`

## Request

- Base URL: `https://app.base44.com`
- URL: `https://app.base44.com/api/apps/{app_id}/imported/sessions`
- Auth: HTTP bearer

<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

List this imported app's sessions, newest first by creation time and identifier. Authenticate with platform Bearer credentials and app editor access. Defaults to 20 items; maximum 100. Return next_cursor as cursor with the same limit. Shares the 60 reads per minute per user limit. Every response includes request and rate-limit headers.

## Path parameters

- `app_id` string, required

## Query parameters

- `limit` integer: Maximum sessions per page. Defaults to 20.
- `cursor` string: The next_cursor from the previous page, or omit it for the first page.
- `client_reference` string: Restrict the page to your application reference, or omit it to list all sessions.

## Response `200`

Successful Response

- SessionList
  - `items` SessionResponse[], required: Sessions ordered by creation time, newest first, then identifier descending.
    - `launch_key` string, nullable: The original Idempotency-Key, or `null` for sessions created before key recovery was recorded. Use the same principal and key to retry a queued launch.
    - `client_reference` string, nullable: Your application reconciliation reference, or null.
    - `id` string, required: The session's opaque identifier.
    - `state` 'queued' | 'running' | 'opening_pull_request' | 'needs_input' | 'completed' | 'failed' | 'cancelling' | 'cancelled', required: The session's state: `queued`, `running`, `opening_pull_request`, `needs_input`, `completed`, `failed`, `cancelling`, or `cancelled`.
    - `message_id` string, nullable, required: The UUID of the session's user message, or `null` before dispatch. Queued processing updates it to the UUID used for the turn.
    - `input_request_id` string, nullable: Opaque identifier of the current question or approval pause, or `null` when the session is not waiting for input or the pause predates identifier tracking. Use it to deduplicate notifications for repeated input requests. To answer, use the `input_request_id` from Get a coding session's open question.
    - `repository_full_name` string, required: The connected repository the session runs in.
    - `branch_id` string, nullable, required: The session's Base Code branch identifier, or `null` before provisioning.
    - `branch_name` string, nullable, required: The session's working Git branch, or `null` before provisioning.
    - `session_url` string, nullable, required: The Base Code editor URL for inspecting the session or answering pending questions, or `null` until its branch is provisioned.
    - `pull_request` SessionPullRequest, required
      - `number` integer, required: The pull request's number in the connected repository.
      - `url` string, required: The pull request's URL.
    - `error_code` string, nullable, required: The stable failure cause, or `null` if there is no failure.
    - `outcome` 'pull_request' | 'answer', nullable: How a `completed` session ended: `pull_request` when it opened or updated a pull request, `answer` when it ended without one and replied instead; `has_unpublished_changes` says whether that branch still changes files. `null` until the session completes.
    - `summary` string, nullable: The session's final reply in Markdown, up to 10,000 characters: the answer for an `answer` outcome, the change summary for a `pull_request` outcome. `null` until the session publishes.
    - `has_unpublished_changes` boolean: `true` when an `answer` session's branch changes files that no pull request carries yet: send a message asking for one to have the agent open it. `false` otherwise.
  - `next_cursor` string, nullable, required: An opaque token for the next page, or `null` for the last page.

## Other responses

- `400`: `invalid_cursor`: The cursor is invalid or belongs to another app, workspace, or limit.
- `401`: `unauthenticated`: Missing or invalid credentials.
- `403`: `forbidden`: You don't have write access to this app or repository.
- `404`: `not_found`: The imported app or session was not found.
- `409`: `idempotency_conflict` or `conflict`: The request conflicts with an earlier launch or current repository state.
- `422`: `invalid_request`: The input or Idempotency-Key is invalid.
- `429`: `rate_limited`: Retry after the number of seconds in Retry-After.

## Changes

> 58 revisions in range; 1 not diffed.

- **2026-10-21** `c23775445de2`: 4 breaking, 2 warning, 2 info
  - `query` request parameter `client_reference` list-of-types was narrowed by removing types `null`
  - `query` request parameter `cursor` list-of-types was narrowed by removing types `null`
  - for the `query` request parameter `client_reference`, the minLength was increased from `0` to `1`
  - added the pattern `^[A-Za-z0-9_.:-]+$` to the `query` request parameter `client_reference`
  - …4 more
- **2026-10-15** `be100564f5a1`: 1 info
  - added the optional property `items/items/has_unpublished_changes` to the response with the `200` status
- **2026-10-15** `99162eae7daf`: 1 info
  - removed the non-success response with the status `500`
- **2026-10-14** `31b59ecae1c9`: 2 info
  - added the optional property `items/items/outcome` to the response with the `200` status
  - added the optional property `items/items/summary` to the response with the `200` status
- **2026-10-13** `b92cc2f13639`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/adexad/apis/base44-app-management-api/changes/api/apps/:app_id/imported/sessions/get.md)

---

[API](https://skmtc.dev/adexad/apis/base44-app-management-api.md) · [All operations](https://skmtc.dev/adexad/apis/base44-app-management-api/llms.txt) · [OpenAPI document](https://skmtc.dev/adexad/apis/base44-app-management-api/revisions/fa29e915c226?raw)
