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

Get All Leaves

Request

Retrieve all leave requests for a specific workspace. Requires workspace_id as query parameter.

Security
oauth2(Required scopes:
read
)
or apiKey
Query
workspace_idintegerrequired

The workspace ID

Example: workspace_id=1
idstring

Filter by leave request ID

user_idinteger

Filter by user ID

policy_idinteger

Filter by leave policy ID

is_paidstring

Filter by paid leave status (yes or no)

Enum"yes""no"
date_fromstring(date)

Filter leaves from this date (format: Y-m-d). If provided, date_to must be after or equal to date_from.

Example: date_from=2024-01-01
date_tostring(date)

Filter leaves until this date (format: Y-m-d). Must be after or equal to date_from if date_from is provided.

Example: date_to=2024-12-31
statusstring

Filter by leave request status

curl -i -X GET \
  'https://api.webwork-tracker.com/api/v2/leaves?workspace_id=1' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Request successful

Bodyapplication/json
successboolean
Example: true
dataArray of objects

Array of leave request objects

metaobject(Meta)
Response
application/json
{ "success": true, "data": [ {} ], "meta": { "api_version": "2.0.0", "timestamp": "2019-08-24T14:15:22Z" } }

Request Leave

Request

Security
oauth2(Required scopes:
write
)
or apiKey
Bodyapplication/jsonrequired
workspace_idintegerrequired

ID of the workspace

Example: 123
policy_idintegerrequired

ID of the leave policy

Example: 456
startstring(date)required

Start date in YYYY-MM-DD format

Example: "2026-02-10"
endstring(date)required

End date in YYYY-MM-DD format

Example: "2026-02-12"
user_idintegerrequired

ID of the user

Example: 789
start_timestring(time)

Start time in HH:mm format. (Required when policy is hour-based)

Example: "09:00"
end_timestring(time)

End time in HH:mm format. (Required when policy is hour-based)

Example: "13:00"
hours_per_daynumber

Required when policy is hour-based

leave_periodinteger

Leave period (0: Full day, 1: 1st half, 2: 2nd half)

Default 0
reasonstring<= 255 characters

Reason for the leave request

curl -i -X POST \
  https://api.webwork-tracker.com/api/v2/leaves \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "workspace_id": 123,
    "policy_id": 456,
    "start": "2026-02-10",
    "end": "2026-02-12",
    "user_id": 789,
    "reason": "I will be out of office for the next 2 days",
    "leave_period": 1
  }'

Responses

Request successful

Bodyapplication/json
successboolean
Example: true
messagestring
metaobject(Meta)
Response
application/json
{ "success": true, "message": "string", "meta": { "api_version": "2.0.0", "timestamp": "2019-08-24T14:15:22Z" } }

Get Leave Balances

Request

Security
oauth2(Required scopes:
read
)
or apiKey
Query
workspace_idintegerrequired
Example: workspace_id=1
curl -i -X GET \
  'https://api.webwork-tracker.com/api/v2/leaves/balances?workspace_id=1' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Request successful

Bodyapplication/json
successboolean
Example: true
dataobject
messagestring
metaobject(Meta)
Response
application/json
{ "success": true, "data": {}, "message": "string", "meta": { "api_version": "2.0.0", "timestamp": "2019-08-24T14:15:22Z" } }

Get Leave Policies

Request

Security
oauth2(Required scopes:
read
)
or apiKey
Query
workspace_idintegerrequired
Example: workspace_id=1
curl -i -X GET \
  'https://api.webwork-tracker.com/api/v2/leaves/policies?workspace_id=1' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Request successful

Bodyapplication/json
successboolean
Example: true
dataobject
messagestring
metaobject(Meta)
Response
application/json
{ "success": true, "data": {}, "message": "string", "meta": { "api_version": "2.0.0", "timestamp": "2019-08-24T14:15:22Z" } }

Approve Leave Request

Request

Security
oauth2(Required scopes:
write
)
or apiKey
Path
leaveRequestIdstringrequired
Bodyapplication/jsonrequired
workspace_idintegerrequired
curl -i -X PUT \
  'https://api.webwork-tracker.com/api/v2/leaves/{leaveRequestId}/approve' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "workspace_id": 0
  }'

Responses

Request successful

Bodyapplication/json
successboolean
Example: true
dataobject
messagestring
metaobject(Meta)
Response
application/json
{ "success": true, "data": {}, "message": "string", "meta": { "api_version": "2.0.0", "timestamp": "2019-08-24T14:15:22Z" } }

Reject Leave Request

Request

Security
oauth2(Required scopes:
write
)
or apiKey
Path
leaveRequestIdstringrequired
Bodyapplication/jsonrequired
workspace_idintegerrequired
curl -i -X PUT \
  'https://api.webwork-tracker.com/api/v2/leaves/{leaveRequestId}/reject' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "workspace_id": 0
  }'

Responses

Request successful

Bodyapplication/json
successboolean
Example: true
dataobject
messagestring
metaobject(Meta)
Response
application/json
{ "success": true, "data": {}, "message": "string", "meta": { "api_version": "2.0.0", "timestamp": "2019-08-24T14:15:22Z" } }

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

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