---
title: "List project activities"
method: GET
path: "/v2/projects/{project_id}/activities"
tags: ["activities"]
---

# List project activities

`GET /v2/projects/{project_id}/activities`

## Request

- Base URL: `https://api.hubstaff.com`
- URL: `https://api.hubstaff.com/v2/projects/{project_id}/activities`
- Auth: OAuth 2
  - Authorization code: `https://account.hubstaff.com/authorizations/new`
  - Token URL: `https://account.hubstaff.com/access_tokens` scopes: `hubstaff:read`, `hubstaff:write`
- TypeScript: <https://skmtc.dev/hubstaff/apis/hubstaff-v2-api/docs/v2/projects/:project_id/activities/get.ts> (a function with typed inputs; its response is checked against the schema)

Returns a collection of activities (10-minute time blocks) for the given project.

Results can be filtered by user, task, project, and time range (time_slot[start], time_slot[stop]).

For aggregated daily data, use the daily_activities endpoint instead.

Note: Data may be delayed up to 20 minutes.
Note: Date range limit is 7 days. Earliest date is 6 months ago.

## Path parameters

- `project_id` integer, required

## Query parameters

- `page_start_id` integer
- `page_limit` integer
- `time_slot[start]` string, date-time, required
- `time_slot[stop]` string, date-time, required
- `user_ids` integer[]
- `task_ids` integer[]
- `global_todo_ids` integer[]
- `include` string[]
- `time_zone` string

## Response `200`

A list of activities

- object
  - `activities` Activity[]
    - `id` integer, required: Activity ID
    - `date` string, date, required: Organization date
    - `created_at` string, date-time, required: When the record was created
    - `updated_at` string, date-time, required: When the record was last updated
    - `time_slot` string, date-time, required: Time slot
    - `starts_at` string, date-time, required: Date and time tracking was started within time slot
    - `user_id` integer, required: User ID
    - `project_id` integer, required: Project ID
    - `task_id` integer, required: Task ID
    - `keyboard` integer, required: The amount of time the keyboard was active within the time worked in seconds
    - `mouse` integer, required: The amount of time the mouse was active within the time worked in seconds
    - `overall` integer, required: The amount of time the keyboard or mouse was active within the time worked in seconds
    - `tracked` integer, required: Total time worked in seconds
    - `input_tracked` integer, required: Total time worked in seconds with input tracking enabled (keyboard, mouse)
    - `tracks_input` boolean, required: Whether the source can and had input tracking enabled activities (keyboard, mouse)
    - `location_type` string, required: Remote vs in-office status: unknown, remote, or on_site
    - `billable` boolean, required: Whether the time is billable
    - `paid` boolean, required: Whether the time has been marked paid
    - `client_invoiced` boolean, required: Whether the time has been invoiced to a client
    - `team_invoiced` boolean, required: Whether the time has been invoiced for a team member
    - `immutable` boolean, required: Whether the time is locked
    - `timesheet_id` integer: The timesheet for this activity
    - `timesheet_locked` boolean: Whether the timesheet is locking this activity
    - `time_type` string, required: The type of activity this is
    - `client` string, required: Which client the activity originated from

## Other responses

- `400`: Invalid parameters
- `401`: Unauthorized
- `403`: API access is only for organizations on an active plan
- `404`: Could not find record
- `429`: Rate limit exceeded

---

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