---
title: "List Activity"
method: GET
path: "/felix/activity"
tags: ["felix"]
---

# List Activity

`GET /felix/activity`

List activity events for the authenticated user within their bound team.

Scoped to the caller *and* their credential's team: a user can belong to
several teams, so filtering on the user alone discloses the other teams'
project and dataset names (ENG-7141). Paginated via limit/offset.

Args:
    limit: Maximum number of activity events to return per page.
    offset: Number of events to skip for pagination.
    auth: Authentication result containing user and team context.

Returns:
    ActivityLogResponse containing activity events in reverse-chronological order.

Raises:
    HTTPException: 403 when no team is resolved for the caller, or 500 if the
        activity log retrieval fails.

## Query parameters

- `limit` integer
- `offset` integer

## Response `200`

Successful Response

- ActivityLogResponse — Response payload for activity log requests.
  - `success` boolean, required — Whether the request succeeded
  - `events` ActivityEvent[] — Activity events in reverse-chronological order
    - `id` string, required — Unique activity event identifier
    - `type` 'project' | 'dataset' | 'model' | 'evaluation' | 'deployment', required — Activity event type
    - `name` string, required — Human-readable activity name
    - `action` 'created' | 'created_version' | 'updated' | 'deleted' | 'deleted_version' | 'promoted' | 'rolled_back' — Action performed (created, updated, deleted, etc.)
    - `item_id` string, required — ID of the related item
    - `created_by` string, required — Display name of the creator
    - `created_at` string, date-time, required — When the activity occurred
    - `project_id` string, nullable — Optional project ID associated with the activity
    - `evidence` PromotionEvidence — Allowlisted promotion evidence surfaced on ``deployment`` activity rows. Mirrors the keys written into ``activity_events.metadata`` by ``services.deployments.promotion_evidence.notify_owner_of_promotion``. Only these four keys are exposed; anything else in the row's metadata is dropped so the API never leaks client attribution or Hub error detail. Every field is optional -- a promotion pressed by a human records no experiment/plan.
      - `recipe_fingerprint` string, nullable — Fingerprint of the recipe that produced the promoted candidate
      - `experiment_id` string, nullable — Experiment that drove the promotion, when a run key acted
      - `finetune_plan_id` string, nullable — Approved plan revision that authorised the promotion
      - `selection_evaluation_run_id` string, nullable — Evaluation Suite run the promotion was decided on
  - `count` integer, required — Number of events returned
  - `has_more` boolean — Whether more events are available beyond the current page

## Other responses

- `422` — Validation Error

## Changes

- **2026-09-24** `1cffaad2a921` — 3 warning, 2 info
  - removed the optional property `detail` from the response with the `422` status
  - added the new `promoted` enum value to the `events/items/action` response property for the response status `200`
  - added the new `rolled_back` enum value to the `events/items/action` response property for the response status `200`
  - added the optional property `events/items/evidence` to the response with the `200` status
  - …1 more

[Change history](https://skmtc.dev/pioneer/apis/brain-api/changes/felix/activity/get.md)

---

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