---
title: "The person timeline (cross-company)"
method: GET
path: "/api/v1/ackdb/persons/{personId}/events"
tags: ["ackDB"]
---

# The person timeline (cross-company)

`GET /api/v1/ackdb/persons/{personId}/events`

## Request

- Base URL: `http://localhost:3009`
- URL: `http://localhost:3009/api/v1/ackdb/persons/{personId}/events`
- Auth: HTTP bearer

Every event stamped with this human, newest first, INTERLEAVED across every company they have ever been affiliated with — the query that answers "have we talked to Elly?" once instead of N times. Backed by the partial `(person_id, timestamp DESC)` index. Source events appear as `<source>_<event_type>` (`emails_message.sent`); ackDB's own lifecycle events are BARE (`contact.created`, `contact.ended`, historical `person.merged`, new `person.identity.merged`) with `source: system`. Independent personal events have null company/contact IDs and remain on the human even after an affiliation is added. Includes independent personal events. Filters apply before pagination; personal ownership with entityId is invalid.

## Path parameters

- `personId` string, required

## Query parameters

- `limit` integer
- `offset` integer
- `source` string
- `sources` string
- `excludeSources` string
- `eventType` string
- `since` string, date-time
- `until` string, date-time
- `ownership` 'person' | 'company'
- `entityId` string

## Response `200`

`{ data: EntityEvent[], total, limit, offset, personId }`.

- object
  - `data` AckdbEntityEvent[], required
    - `id` string, required: ULID identifier for the event.
    - `entityId` unknown, required
    - `source` string, required: Source system that produced this event.
    - `eventType` string, required: Type of event (e.g. message, payment, subscription_change).
    - `summary` string, required: Human-readable summary of the event.
    - `metadata` object, required: Source-specific event metadata.
    - `timestamp` string, date-time, required: When this event occurred in the source system.
    - `createdAt` string, date-time, required: When this event record was created in ackDB.
    - `contactId` unknown, required
    - `personId` unknown, required
  - `total` integer, required
  - `limit` integer, required
  - `offset` integer, required
  - `personId` string, required

## Other responses

- `400`: More than one of `source`, `sources`, `excludeSources` was sent.
- `404`: Person not found.

---

[API](https://skmtc.dev/floqer/apis/floqer-public-api.md) - [All operations](https://skmtc.dev/floqer/apis/floqer-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/floqer/apis/floqer-public-api/revisions/fce50dc07b20?raw)
