---
title: "Get Chat"
method: GET
path: "/v1/chat/{chat_id}"
tags: ["chat"]
---

# Get Chat

`GET /v1/chat/{chat_id}`

## Request

- Base URL: `https://api.happenstance.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.happenstance.ai/v1/chat/{chat_id}`
- Auth: HTTP bearer

The whole chat: its messages (Chat's as markdown), its turns, the searches it ran, and
the notes Chat keeps on the user's goal and preferences (memory) and on older turns.

## Path parameters

- `chat_id` string, required

## Response `200`

Successful Response

- GetChatResponseV1: Response from GET /v1/chat/{chat_id}: the conversation and what Chat keeps about it.
  - `id` string, required
  - `title` string, nullable
  - `source` 'api' | 'app', required
  - `url` string, required
  - `status` 'idle' | 'running', required
  - `created_at` string, required
  - `memory` string, nullable: Chat's notes on the user and the goal (preferences, exclusions, style), kept across turns
  - `history_summary` string, nullable: Chat's summary of the older part of a long conversation
  - `credits_charged` number, required: Credits charged for the chat's turns so far
  - `turns` ChatTurnSummaryV1[], required
    - `id` string, required
    - `started_by` 'message' | 'schedule'
    - `status` 'queued' | 'running' | 'completed' | 'failed' | 'cancelled', required
    - `created_at` string, required
    - `completed_at` string, nullable
    - `credits_charged` number, nullable: Credits charged for the turn, once billed
  - `messages` ChatMessageV1[], required
    - `role` 'user' | 'assistant' | 'schedule', required: user: a message to Chat. assistant: Chat's reply. schedule: a scheduled task ran; the markdown is its instruction.
    - `turn_id` string, nullable: The turn the message belongs to
    - `markdown` string, required
    - `created_at` string, required
  - `searches` ChatSearchV1[], required
    - `search_id` string, required: The search's id, for GET /v1/search/{search_id}
    - `page_id` string, nullable: The find-more page of that search, when this was one
    - `turn_id` string, nullable: The turn that ran it
    - `query` string, nullable: What Chat searched for
    - `status` 'running' | 'completed' | 'failed' | 'stopped', required: The search's status
    - `results_count` integer, nullable: How many people the search returned, once completed
  - `schedules` ChatScheduleV1[]: The chat's scheduled tasks. Only a chat started in the app has them. A chat started through the API has none: to run it on a schedule, send it a message on yours.
    - `id` string, required
    - `instruction` string, required: What Chat does on each run
    - `cron` string, required: 5-field cron expression (minute hour day-of-month month day-of-week)
    - `timezone` string, required: IANA timezone the cron is read in
    - `next_run_at` string, required: When it next comes due (ISO 8601, UTC like every time in this API). A paused task does not run.
    - `paused` boolean, required
    - `paused_reason` 'inactive' | 'by_user', nullable: Why it is paused: inactive (no message to the chat for 8 of its periods; a message re-arms it) or by_user
    - `email_enabled` boolean, required: Whether each finished run also emails the user a link to the chat
    - `push_enabled` boolean, required: Whether each finished run also notifies the user's Happenstance phone app
    - `created_at` string, required

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `402`: Payment Required
- `403`: Forbidden
- `404`: Not Found
- `410`: Gone
- `422`: Validation Error
- `500`: Internal Server Error
- `503`: Service Unavailable

## Changes

- **2026-10-23** `c8149ed29b44`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/happenstance/apis/happenstance-api/changes/v1/chat/:chat_id/get.md)

---

[API](https://skmtc.dev/happenstance/apis/happenstance-api.md) - [All operations](https://skmtc.dev/happenstance/apis/happenstance-api/llms.txt) - [OpenAPI document](https://skmtc.dev/happenstance/apis/happenstance-api/revisions/0b6ee3927db3?raw)
