docs
API

Event history

Read the recorded history of a signal, beacon, spec, pull request or ticket, including events on the items it flowed into.

nima records an event each time something happens to a signal, beacon, spec, pull request or tracker ticket: a signal joins a beacon, a beacon is promoted, a spec finishes, a pull request merges. The event history route reads that record for one item, newest first. It returns ids, types and timestamps, never the text behind them.

On for every workspace. The history route does not depend on the workspace's triggersEnabled setting: nima records events whether or not watches are on.

Event history operations at a glance

MethodPathScopeMCP tool
GET/v1/eventssignals:readget_history

Paths are relative to https://api.getnima.io. Every call carries Authorization: Bearer <your key>. See Authentication and Scopes and permissions. The MCP tool is documented on Pipeline MCP tools.

Read the event history of one item

GET/v1/events
scopesignals:readMCP toolget_history

The recorded events of one signal, beacon, spec, pull request or ticket, newest first. The list includes events on the things the item flowed into: ask for a signal and you also get the events of its beacon, its spec and its pull request. Those rows carry viaLineage: true. Each event stores the items upstream of it at the moment it is recorded, so an event on a beacon recorded before your signal joined that beacon is not in the signal's history.

subjectKindenumrequired

What subjectId refers to: signal, beacon, spec, pr or ticket. Any other value is rejected with 400. Events are matched on subjectId; subjectKind only selects the title, so a mismatched kind returns the events with title: null.

subjectIduuidrequired

The id of the item, as returned by the signal, beacon, spec or delivery routes. A malformed id is rejected with 400.

limitinteger

Maximum number of events. Defaults to 50. Accepts 1 to 200; a value outside that range is rejected with 400.

The route has no pagination: to see more than 200 events you cannot page back. Events are ordered by time, newest first.

The history is org-wide, not limited to what the caller watches, which is why it needs signals:read and not the personal subscriptions:read scope. It never returns another workspace's events: the query carries your workspace id.

Response fields

subjectKindstring

Echo of the request.

subjectIduuid

Echo of the request.

titlestring | null

nima's own title for the item, never the underlying text: the source of a signal (for example Slack signal), the beacon title, the spec title, PR #n for a pull request, or the issue key and summary for a ticket. null when the item no longer exists or belongs to another workspace.

eventsarray

The events, newest first, described below.

Each element of events:

iduuid

The event id.

typestring

One of the event types, for example beacon.promoted.

subjectKindstring

The kind of item the event happened to. It differs from your request when viaLineage is true.

subjectIduuid

The item the event happened to.

viaLineageboolean

true when the event is on a downstream item rather than the one you asked for. false when subjectId is the id you sent.

actorKindstring

Who caused the event: user, system or integration.

occurredAtstring

When it happened, ISO 8601 in UTC.

The response has no payload field. Event payloads can carry a question's text or a person's reason for holding a beacon, so this route does not repeat them. Read the item itself (a signal, beacon or spec) for its content.

Event types in history

The type field of an event history row is one of nima's 16 event types, the same fixed catalog that watches react to. The full table, with the item each type belongs to and whether it is material, is under Watch event types. The catalog itself is served by GET /v1/triggers/event-types and the list_event_types tool.

A row's subjectKind follows the type: signal.* events belong to signals, beacon.* to beacons, spec.* to specs, pr.* to pull requests and ticket.* to tracker tickets. One exception: spec.generation_failed belongs to the beacon, because a failed run has no spec yet.

Errors from the event history route

StatusWhen
400subjectKind is not one of the five kinds, subjectId is not a UUID, or limit is outside 1 to 200.
401No valid bearer token.
403The key or token lacks signals:read, or the caller lacks read permission in the workspace.

An id that matches nothing in your workspace is not an error: the route answers 200 with title: null and an empty events array. See Errors for the response shape.