Skip to content
English
  • There are no suggestions because the search field is empty.

PSOhub API: Timesheets

Learn how to retrieve and create timesheet entries in PSOhub via the API

Published: 1 June 2026

Audience

  • Admin

Objective

This reference article covers the PSOhub API endpoints for retrieving and creating timesheet entries. Use these endpoints to query time bookings for a project or user and to create new timesheet entries programmatically.

Prerequisites

Eligible access
        You must have Admin user access in PSOhub.
 
API access enabled
        You must have API access enabled for your PSOhub account.
 
ProjectID, ContractLineID, AccountID and RoleID
        To create a timesheet, the ProjectID, ContractLineID, AccountID, and                           RoleID must be known. These can be retrieved via the relevant API endpoints or from          the PSOhub OData feed.

How to Get Timesheets

Steps

  1. Use this endpoint to retrieve timesheet entries filtered by project and/or user.

Endpoint

 
 
GET https://www.psohubapp.com/rest/psohubapi/v1/timesheets?projectid=693467340

       2.    Use the limit parameter to control the number of records returned. If not specified, the                       API returns a maximum of 50 timesheets per request. Use date filtering to retrieve additional                 sets of records beyond this limit.

⚠️ Important: Timesheets are always connected to both a project and a user. You must                filter on at least one of the two parameters (projectid or accountid) for the                      request to be valid.

Example response

 
 

json

[   {     "DateTimeFrom": "2024-08-14T08:00:00.000Z",     "DateTimeTo": "2024-08-14T12:00:00.000Z",     "NumberOfHours": 4,     "AccountID": 39406496739494241,     "ProjectID": 13229323915858894,     "ContractLineID": 7036874429341080,     "RoleID": 9851624184876568,     "AccountName": "Martijn vd Hoeden",     "ProjectName": "Advice Hours Vd Hoeden",     "ContractLineName": "10.002 - Tax Services",     "RoleName": "Project Manager",     "Description": "vpb meeting",     "InvoiceNumber": "INV-2025-03",     "ExternalInvoiceNumber": "231",     "TaskID": "232362356236231",     "CreationDateTime": "2024-08-14T08:00:00.000Z"   } ]

Response fields

Name Type Description
DateTimeFrom DateTime Start date and time of the time booking.
DateTimeTo DateTime End date and time of the time booking.
NumberOfHours Decimal Total number of hours booked.
AccountID Integer/Long The PSOhub ID of the user account that logged the time entry.
ProjectID Integer/Long The ID of the project.
ContractLineID Integer/Long The ID of the contract line.
RoleID Integer/Long The ID of the project role for the user.
AccountName String The name of the user who logged the time entry.
ProjectName String The name of the project, for easy reference.
ContractLineName String The name of the contract line, for easy reference.
RoleName String The name of the project role, for easy reference.
Description String The description the user added for the booking.
InvoiceNumber String The PSOhub invoice number. Draft invoices return Draft as the number.
ExternalInvoiceNumber String Invoice number from a connected financial integration, or set via the API. Only appears when a financial integration is connected or if updated via API.
TaskID Integer/Long The ID of the task the time was booked against, if applicable.
CreationDateTime DateTime The date and time the timesheet entry was created.
ApprovedDatePM DateTime The date the project manager approved the timesheet.
ApprovedByPM Boolean Whether the entry has been approved by the project manager.
ApprovedDateTL DateTime The date the team lead approved the timesheet.
ApprovedByTL Boolean Whether the entry has been approved by the team lead.
SalesRate Decimal The selling rate for this time entry, based on the resource and role combination on the project.
CostRate Decimal The cost rate for this time entry, based on the resource and role combination on the project.

How to Create a Timesheet

Steps

  1. Use this endpoint to create a new timesheet entry on a project.

Endpoint

 
 
POST https://www.psohubapp.com/rest/psohubapi/v1/timesheets

Request fields

Name Required Type Description
DateTimeFrom Yes DateTime Start date and time of the booking.
DateTimeTo Yes DateTime End date and time of the booking.
NumberOfHours Yes Decimal Total number of hours booked.
AccountID Yes Integer/Long The PSOhub ID of the user account booking the time.
ProjectID Yes Integer/Long The ID of the project.
ContractLineID Yes Integer/Long The ID of the contract line.
RoleID Yes Integer/Long The ID of the project role for the user.
Description No String An optional description for the booking.

Example request body

 
 

json

{   "DateTimeFrom": "2024-09-23T08:00:00.000Z",   "DateTimeTo": "2024-09-23T16:00:00.000Z",   "NumberOfHours": 8,   "AccountID": 39406496739494241,   "ProjectID": 13229323915858894,   "ContractLineID": 7036874429341080,   "RoleID": 9851624184876568,   "Description": "Booked via API" }

Response

On success, the API returns the unique TimesheetID for the created entry.

 
 

json

{   "TimesheetID": "ef2e44e2-9126-4012-9e02-25c1eb12e98d" }

Related Articles