---
title: "List AI Widget conversations for an app"
method: GET
path: "/v2/apps/{appId}/widget/conversations"
tags: ["AI Widget"]
---

# List AI Widget conversations for an app

`GET /v2/apps/{appId}/widget/conversations`

## Request

- Base URL: `https://api.chat.ethora.com`
- URL: `https://api.chat.ethora.com/v2/apps/{appId}/widget/conversations`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer

Returns paginated rows from the `chats` collection where `type='widget'` and
`appId` matches. Each row includes resolved visitor identity (joined via
`user_to_chats` -> users where `isVisitor:true`) so the admin Widget
Conversations panel can render visitor handle + first-seen timestamps
without an additional round-trip per row.

Auth: tenantActor. Base-app admins acting on a child app via App Switcher
reach this endpoint through the same path as other app-scope chat reads.

## Path parameters

- `appId` string, required

## Query parameters

- `limit` integer
- `offset` integer

## Response `200`

```
{
  results: [
    {
      _id: string,            // Mongo chat _id
      name: string,           // bare room name, "${appId}_<roomUuid>"
      title: string,
      type: 'widget',
      createdAt: ISODate,
      updatedAt: ISODate,
      visitor: {
        _id: string,
        uuid: string,
        xmppUsername: string,
        firstSeenAt: ISODate
      } | null
    }
  ],
  pagination: { limit: number, offset: number, total: number },
  total: number, limit: number, offset: number,
  items: [...same as results...]
}
```

## Other responses

- `400`: Bad Request
- `401`: Missing / invalid token.
- `403`: Caller has no access to this app.
- `404`: Not Found
- `422`: Unprocessable Entity
- `500`: Internal Server Error

---

[API](https://skmtc.dev/ethora/apis/platform-api.md) · [All operations](https://skmtc.dev/ethora/apis/platform-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ethora/apis/platform-api/revisions/01b6e64378ee?raw)
