---
title: "SSE stream for a project chat conversation"
method: GET
path: "/program-agent/{sessionId}/events"
tags: ["Internal"]
---

# SSE stream for a project chat conversation

`GET /program-agent/{sessionId}/events`

## Request

- Base URL: `https://api.apphandoff.com/api`
- URL: `https://api.apphandoff.com/api/program-agent/{sessionId}/events`
- Auth: API key in cookie `sb-access-token`

Session-authenticated observation stream for the project's single shared chat conversation; the session is the project conversation, not one program's. Emits hello/turn/change_set/delivery_recovery/status/error/ping events and replays stored turns on reconnect. A scope conversation also emits `scope` (`{ rev }`) whenever the project's scope map revision moves, so the portal refetches the map; roadmap conversations never emit it. Proposal notifications carry the exact ID, revision and status; status uses running/idle/terminated derived from durable processing state and reports uncertain delivery and processor errors. Does not execute provider or tool calls; durable processing continues without viewers. Current project access is rechecked on every transcript read.

## Path parameters

- `sessionId` string, uuid, required

## Response `200`

text/event-stream

## Other responses

- `403`: Forbidden
- `404`: Not found

---

[API](https://skmtc.dev/apphandoff/apis/apphandoff-api.md) · [All operations](https://skmtc.dev/apphandoff/apis/apphandoff-api/llms.txt) · [OpenAPI document](https://skmtc.dev/apphandoff/apis/apphandoff-api/revisions/9f138fe46d56?raw)
