---
title: "Get App Chat"
method: GET
path: "/api/v1/apps/{app_id}/chat"
tags: ["apps"]
---

# Get App Chat

`GET /api/v1/apps/{app_id}/chat`

The chat the caller should edit this app through.

For an EDITOR this is their DEFAULT branch's chat, auto-forked from main's
on first use (Phase 2) — that fork is what stops two editors sharing one
transcript and one SDK session. For a VIEWER it is main's chat, read-only:
creating a branch is an editing act, so a viewer opening the page must not
silently spawn one.

"Default" is exact and not a hedge: an editor can hold several open work
branches, and this route takes no branch id, so it answers "which chat do
I open first", not "the caller's chat". A client that has a specific branch
in hand already holds its `chat_id` from `GET /branches` and should use
that. Unlike regenerate, guessing here costs a wrong default view rather
than a run dispatched onto the wrong branch, so it stays a default.

## Path parameters

- `app_id` string, uuid, required

## Response `200`

Successful Response

- ChatRead
  - `id` string, uuid, required
  - `company_id` string, uuid, required
  - `user_id` string, uuid, required
  - `dashboard_id` string, uuid, nullable, required
  - `project_id` string, uuid, nullable
  - `chat_type` string, required
  - `title` string, required
  - `status` 'idle' | 'generating', required
  - `generation_token` integer
  - `is_suppressed` boolean, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/netter/apis/dmi-backend.md) · [All operations](https://skmtc.dev/netter/apis/dmi-backend/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/netter/dmi-backend/revisions/eed6fb164abd/schema)
