---
title: "Get recent workspace activity"
method: GET
path: "/activity/workspace/{workspaceId}"
tags: ["Activity"]
---

# Get recent workspace activity

`GET /activity/workspace/{workspaceId}`

## Request

- Base URL: `https://cloud.kaneo.app/api`
- URL: `https://cloud.kaneo.app/api/activity/workspace/{workspaceId}`
- Auth: HTTP bearer

Get the 20 most recent task events across a workspace's active projects from the last 30 days, newest first. Each event carries a short plain-text excerpt instead of its full content.

## Path parameters

- `workspaceId` string, required

## Response `200`

Recent activity in the workspace

- WorkspaceActivity[]
  - `id` string, required
  - `type` string, required: One of: comment, task, create, status_changed, priority_changed, assignee_changed, unassigned, due_date_changed, title_changed, description_changed.
  - `createdAt` string, date-time, required
  - `eventData` unknown
  - `excerpt` string, nullable, required: Plain-text preview of the stored content, at most 240 characters: the comment body, or the description older system events carry instead of eventData.
  - `userId` string, nullable, required
  - `userName` string, nullable, required
  - `userImage` string, nullable, required
  - `externalUserName` string, nullable, required
  - `externalUserAvatar` string, nullable, required
  - `taskId` string, required
  - `taskTitle` string, required
  - `taskNumber` number, nullable, required
  - `projectId` string, required
  - `projectSlug` string, required

## Other responses

- `401`: Missing or invalid credentials
- `403`: Missing project:read or task:read permission
- `404`: Workspace not found
- `429`: The API key exceeded its rate limit or usage quota. Wait the number of seconds in Retry-After before retrying. The X-RateLimit headers are sent only when the rate limit was hit.

## Changes

- **2026-10-09** `c9984766c765`: 2 info
  - added the non-success response with the status `404`
  - removed the non-success response with the status `400`
- **2026-10-08** `c7b8a842601b`: 3 breaking, 4 info
  - removed the media type `text/plain` for the response with the status `400`
  - removed the media type `text/plain` for the response with the status `403`
  - removed the media type `text/plain` for the response with the status `429`
  - added the media type `application/json` for the response with the status `400`
  - …3 more
- **2026-10-08** `2ed51b8af657`: 3 breaking, 3 info
  - removed the media type `application/json` for the response with the status `400`
  - removed the media type `application/json` for the response with the status `401`
  - removed the media type `application/json` for the response with the status `403`
  - added the media type `text/plain` for the response with the status `400`
  - …2 more
- **2026-10-07** `df1439c724ee`: 2 breaking, 3 info
  - removed the media type `text/plain` for the response with the status `400`
  - removed the media type `text/plain` for the response with the status `403`
  - added the media type `application/json` for the response with the status `400`
  - added the media type `application/json` for the response with the status `401`
  - …1 more
- **2026-10-02** `624610e8544e`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/usekaneo/apis/kaneo-api/changes/activity/workspace/:workspaceId/get.md)

---

[API](https://skmtc.dev/usekaneo/apis/kaneo-api.md) - [All operations](https://skmtc.dev/usekaneo/apis/kaneo-api/llms.txt) - [OpenAPI document](https://skmtc.dev/usekaneo/apis/kaneo-api/revisions/93f78789100c?raw)
