---
title: "Live story stream (server-sent events)"
method: GET
path: "/api/stream"
---

# Live story stream (server-sent events)

`GET /api/stream`

## Request

- Base URL: `https://techsnif.com`
- URL: `https://techsnif.com/api/stream`
- Auth: none declared

text/event-stream endpoint that pushes story changes as they happen. Emits event: story.new when a cluster first appears and event: story.updated when an existing cluster changes. Each event id is the change timestamp; send it as the Last-Event-ID request header (or a since query param) to resume after a disconnect. Each data field is one StorySummary JSON object. Optional topics and tier query params filter which events are delivered, in both replay and live broadcast. The same URL also accepts a WebSocket upgrade (Upgrade: websocket) with the same filters plus since for replay; each WebSocket message is a JSON string { id, type, story }. SSE heartbeat comments have the form ": ping lastEventId=<id or none>" so idle clients can detect missed events.

## Query parameters

- `topics` string
- `tier` integer

## Response `200`

SSE stream of story.new and story.updated events

---

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