List activities

Operation ID: activities

Group: PSA › Activities

Open in the interactive reference

GET /psa/activities

Read-only: Reads and returns; changes nothing.

Lists activities. Each activity appears once in the list. The list does not say who is assigned to each activity.

You can't filter activities by name or description, and there is no search endpoint for activities.

Parameters

Name In Type Required Description
Api-Version header string · v1 yes The API version this request targets, named by its public identifier. Required on every request; omitting it, or naming a version this company does not have, is answered with 400. This document describes version v1.

Query surface

Response

200 Success

Under data, an array of activitiesRow:

Field Type Required Filter Sort Description
id string no Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) yes The unique identifier for the activity. Example: "c4a91b07-6e52-4d38-9a1f-83b7de20c5f6".
name string no no yes The display name of the activity. Example: "Discovery workshop".
description string | null no no no A free-form description of the activity. Absent when none was set. Example: "Two-day onsite requirements workshop.".
hoursBudget decimal | null no no yes The budgeted hours for this activity, as a count of hours. It is not a monetary amount. Example: "40.00".
billable boolean | null no Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) no Whether the activity is billable to a customer. Derived from category being 'ClientBillable'. Example: true.
invoiced boolean | null no Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) no Whether the activity has been invoiced. Example: false.
startDate date | null no Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) yes The activity's start date. Format YYYY-MM-DD. It is within the owning project's date range when the project's enforceActivityDateRange setting is on. Example: "2026-09-01".
endDate date | null no Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) yes The activity's end date. Format YYYY-MM-DD. Example: "2026-09-02".
billingType string no Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) yes The activity's billing type. Possible values: 'Hours', 'Milestone', 'FixedFee'. Example: "Hours".
category string | null no Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) yes The activity's category. Possible values: 'ClientBillable', 'NonBillable', 'NonValuable', 'Valuable'. Example: "ClientBillable".
milestoneId number | null no no no The id of the milestone this activity is billed against. Absent unless billingType is 'Milestone'. It is a numeric key, not the UUID that GET psa/milestones/:id takes.
fixedFeeId number | null no no no The id of the fixed fee this activity is billed against. Absent unless billingType is 'FixedFee'. It is a numeric key, not the UUID that GET psa/fixed-fees/:id takes.
activityStatusId number | null no no no The id of the activity's progress status. Absent when no status is set. Status values are tenant-configured, and there is no endpoint that lists them. Use statusName for the label. Example: 3.
statusName string | null no no no The name of the activity's progress status, for example 'In progress'. Absent when no status is set. Example: "In progress".
parentActivityId number | null no no no The id of the parent activity when this is a sub-task. Absent when the activity is top-level. It is a numeric key, not the UUID that GET psa/activities/:id takes.
psaProjectId number | null no Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) yes The id of the PSA project that owns this activity. Absent for a timetracking project with no PSA layer. It is a numeric key you can filter on here, but not the UUID that GET psa/projects/:id takes. Example: 32341.
lastModifiedDate date-time | null no Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) yes The date and time this activity last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. Example: "2026-08-14T11:20:31.004Z".
{
  "data": [
    {
      "id": "c4a91b07-6e52-4d38-9a1f-83b7de20c5f6",
      "name": "Discovery workshop",
      "description": "Two-day onsite requirements workshop.",
      "hoursBudget": "40.00",
      "billable": true,
      "invoiced": false,
      "startDate": "2026-09-01",
      "endDate": "2026-09-02",
      "billingType": "Hours",
      "category": "ClientBillable",
      "milestoneId": 0,
      "fixedFeeId": 0,
      "activityStatusId": 3,
      "statusName": "In progress",
      "parentActivityId": 0,
      "psaProjectId": 32341,
      "lastModifiedDate": "2026-08-14T11:20:31.004Z"
    }
  ],
  "pagination": {
    "hasMore": true,
    "nextCursor": "<nextCursor>"
  }
}

Statuses