---
title: "List all conversations"
method: GET
path: "/conversations"
tags: ["Conversations"]
---

# List all conversations

`GET /conversations`

Retrieve paginated conversations for the authenticated user.

**Overview:**

Use the optional `source` query parameter to choose which list to return:
`owned` — only conversations you own (`userId` matches the current user).
`shared` — conversations where you have recipient access
(`isShared` and your user appears in `sharedWith`), without the owner-only branch.
Defaults to `owned` when omitted. Each call returns one list; call twice if you need both.

**Filtering:**

- Only non-archived conversations are returned by default
- Use `/conversations/show/archives` for archived conversations

**Sorting:**

Conversations are sorted by last activity timestamp (most recent first) by default.

## Query parameters

- `source` 'owned' | 'shared'
- `page` integer
- `limit` integer
- `sortBy` 'createdAt' | 'lastActivityAt' | 'title'
- `sortOrder` 'asc' | 'desc'
- `conversationId` string
- `search` string
- `startDate` string, date-time
- `endDate` string, date-time
- `shared` string

## Response `200`

List of conversations for the requested source

- object
  - `conversations` ConversationListItem[], required
    - `_id` string, objectId
    - `userId` string, objectId
    - `orgId` string, objectId
    - `title` string
    - `initiator` string, objectId
    - `status` 'None' | 'Inprogress' | 'Complete' | 'Failed'
    - `failReason` string
    - `modelInfo` object
      - `modelKey` string
      - `modelName` string
      - `modelFriendlyName` string
      - `modelProvider` string
      - `chatMode` string
    - `isShared` boolean
    - `shareLink` string
    - `sharedWith` object[]
      - `userId` string, objectId
      - `accessLevel` 'read' | 'write'
    - `isArchived` boolean
    - `archivedBy` string, objectId, nullable — User ID of the last user who archived this row, or `null` after unarchive cleared the archive state. Absent on rows that have never been archived.
    - `isDeleted` boolean
    - `deletedBy` string, objectId
    - `conversationErrors` object[]
      - `message` string
      - `errorType` string
      - `timestamp` string, date-time
      - `messageId` string, objectId
      - `stack` string
      - `metadata` object
    - `metadata` object
    - `lastActivityAt` integer
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
    - `isOwner` boolean
    - `accessLevel` 'read' | 'write'
  - `source` 'owned' | 'shared', required — Echoes the requested `source` query value.
  - `pagination` object, required
    - `page` integer
    - `limit` integer
    - `totalCount` integer
    - `totalPages` integer
    - `hasNextPage` boolean
    - `hasPrevPage` boolean
  - `filters` object, required — Filter introspection block. `applied` summarises the filters active on this request; `available` catalogues every supported filter with its current value and whether it is applied.
    - `applied` object, required
      - `filters` string[], required — Names of filters currently applied.
      - `values` object, required — Current value for each applied filter. Only keys present in `filters` are populated; others are omitted.
        - `search` string
        - `shared` string
        - `tags` string
        - `minMessages` string
        - `sortBy` string
        - `sortOrder` string
        - `startDate` string
        - `endDate` string
        - `messageType` string
        - `page` integer
        - `limit` integer
        - `dateRange` object
          - `start` string, nullable
          - `end` string, nullable
    - `available` object, required
      - `shared` object, required
        - `values` string[] — Accepted values for the `shared` query param.
        - `description` string
        - `current` string, nullable
        - `applied` boolean
      - `tags` object, required
        - `type` string
        - `description` string
        - `current` string, nullable
        - `applied` boolean
      - `minMessages` object, required
        - `type` string
        - `description` string
        - `current` number, nullable
        - `applied` boolean
      - `search` object, required
        - `type` string
        - `description` string
        - `current` string, nullable
        - `applied` boolean
      - `pagination` object, required
        - `page` object
          - `type` string
          - `current` integer
          - `min` integer
          - `max` integer
          - `default` integer
          - `description` string
          - `applied` boolean
        - `limit` object
          - `type` string
          - `current` integer
          - `min` integer
          - `max` integer
          - `default` integer
          - `description` string
          - `applied` boolean
      - `sorting` object, required
        - `sortBy` object
          - `values` string[]
          - `default` string
          - `description` string
          - `current` string
          - `applied` boolean
        - `sortOrder` object
          - `values` string[]
          - `default` string
          - `description` string
          - `current` string
          - `applied` boolean
      - `dateFilters` object, required
        - `dateRange` object
          - `type` string
          - `description` string
          - `format` string
          - `current` object
            - `start` string, nullable
            - `end` string, nullable
          - `applied` boolean
      - `messageFilters` object, required
        - `messageType` object
          - `values` string[]
          - `description` string
          - `current` string, nullable
          - `applied` boolean
      - `sortingMessages` object, required
        - `sortBy` object
          - `values` string[]
          - `default` string
          - `description` string
          - `current` string
        - `sortOrder` object
          - `values` string[]
          - `default` string
          - `description` string
          - `current` string
  - `meta` object, required
    - `requestId` string
    - `timestamp` string, date-time
    - `duration` integer

## Other responses

- `400` — Bad request — for example, missing or invalid `source` (must be `owned` or `shared`), invalid date query params, invalid `search` shape, or search text over the length limit.
- `401` — Unauthorized - Valid bearer token required

---

[API](https://skmtc.net/pipeshub-ai/apis/pipeshub-api.md) · [All operations](https://skmtc.net/pipeshub-ai/apis/pipeshub-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/pipeshub-ai/pipeshub-api/versions/abd27cfefc73/schema)
