Retrieve a time entry

Operation ID: getTimeEntry

Group: PSA › Time Entries

Open in the interactive reference

GET /psa/time-entries/{id}

Read-only: Reads and returns; changes nothing.

Retrieves a time entry. The response has the same fields as each time entry from GET psa/time-entries.

Some time entries come back with fewer fields. That happens when the time entry's project is in the 'Planning' or 'PlanningDraft' status, or when you are not a team member of the project and not a super admin. The response then leaves out psaProjectId, projectName, psaProjectStatus, projectPositionId, projectPositionName, memberEmployeeId, memberEmployeeName, projectActivityName, billableHours, nonBillableHours, internalValuableHours, and internalNonValuableHours.

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.
id path string yes The unique identifier of the time entry you want to retrieve. Example: "9b1c7f42-3d8a-4e05-b6c1-27fa5e903d18".

Response

200 Success

Under data (getTimeEntryOutput):

Field Type Required Description
id string yes The unique identifier for the time entry. Example: "9b1c7f42-3d8a-4e05-b6c1-27fa5e903d18".
date date no The date the time was logged for. Format YYYY-MM-DD. Example: "2026-08-10".
hours decimal no The total hours logged in this entry. Example: "8".
billableHours decimal no The hours classified as billable to a customer, derived from projectActivityCategory. Example: "8".
nonBillableHours decimal no The hours classified as non-billable to a customer, derived from projectActivityCategory.
internalValuableHours decimal no The hours classified as internal valuable work, derived from projectActivityCategory.
internalNonValuableHours decimal no The hours classified as internal non-valuable work, derived from projectActivityCategory.
invoicedHours decimal no The hours that have been invoiced, a subset of billableHours.
revenue decimal no The revenue from this time entry, in the currency given by currency. Example: "1250.00".
cost decimal no The cost of this time entry, in the currency given by currency. Example: "800.00".
currency string no The currency of revenue and cost. Format ISO 4217, for example 'USD'. It is the currency of the project position's bill rate. Example: "USD".
notes string no Free-form notes on the time entry.
submissionStatus string no The submission and approval status of the entry. Possible values: 'draft', 'pending', 'approved', 'rejected', 'submittedForInvoicing', 'invoiced'. Example: "draft".
submissionDate date no The date the entry was submitted for approval. Format YYYY-MM-DD.
month date no The first day of the month the entry is reported under. Format YYYY-MM-DD. Example: "2026-08-01".
memberId number no The numeric key of the PSA member assignment the time was logged for. GET psa/team-members/:id takes the member's UUID, not this key, so it cannot fetch the member. Example: 5001.
memberEmployeeId number no The numeric key of the employee who logged the time. There is no endpoint for it. Example: 3845142.
memberEmployeeName string no The name of the employee who logged the time. Example: "Alex Rivera".
projectActivityId number no The numeric key of the activity the time was logged against. GET psa/activities/:id takes the activity's UUID, not this key, so it cannot fetch the activity. Example: 7001.
projectActivityName string no The name of the activity the time was logged against.
projectActivityCategory string no The billability category of the activity the time was logged against. The billable, non-billable and internal-hour fields are derived from it. See category on GET psa/activities/:id. Example: "ClientBillable".
projectPositionId number no The numeric key of the position the time was logged against. GET psa/positions/:id takes the position's UUID, not this key, so it cannot fetch the position.
projectPositionName string no The name of the position the time was logged against.
psaProjectId number no The numeric key of the PSA project the entry belongs to. GET psa/projects/:id takes the project's UUID, not this key, so it cannot fetch the project. Example: 32341.
projectName string no The name of the PSA project the entry belongs to.
psaProjectStatus string no The status of the PSA project this entry belongs to.
lastModifiedDate date-time no The date and time the entry last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. Example: "2026-08-14T11:20:31.004Z".
{
  "data": {
    "id": "9b1c7f42-3d8a-4e05-b6c1-27fa5e903d18",
    "date": "2026-08-10",
    "hours": "8",
    "billableHours": "8",
    "nonBillableHours": "19.99",
    "internalValuableHours": "19.99",
    "internalNonValuableHours": "19.99",
    "invoicedHours": "19.99",
    "revenue": "1250.00",
    "cost": "800.00",
    "currency": "USD",
    "notes": "<notes>",
    "submissionStatus": "draft",
    "submissionDate": "2026-01-15",
    "month": "2026-08-01",
    "memberId": 5001,
    "memberEmployeeId": 3845142,
    "memberEmployeeName": "Alex Rivera",
    "projectActivityId": 7001,
    "projectActivityName": "<projectActivityName>",
    "projectActivityCategory": "ClientBillable",
    "projectPositionId": 0,
    "projectPositionName": "<projectPositionName>",
    "psaProjectId": 32341,
    "projectName": "<projectName>",
    "psaProjectStatus": "<psaProjectStatus>",
    "lastModifiedDate": "2026-08-14T11:20:31.004Z"
  },
  "diagnostics": [
    {
      "code": "<code>",
      "message": "<message>",
      "severity": "error",
      "path": [
        "<path>"
      ],
      "details": "<details>"
    }
  ]
}

Errors

Code Status
NOT_FOUND 400

Statuses