> ## Documentation Index
> Fetch the complete documentation index at: https://docs.blobhub.io/llms.txt
> Use this file to discover all available pages before exploring further.

# List Session Objects

List objects stored in a session, with prefix/delimiter navigation and cursor pagination.

## **POST** `/revisions/:id/data/query` (Command: `list_session_objects`)

### Request Body

| Parameter    | Type    | Required | Description                                                                               |
| :----------- | :------ | :------- | :---------------------------------------------------------------------------------------- |
| `engine`     | string  | Yes      | Must be `workflow_blobhub`.                                                               |
| `command`    | string  | Yes      | Must be `list_session_objects`.                                                           |
| `session_id` | string  | Yes      | The ID of the session.                                                                    |
| `prefix`     | string  | No       | Restrict to aliases under this path prefix (relative to the session). Default `""` (all). |
| `delimiter`  | string  | No       | When set (typically `"/"`), returns one level only plus `common_prefixes` ("folders").    |
| `cursor`     | string  | No       | Opaque page cursor from a previous response's `cursor`. Omit for the first page.          |
| `limit`      | integer | No       | Max objects per page, 1–1000 (out-of-range → 400). Default `1000`.                        |

### Response

| Parameter         | Type   | Description                                                              |
| :---------------- | :----- | :----------------------------------------------------------------------- |
| `objects`         | array  | Objects in this page, each `{ "alias", "updated_at", "size" }`.          |
| `common_prefixes` | array  | Child "folder" prefixes (only present when `delimiter` is set).          |
| `cursor`          | string | Opaque cursor for the next page, or `null` when there are no more pages. |

Each entry carries its `alias`, the storage `updated_at` timestamp, and `size` in bytes. Objects of type
`"thread"` and `"graph"` appear here like any other object (their envelopes only — items and elements live in
separate stores).

`updated_at` is the one timestamp on this API written by object storage rather than by the platform, so it is
the only one spelled with a `+00:00` offset and without sub-second precision. The same object's envelope
carries its own `updated_at` in the `…Z` form every other endpoint uses; the two describe the same write.

**Aliases are paths.** An alias is a `/`-separated path (e.g. `missions/a1b2c3/graph`); use `prefix` to scope a
subtree and `delimiter: "/"` to browse one level as folders. See
[Session Objects](/blob-types/workflow/session-objects/introduction) for the full alias grammar.

**Pagination.** Pass the response `cursor` back as the request `cursor` to fetch the next page; stop when `cursor`
is `null`. The cursor is opaque — send it back verbatim and keep `prefix`/`delimiter` unchanged. An invalid or
expired cursor returns `400 invalid_cursor`. This is the same `cursor` + `limit` contract used by every `list_*`
command (session objects, graph elements, thread items, session events, execution events).

### Example

<CodeGroup>
  ```json Request theme={null}
  {
    "engine": "workflow_blobhub",
    "command": "list_session_objects",
    "session_id": "sess_001",
    "prefix": "missions/a1b2c3/",
    "delimiter": "/",
    "limit": 100
  }
  ```

  ```json Response theme={null}
  {
    "status": "success",
    "objects": [
      { "alias": "missions/a1b2c3/graph", "updated_at": "2026-07-12T10:00:00+00:00", "size": 1234 }
    ],
    "common_prefixes": [ "missions/a1b2c3/cells/" ],
    "cursor": null
  }
  ```
</CodeGroup>
