Skip to content

WebWork Tracker REST API V2 (2.0.0)

Modern REST API for WebWork 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

Get All Time Requests

Request

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

Security
oauth2 or apiKey
Query
workspace_idintegerrequired

Workspace ID (required)

Example: workspace_id=1
statusstring

Filter by status. Must be one of: pending, approved, rejected

Enum"pending""approved""rejected"
user_idinteger

Filter by user ID

project_idinteger

Filter by project ID

date_fromstring(date)required

Start date for filtering time requests (required). Format: YYYY-MM-DD. Must be before or equal to date_to.

date_tostring(date)required

End date for filtering time requests (required). Format: YYYY-MM-DD. Must be after or equal to date_from.

idstring

Filter by encrypted time request ID

pageinteger

Page number for pagination

Default 1
per_pageinteger<= 100

Number of results per page (max 100)

Default 30
curl -i -X GET \
  'https://api.webwork-tracker.com/api/v2/time-requests?workspace_id=1&date_from=2019-08-24&date_to=2019-08-24' \
  -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" } }

Create Time Request

Request

Create a new time request. The system will use existing logic based on user permissions and workspace auto-approval settings to determine whether the time is added immediately or creates a pending request.

Security
oauth2 or apiKey
Bodyapplication/jsonrequired
workspace_idintegerrequired

Workspace ID (required)

user_idintegerrequired

User ID for whom the time request is being created (required)

contract_idinteger or null

Contract ID (optional). Can be null if creating a time request without a contract.

startstring(date-time)required

Start time in ISO 8601 format (required)

endstring(date-time)required

End time in ISO 8601 format, must be after start (required)

activity_descriptionstring or null

Optional activity description for the time request

task_idinteger or null

Optional task ID to associate with the time request

curl -i -X POST \
  https://api.webwork-tracker.com/api/v2/time-requests \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "workspace_id": 1,
    "user_id": 123,
    "contract_id": 456,
    "start": "2025-12-05T09:00:00+00:00",
    "end": "2025-12-05T17:00:00+00:00",
    "activity_description": "Worked on feature implementation",
    "task_id": 101
  }'

Responses

Time request created successfully

Bodyapplication/json
successbooleanrequired
Example: true
dataobjectrequired
data.​idstringrequired

Encrypted time request ID

Example: "encoded_id_string"
data.​statusstringrequired

Time request status

Enum"pending""approved""rejected"
Example: "pending"
messagestringrequired
Example: "Time request created successfully"
metaobject(Meta)required
meta.​api_versionstring
Example: "2.0.0"
meta.​timestampstring(date-time)
Response
application/json
{ "success": true, "data": { "id": "encoded_id_string", "status": "pending" }, "message": "Time request created successfully", "meta": { "api_version": "2.0.0", "timestamp": "2025-12-05T11:00:00.000000Z" } }

Approve Time Request

Request

Approve a pending time request.

Security
oauth2 or apiKey
Path
timeRequestIdstringrequired
Bodyapplication/jsonrequired
workspace_idintegerrequired

Workspace ID (required)

Example: 1
curl -i -X POST \
  'https://api.webwork-tracker.com/api/v2/time-requests/{timeRequestId}/approve' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "workspace_id": 1
  }'

Responses

Time request approved successfully

Bodyapplication/json
successbooleanrequired
Example: true
dataobjectrequired
data.​idstringrequired

Encrypted time request ID

Example: "encoded_id_string"
data.​statusstringrequired

Time request status (always 'approved' for approve endpoint)

Value"approved"
Example: "approved"
messagestringrequired
Example: "Time request approved successfully"
metaobject(Meta)required
meta.​api_versionstring
Example: "2.0.0"
meta.​timestampstring(date-time)
Response
application/json
{ "success": true, "data": { "id": "encoded_id_string", "status": "approved" }, "message": "Time request approved successfully", "meta": { "api_version": "2.0.0", "timestamp": "2025-12-05T11:00:00.000000Z" } }

Reject Time Request

Request

Reject a pending time request. Requires a comment explaining the rejection reason.

Security
oauth2 or apiKey
Path
timeRequestIdstringrequired
Bodyapplication/jsonrequired
workspace_idintegerrequired

Workspace ID (required)

commentstring<= 1000 charactersrequired

Comment explaining the rejection reason (required, max 1000 characters)

Example: "Time entry overlaps with existing approved time"
curl -i -X POST \
  'https://api.webwork-tracker.com/api/v2/time-requests/{timeRequestId}/reject' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "workspace_id": 1,
    "comment": "Time entry overlaps with existing approved time"
  }'

Responses

Time request rejected successfully

Bodyapplication/json
successbooleanrequired
Example: true
dataobjectrequired
data.​idstringrequired

Encrypted time request ID

Example: "encoded_id_string"
data.​statusstringrequired

Time request status (always 'rejected' for reject endpoint)

Value"rejected"
Example: "rejected"
messagestringrequired
Example: "Time request rejected successfully"
metaobject(Meta)required
meta.​api_versionstring
Example: "2.0.0"
meta.​timestampstring(date-time)
Response
application/json
{ "success": true, "data": { "id": "encoded_id_string", "status": "rejected" }, "message": "Time request rejected successfully", "meta": { "api_version": "2.0.0", "timestamp": "2025-12-05T11:00:00.000000Z" } }

Leaves

Manage leave requests, balances, and policies

Operations

Expenses

Manage expenses and expense categories

Operations

Time Tracking

Track and manage time entries

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