---
title: "Get one session"
method: GET
path: "/o/{org}/sessions/{session}"
tags: ["Sessions"]
---

# Get one session

`GET /o/{org}/sessions/{session}`

## Request

- Base URL: `https://api.prix.dev`
- URL: `https://api.prix.dev/o/{org}/sessions/{session}`
- Auth: HTTP bearer

## Response `200`

The session.

- CloudRunSession: A session as `GET …/sessions/{session}` and the session list return it. It starts with where the session lives, so its path is `/o/{org_id}/sessions/{execution_id}`; `project_id` appears only for a session the console ran in a Project. A field appears only when it has a value, and every time is RFC 3339 UTC with milliseconds. A create, a cancel and a follow-up answer it too. It has no `prompt`: the caller has its input, and `/messages` has every turn.
  - `execution_id` string, required: The session id.
  - `org_id` string, required: The org as the request's path named it.
  - `project_id` string, uuid: The Project the console ran the session in.
  - `status` 'queued' | 'allocating' | 'running' | 'paused' | 'input_required' | 'needs_review' | 'completed' | 'failed' | 'cancelling' | 'cancelled' | 'expired', required: `paused` is a resumable session parked between turns; `needs_review` finished without the proof it was asked for; `cancelling` appears only in the `202` answer to a cancel whose sandbox is still being released; `GET` reads `cancelled` once it is.
  - `harness` string: `claude`, `codex` or `opencode`.
  - `agent_id` string, uuid: The saved agent the session was started from, if any.
  - `model` string
  - `effort` string
  - `result` string: The agent's final answer for the last finished turn, in full.
  - `error` object
    - `code` string, required
    - `message` string, required
  - `repo_owner` string
  - `repo_name` string
  - `branch` string
  - `pr_url` string
  - `input_tokens` integer
  - `output_tokens` integer
  - `cache_read_tokens` integer
  - `cache_write_tokens` integer
  - `total_tokens` integer: Uncached input plus cache writes plus output.
  - `reasoning_tokens` integer
  - `total_cost_usd` number
  - `tool_calls_count` integer
  - `turns_count` integer
  - `artifacts` object[]: Every file the agent saved to `/workspace/.rush/artifacts/`. `url` downloads it from this API with no credential until `url_expires_at`, an hour after the read; read the session again for a fresh link. `GET …/artifacts/{name}` with the key also downloads it.
    - `name` string, required
    - `mime_type` string, required
    - `url` string, uri, required: A signed https link to the file on this API.
    - `url_expires_at` string, date-time, required
  - `attachments` object[]: The files the session was started or followed up with. `url` downloads one with no credential until `url_expires_at`, as for artifacts; `GET …/attachments/{id}` with the key also downloads it.
    - `id` string, uuid, required
    - `name` string, required
    - `mime_type` string, required
    - `url` string, uri, required: A signed https link to the file on this API.
    - `url_expires_at` string, date-time, required
  - `created_at` string, date-time
  - `completed_at` string, date-time

## Other responses

- `401`: No bearer, an unknown, revoked or expired one, or an API key on a route keys cannot call.
- `404`: No such resource for the caller, including one in an org the caller is not in or a Project that is private to someone else.

---

[API](https://skmtc.dev/getrush/apis/rush-api.md) · [All operations](https://skmtc.dev/getrush/apis/rush-api/llms.txt) · [OpenAPI document](https://skmtc.dev/getrush/apis/rush-api/revisions/e351f947926b?raw)
