---
title: "Get Activity Logs"
method: GET
path: "/api/v1/activities"
tags: ["Activity"]
---

# Get Activity Logs

`GET /api/v1/activities`

Get activity logs.

Returns a paginated list of activity events for the user. Events can be filtered by object
type (project, item, note, section), event type, and other criteria. Uses cursor-based
pagination for efficient navigation through results.

## Query parameters

- `object_type` 'project' | 'item' | 'note' | 'section', nullable — The type of object to filter activities by. Must be one of "project", "item" (task), "note" (comment), or "section". When specified with `object_id`, returns activities for that specific object.
- `object_id` union — The ID of the specific object to get activities for. Must be used together with `object_type`. For example, to get activities for a specific task, set `object_type=item` and `object_id=<task_id>`.
  - integer
  - string
- `parent_project_id` union — Filter activities to only those belonging to the specified project. Returns activities for the project itself and all its tasks and comments.
  - integer
  - string
- `parent_item_id` union — Filter activities to only those belonging to the specified task. Returns activities for the task itself and all its comments.
  - integer
  - string
- `include_parent_object` boolean — When `true` and `object_id` is specified, also include activities for the parent object. For example, when filtering by a specific task, also include activities for its parent project.
- `include_child_objects` boolean — When `true` and `object_id` is specified, also include activities for all child objects. For example, when filtering by a project, also include activities for all its tasks and comments.
- `initiator_id` union — Filter activities to only those initiated by the specified user ID(s). Accepts either a single user ID or a list of user IDs. Useful for shared projects to see who made which changes.
  - integer
  - integer[]
- `initiator_id_null` boolean, nullable — Filter by whether the activity has an initiator. When `true`, returns only activities with no initiator (your own activities). When `false`, returns only activities initiated by collaborators.
- `event_type` string, nullable — Filter by a simple event type (e.g., "added", "deleted", "completed"). Returns events of this type across ALL object types that support it. Valid types: "added", "deleted", "updated", "archived", "unarchived", "completed", "uncompleted", "shared", "left", "moved". Prefix the value with `!` to negate the filter and return all events EXCEPT this type (e.g., "!deleted"). For more precise filtering by both object type and event type, use `object_event_types` instead.
- `ensure_last_state` boolean — **Deprecated** - This parameter has no implementation and will be removed in a future version.
- `object_event_types` string[], nullable — Advanced filtering for specific object type and event type combinations. Format: `["object_type:event_type"]`. Examples: `["item:deleted"]` for deleted tasks, `["item:"]` for all task events, `[":deleted"]` for all delete events across all types, `["item:deleted", "note:added"]` for multiple filters. Valid event types: "added", "deleted", "updated", "completed", "uncompleted", "archived", "unarchived", "shared", "left", "moved". This is the recommended way to filter events.
- `workspace_id` union — Filter activities by workspace. Accepts a single workspace ID, a list of workspace IDs, or `null` to filter for personal projects (projects not belonging to any workspace). Use `[null, 123]` to include both personal projects and workspace 123. When not set, returns activities from all workspaces and personal projects.
  - integer
  - integer[]
- `annotate_notes` boolean — When `true`, includes additional information about comments in the `extra_data` field, such as the content of the comment.
- `annotate_parents` boolean — When `true`, includes additional information about parent objects in the `extra_data` field, such as the name of the parent project or task.
- `cursor` string, nullable — An opaque string used as the cursor for pagination. Must be used with the same parameters from the previous request
- `limit` integer — The number of objects to return in a page
- `date_from` string, date-time, nullable — Filter activities to only those that occurred on or after this date. Must be in ISO 8601 format (e.g. '2026-01-01T00:00:00Z'). When specified, overrides the default pagination behavior and allows custom date ranges.
- `date_to` string, date-time, nullable — Filter activities to only those that occurred before this date (exclusive upper bound). Must be in ISO 8601 format (e.g. '2026-02-01T00:00:00Z'). When specified, overrides the default pagination behavior and allows custom date ranges.

## Response `200`

Successful Response

- PaginatedListActivityEvents
  - `results` ActivityEvents[], required — Objects in the current page of results.
    - `object_type` 'project' | 'item' | 'note' | 'section', required
    - `object_id` string, required — The unique identifier of the object this activity relates to (project, item, note, or section ID).
    - `event_type` string, required — The type of event that occurred. Valid values are: `"added"` (object was created), `"deleted"` (object was removed), `"updated"` (object was modified), `"archived"` (object was archived), `"unarchived"` (object was restored from archive), `"completed"` (task was completed), `"uncompleted"` (task was marked as incomplete), `"shared"` (project was shared with a user), `"left"` (user left a shared project), `"moved"` (task was moved between projects or between sections).
    - `event_date` string, date-time, required — The timestamp when this activity occurred.
    - `id` integer, nullable — The internal unique identifier for this activity log entry.
    - `parent_project_id` string, nullable — The ID of the project that contains the object this activity relates to. For project activities, this is the project itself. For item and note activities, this is the project containing the item or note.
    - `parent_item_id` string, nullable — For note (comment) activities, the ID of the item (task) that the note is attached to. `null` for project and item activities.
    - `initiator_id` string, nullable — The ID of the user who is responsible for the event, which only makes sense in shared projects, items and notes, and is `null` for non-shared objects.
    - `extra_data_id` integer, nullable — Internal ID for the extra activity data row.
    - `extra_data` object, nullable — This object contains at least the `name` of the project, or the `content` of an item or comment, and optionally the `last_name` if a project was renamed, the `last_content` if an item or note was renamed, the `due_date` and `last_due_date` if an item's due date changed, the `responsible_uid` and `last_responsible_uid` if an item's responsible uid changed, the `description` and `last_description` if an item's description changed, the `priority` and `last_priority` if an item's priority changed, the `deadline` and `last_deadline` if an item's deadline changed, the `duration`, `last_duration`, `duration_unit`, and `last_duration_unit` if an item's duration changed, the `source_project_id` and `destination_project_id` if a task was moved between projects, the `section_id` on completion snapshots and section-move events, the `last_section_id` on section-move events indicating the previous section, and the `client` that caused the logging of the event
  - `next_cursor` string, nullable, required — Cursor for the next page of results, or `null` when there are no more results.

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found

---

[API](https://skmtc.net/todoist/apis/todoist-api.md) · [All operations](https://skmtc.net/todoist/apis/todoist-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/todoist/todoist-api/revisions/69a962f1578f/schema)
