---
title: "The ledger"
method: GET
path: "/v1/agents/{agent}/events"
tags: ["agents"]
---

# The ledger

`GET /v1/agents/{agent}/events`

## Request

- Base URL: `https://innernet.live/api`
- URL: `https://innernet.live/api/v1/agents/{agent}/events`
- Auth: HTTP bearer

What the agent did, newest first, as counts and pointers: never a word of a memory. Page with `before`, the `id` of the last event you have; an empty `events` list is the end. The ledger keeps 400 days. A paused agent can still be read. Needs the agent's own key or a person's key with `read`.

## Path parameters

- `agent` string, required

## Query parameters

- `limit` integer
- `before` integer

## Response `200`

OK

- object
  - `events` object[], required
    - `id` integer: Grows with time: use the last one as `before`.
    - `at` string, date-time
    - `verb` 'created' | 'remembered' | 'recalled' | 'forgot' | 'held' | 'kept' | 'declined' | 'settings' | 'paused' | 'resumed' | 'key' | 'webhook' | 'exported' | 'read_you' | 'sent' | 'withdrawn' | 'trimmed' | 'linked' | 'unlinked' | 'ingested' | 'taken_in'
    - `n` integer: How many memories (or facts of the person) it touched.
    - `via` 'agent_key' | 'person_key' | 'oauth' | 'dashboard' | 'null', nullable: What it came in through.
    - `subject_kind` 'agent' | 'owner' | 'user' | 'null', nullable
    - `latency_ms` integer, nullable
    - `detail` object: Numbers and labels only.

## Other responses

- `400`: Error: a filter is wrong or not one this call takes; `detail.field` names it (`invalid`)
- `401`: Error
- `403`: Error: this key cannot read (`forbidden`)
- `404`: Error: no such agent for this key (`not_found`)
- `429`: Error: over the agent's reads a minute (`rate_limited`; `Retry-After: 60`)
- `503`: Error: agents are not switched on yet (`unavailable`)

---

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