---
title: "Chat History"
method: GET
path: "/api/chat_history"
tags: ["Chat"]
---

# Chat History

`GET /api/chat_history`

## Request

- Base URL: `https://app.getdot.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://app.getdot.ai/api/chat_history`
- Auth: one of:
  - API key in header `X-API-KEY`
  - API key in cookie `Authorization`
  - OAuth 2 (password, token URL `/api/auth/token`)

One page of the sidebar chat list, newest first.

``limit`` lets a refresh re-read the whole window the user has scrolled to;
a first-page-only refresh would drop whichever row a newly updated chat
displaced past the page boundary. The first page (no cursor) also carries
every favorite and the most recent archived chats, so the sidebar and ⌘K
palette are complete without paging.

## Query parameters

- `cursor` string, nullable: Keyset cursor from a previous page
- `limit` integer

## Response `200`

Successful Response

- ChatHistoryResponse
  - `chats` ChatHistoryEntry[], required: Page of the caller's own conversation summaries. The first page also includes all unarchived favorites and up to 20 recent archived conversations; its total can exceed limit.
    - `id` string, required: Conversation ID within this workspace. Open it in the iframe using ?c=ID.
    - `first_question` string, required: First question preview, with attachment/context tags removed, up to 200 characters.
    - `date` string, nullable: Conversation creation timestamp, as stored by Dot.
    - `last_updated` string, nullable: Last conversation update timestamp, as stored by Dot.
    - `public` union: Whether the conversation is shared publicly. Legacy storage can return 0 or 1.
      - boolean
      - integer
    - `title` string, nullable: Conversation title, or null if no title has been assigned.
    - `pinned` boolean, required: Whether the conversation is a favorite for its owner.
    - `messages_length` integer, nullable: Stored message count, including assistant and tool messages.
    - `edits_length` integer, nullable: Stored count of edits in this conversation.
    - `overall_feedback` union: Aggregate conversation feedback: positive for likes, negative for dislikes, or null if absent.
      - integer
      - number
    - `labels` union: Conversation labels. SQLite metadata commonly returns a JSON-encoded array string; legacy values may be plain strings.
      - string
      - string[]
    - `agentic` boolean, required: Whether this conversation uses the multi-step agent.
    - `extra` string, nullable: Latest opaque extra URL parameter saved with this conversation by the embedding application.
    - `archived` boolean, required: Whether the conversation is archived.
    - `running` boolean, required: Whether an agentic run is currently active for this conversation.
    - `recently_completed` boolean, required: Whether a run completed recently and its completion indicator has not been dismissed.
  - `next_cursor` string, nullable, required: Opaque cursor for the next page of unarchived, unpinned conversations. Pass it as cursor unchanged; null ends pagination.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/getdot/apis/dot-api-2.md) · [All operations](https://skmtc.dev/getdot/apis/dot-api-2/llms.txt) · [OpenAPI document](https://skmtc.dev/getdot/apis/dot-api-2/revisions/d26fe7163a7f?raw)
