---
title: "Append to a chat's journal"
method: POST
path: "/v1/conversations/{id}/entries"
tags: ["Conversations"]
---

# Append to a chat's journal

`POST /v1/conversations/{id}/entries`

## Request

- Base URL: `http://localhost:9998`
- URL: `http://localhost:9998/v1/conversations/{id}/entries`
- Auth: HTTP bearer

Appends up to 500 entries, in order, each a JSON object with a string `type`. An append
that carries `title` creates the chat when it does not exist yet, in `projectId` (else
the default project), owned by the caller; one without answers 404 for a chat that does
not exist, so a late append never brings a deleted chat back.

## Path parameters

- `id` string, required

## Request body

- WireConversationEntriesAppendRequest
  - `entries` object[], required
  - `title` string: Creates the chat under this title when it does not exist yet.
  - `projectId` string: The project a chat the append creates belongs to. Absent, the default project.

## Response `200`

The chat after the append

- WireConversation: One chat as a listing and every chat verb answer it: its project, title, workbench tabs and pane, unread mark, cost summary and latest run. Unknown fields are tolerated and must be carried; `origin` is open (`person`, or the automation that started the chat).
  - `id` string, required: The chat's id, also its kernel conversation id.
  - `projectId` string, required
  - `title` string, required
  - `origin` string, required
  - `lastMessage` string, required
  - `messageCount` integer, required
  - `openWorkbenches` string[], required: The workbenches open as tabs in the chat's pane, in tab order.
  - `activeWorkbenchId` string
  - `paneOpen` boolean, required
  - `unread` boolean, required
  - `pinned` boolean: Pinned to the top of its project's sidebar. Absent: not pinned.
  - `costTotal` object: The renderer's running cost summary of the chat.
  - `run` object: The chat's latest run (`IAgentRun`).
  - `revision` integer, required: Write counter, advanced by every change; compared with `expectedRevision`.
  - `createdAt` string, required
  - `updatedAt` string, required

## Other responses

- `201`: The chat the append created
- `400`: A malformed body, an entry with no string `type`, or more than 500 entries
- `403`: The chat belongs to another client, or the request names no client to own a new chat
- `404`: No chat with that id, and no `title` to create one
- `409`: `conversation_unreadable`: the chat was saved in a form this build cannot read and is left as it is.

---

[API](https://skmtc.dev/modelpiper/apis/toolpiper-api.md) · [All operations](https://skmtc.dev/modelpiper/apis/toolpiper-api/llms.txt) · [OpenAPI document](https://skmtc.dev/modelpiper/apis/toolpiper-api/revisions/6722bf56385c?raw)
