# List allocations

Operation ID: `allocations`

Group: PSA › Allocations

[Open in the interactive reference](https://docs.api.lensing.ai/lensing/v1/endpoints/allocations)

`GET /psa/allocations`

Read-only: Reads and returns; changes nothing.

Lists allocations. The ids that link an allocation to other records (memberId, employeeId, projectActivityId, projectPositionId, and psaProjectId) are numeric, not UUIDs. You can't use them with the GET endpoints for team members, activities, positions, or projects.

You can't filter allocations by team member, project, or activity, and there is no search endpoint for allocations. To find one person's allocations, you have to read the whole list.

## 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

- `startDate` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `endDate` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `method` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `lastModifiedDate` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- Orderable: startDate, endDate, totalHours, method, lastModifiedDate
- Selectable: id, startDate, endDate, totalHours, notes, method, memberId, employeeId, projectActivityId, projectPositionId, psaProjectId, memberName, memberPlaceholderName, projectActivityName, projectPositionName, lastModifiedDate
- `page[size]` — Page size
- `page[cursor]` — Opaque continuation cursor

## Response

`200` Success

Under `data`, an array of allocationsRow:

| Field | Type | Required | Filter | Sort | Description |
| --- | --- | --- | --- | --- | --- |
| `id` | string | no | no | no | The unique identifier for the allocation. |
| `startDate` | date | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | The first day of the allocation period, inclusive. Format YYYY-MM-DD. |
| `endDate` | date | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | The last day of the allocation period, inclusive. Format YYYY-MM-DD. |
| `totalHours` | decimal | no | no | yes | The total planned hours for the allocation period. |
| `notes` | string \| null | no | no | no | Free-form notes about the allocation. |
| `method` | string | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | The distribution method for the planned hours. Possible values: 'totalHours', 'hoursPerDay', 'hoursPerWeek', 'hoursPerMonth'. |
| `memberId` | number \| null | no | no | no | The id of the PSA team-member assignment the allocation is booked against. It is a numeric key, not the UUID that GET psa/team-members/:id takes. |
| `employeeId` | number \| null | no | no | no | The id of the employee for the allocated team member. It is a numeric key, and there is no public endpoint for an employee. |
| `projectActivityId` | number \| null | no | no | no | The id of the project activity the allocation is against. It is a numeric key, not the UUID that GET psa/activities/:id takes. |
| `projectPositionId` | number \| null | no | no | no | The id of the project position the allocation is against. It is a numeric key, not the UUID that GET psa/positions/:id takes. |
| `psaProjectId` | number | no | no | no | The id of the PSA project the allocation belongs to. It is a numeric key, not the UUID that GET psa/projects/:id takes. |
| `memberName` | string \| null | no | no | no | The name of the allocated team member. |
| `memberPlaceholderName` | string \| null | no | no | no | The name of the placeholder, when the allocation is to a placeholder rather than an employee. |
| `projectActivityName` | string \| null | no | no | no | The name of the project activity. |
| `projectPositionName` | string \| null | no | no | no | The name of the project position. |
| `lastModifiedDate` | date-time \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | The date and time the allocation record last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. |

```json
{
  "data": [
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "startDate": "2026-01-15",
      "endDate": "2026-01-15",
      "totalHours": "19.99",
      "notes": "<notes>",
      "method": "<method>",
      "memberId": 0,
      "employeeId": 0,
      "projectActivityId": 0,
      "projectPositionId": 0,
      "psaProjectId": 0,
      "memberName": "<memberName>",
      "memberPlaceholderName": "<memberPlaceholderName>",
      "projectActivityName": "<projectActivityName>",
      "projectPositionName": "<projectPositionName>",
      "lastModifiedDate": "2026-01-15T09:30:00.000Z"
    }
  ],
  "pagination": {
    "hasMore": true,
    "nextCursor": "<nextCursor>"
  }
}
```

## Statuses

- `400` — Invalid request or business failure
- `401` — The request carries no valid access token.
- `403` — Not authorized
- `404` — Not found
- `429` — Too many requests from this client address. The response has no body and no `Retry-After` header.
- `500` — Internal server error
