---
title: "List Data Chat History"
method: GET
path: "/api/v1/apps/{app_id}/data-chat/threads"
tags: ["apps-data-chat"]
---

# List Data Chat History

`GET /api/v1/apps/{app_id}/data-chat/threads`

The caller's past conversations on this app, newest activity first.

Behind the SAME `_gate` as every other route here — the kill switch and
the VIEWER check are not weaker for a read that only returns titles. A
thread's title is a paraphrase of the user's own first question, so a
listing that skipped the gate would leak the questions people asked about
an app whose data chat has since been switched off.

`is_current` is computed here from `is_suppressed` rather than shipped
raw: on this surface suppression means "closed", and the client has no
business learning a flag that means "deleted" everywhere else.

## Path parameters

- `app_id` string, uuid, required

## Query parameters

- `embed_host_app_id` string, uuid, nullable

## Response `200`

Successful Response

- AppDataChatThreadRead[]
  - `id` string, uuid, required
  - `title` string, required
  - `updated_at` string, date-time, required
  - `is_current` boolean, required

## Other responses

- `422` — Validation Error

## Changes

> 35 revisions in range; 1 not diffed.

- **2026-09-10** `d27876ec4b74` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/netter/apis/dmi-backend/changes/api/v1/apps/:app_id/data-chat/threads/get.md)

---

[API](https://skmtc.dev/netter/apis/dmi-backend.md) · [All operations](https://skmtc.dev/netter/apis/dmi-backend/llms.txt) · [OpenAPI document](https://skmtc.dev/netter/apis/dmi-backend/revisions/77d4fd215b57?raw)
