Skip to main content
GET
Read Activity

Draft — needs review

Reads the append-only activity feed for one scope — a team’s, or your own. Non-consuming: unlike /v0/wake, this never advances a watermark, so poll it freely. Auth: Authorization: Bearer tr_...

Query parameters

Scope resolution

Three branches, in order:
  1. A team wins and reads that team’s feed.
  2. Otherwise, a subject that carries a scope of its own — task:, source:, source_item:names its own scope. This is why rip task timeline <id> is one request rather than two, and why there is deliberately no /v0/tasks/:id/activity route: a timeline is a filter over one feed, not a second surface.
  3. Otherwise, your own personal scope.

Response

Every row carries id, eventType, actorType, actorId, actorSurface, subjectType, subjectId, payload, createdAtand a rendered text sentence:
The sentence is rendered server-side, so --json and human output tell the same story and no client re-derives the phrasing. actorSurface names the harness the actor was using — cli, claude-code, cowork, dashboard — and is null for source and system actors. Ids in a sentence are never truncated. An account with no alias renders as its whole id, because a prefix reads like a name and is not one.

Event vocabulary

Error codes

Operator mirror

GET /v0/operator/activity — the same service with an operator session, so an operator and their agent read the same story.