Skip to content

WebWork Time Tracker API V2 Documentation (2.0.0)

Modern REST API for WebWork Time Tracker with OAuth2 authentication. This API provides access to workspaces, members, projects, and time tracking features.

Languages
Servers
Production Server
https://api.webwork-tracker.com/api/v2

Workspaces

Read workspace information for the authenticated user for using it in the other endpoints

Operations

Members

Manage workspace members - invite, update roles, and remove members

Operations

Projects

Manage projects within workspaces

Operations

Contracts

Manage contracts (project-member assignments) within workspaces. Contracts define which members are assigned to which projects, with settings for rates, hours limits, and screenshot modes. Rate information is only visible if you have permission to view rates and the project is billable.

Operations

Tasks

Manage tasks within projects

Operations

Project Viewers

Manage project viewers - external users who can view specific projects

Operations

Timesheets

Manage timesheet approvals and submissions

Operations

Time Requests

Manage manual time requests and approvals

Operations

Leaves

Manage leave requests, balances, and policies

Operations

Expenses

Manage expenses and expense categories

Operations

Time Tracking

Start, stop, and monitor real-time tracking

Operations

Time Entries

Manage time entries - create, read, update, and delete time records

Operations

Get Time Entries

Request

Retrieve time entries for a workspace. Returns a paginated list of time entries with filters for specific date, user, project, and task. Requires workspace owner or executive manager permissions.

Security
oauth2 or apiKey
Query
workspace_idintegerrequired

ID of the workspace

Example: workspace_id=1
user_idintegerrequired

Filter by user ID

Example: user_id=100
datestring(date)required

Filter entries for a specific date (format: Y-m-d)

Example: date=2026-01-29
project_idinteger

Filter by project ID

Example: project_id=10
task_idinteger

Filter by task ID

Example: task_id=5
pageinteger>= 1

Page number for pagination

Default 1
per_pageinteger[ 1 .. 100 ]

Number of items per page (maximum 50)

Default 20
curl -i -X GET \
  'https://api.webwork-tracker.com/api/v2/time-entries?workspace_id=1&user_id=100&date=2026-01-29' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Time entries retrieved successfully

Bodyapplication/json
successboolean
Example: true
dataArray of objects
metaobject
Response
application/json
{ "success": true, "data": [ {} ], "meta": { "api_version": "2.0.0", "timestamp": "2026-01-29T12:00:00.000000Z", "pagination": {} } }

Create Time Entry

Request

Create a new time entry manually. This is useful for adding historical time entries or entries that weren't tracked in real-time. Requires workspace owner or executive manager permissions.

Important Notes:

  • Time entries are validated against member and contract limits
  • Overlapping time entries may result in partial time being saved
  • The response will indicate if only partial time was added due to limits or overlaps
Security
oauth2 or apiKey
Bodyapplication/jsonrequired
workspace_idintegerrequired

ID of the workspace

Example: 1
user_idintegerrequired

ID of the user

Example: 100
contract_idinteger or null

Contract ID (project-member assignment)

Example: 20
task_idinteger or null

Optional task ID

Example: 5
notesstring or null<= 500 characters

Activity notes or description

Example: "Working on feature implementation"
datestring(date)required

Date of the time entry (format: Y-m-d)

Example: "2026-01-29"
start_timestring(time)required

Start time in HH:mm format

Example: "09:00"
end_timestring(time)required

End time in HH:mm format (must be after start_time)

Example: "17:00"
curl -i -X POST \
  https://api.webwork-tracker.com/api/v2/time-entries \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "workspace_id": 1,
    "user_id": 100,
    "contract_id": 20,
    "task_id": 5,
    "notes": "Working on feature implementation",
    "date": "2026-01-29",
    "start_time": "09:00",
    "end_time": "17:00"
  }'

Responses

Time entry created successfully (full or partial)

Bodyapplication/json
successboolean
Example: true
messagestring

Human-readable message indicating the result. May include warnings about partial saves.

Example: "8 hr successfully added for John Doe."
saved_minutesinteger

Number of minutes actually saved. May be less than requested if limits were reached.

Example: 480
dataobject
metaobject
Response
application/json
{ "success": true, "message": "8 hr successfully added for John Doe.", "saved_minutes": 480, "data": { "user_id": 100, "contract_id": 20, "project_id": 10, "project_name": "Website Redesign", "task_id": 5, "task_title": "Update homepage design", "activity_description": "Working on feature implementation", "method": "Manually added time", "date": "2026-01-29", "start_time": "2026-01-29T09:00:00Z", "end_time": "2026-01-29T17:00:00Z", "duration_minutes": 480 }, "meta": { "api_version": "2.0.0", "timestamp": "2026-01-29T12:00:00.000000Z" } }

Update Time Entry

Request

Update an existing time entry. You can update the activity description, notes, task, project assignment, date, or time range. Requires workspace owner or executive manager permissions.

Important Notes:

  • All fields except workspace_id are optional
  • If you update only start_time or end_time, the other will be preserved from the existing entry
  • Times are validated to ensure end_time is after start_time
Security
oauth2 or apiKey
Path
time_entry_idstring(uuid)required

Encrypted UUID identifier of the time entry to update

Example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
Bodyapplication/jsonrequired
workspace_idintegerrequired

ID of the workspace

Example: 1
project_idinteger or null

Project ID

Example: 10
task_idinteger or null

Task ID

Example: 5
notesstring or null<= 500 characters

Activity notes or description

Example: "Updated activity description"
datestring(date)

Date of the time entry (format: Y-m-d)

Example: "2026-01-29"
start_timestring(time)

Start time in HH:mm format

Example: "09:00"
end_timestring(time)

End time in HH:mm format (must be after start_time)

Example: "17:30"
curl -i -X PUT \
  https://api.webwork-tracker.com/api/v2/time-entries/a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "workspace_id": 1,
    "project_id": 10,
    "task_id": 5,
    "notes": "Updated activity description",
    "date": "2026-01-29",
    "start_time": "09:00",
    "end_time": "17:30"
  }'

Responses

Time entry updated successfully

Bodyapplication/json
successboolean
Example: true
messagestring
Example: "Time entry updated successfully"
metaobject
Response
application/json
{ "success": true, "message": "Time entry updated successfully", "meta": { "api_version": "2.0.0", "timestamp": "2026-01-29T12:00:00.000000Z" } }

Delete Time Entry

Request

Delete a time entry. This permanently removes the time entry from the system. Requires workspace owner or executive manager permissions.

Important Notes:

  • The workspace_id must be provided in the request body
  • The time entry identifier in the path must be a valid encrypted UUID
  • Only time entries within the authenticated user's workspace can be deleted
Security
oauth2 or apiKey
Path
time_entry_idstring(uuid)required

Encrypted UUID identifier of the time entry to delete

Example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
Bodyapplication/jsonrequired
workspace_idintegerrequired

ID of the workspace

Example: 1
curl -i -X DELETE \
  https://api.webwork-tracker.com/api/v2/time-entries/a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "workspace_id": 1
  }'

Responses

Time entry deleted successfully

Bodyapplication/json
successboolean
Example: true
messagestring
Example: "Time entry deleted successfully"
metaobject
Response
application/json
{ "success": true, "message": "Time entry deleted successfully", "meta": { "api_version": "2.0.0", "timestamp": "2026-01-29T12:00:00.000000Z" } }

Reports

Generate and retrieve various reports including tracked hours, timeline, activity descriptions, tasks, and activity level reports

Operations

Webhooks

Manage webhooks for event notifications

Operations