Skip to content

WebWork Tracker REST API V2 (2.0.0)

WebWork Tracker REST API V2 provides programmatic access to your workspace data. This API allows you to manage members, projects, tasks, time tracking, leaves, and expenses. Access is restricted to workspace owners and executive managers only.

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

Tasks

Manage tasks within projects. As a workspace owner or executive manager, you have full access to all tasks in your workspace.

Operations

Project Viewers

Manage project viewers (clients) within workspaces. Project viewers are users with read-only access to specific projects. Project viewers can only view projects they are assigned to.

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.

Operations

Time Tracking

Track and manage time entries

Operations

Timesheets

Manage timesheet approvals - view, approve, reject, submit, and unsubmit timesheets.

Operations

Time Requests

Manage manual time requests - create time requests for team members, approve or reject pending requests.

Operations

Get All Time Requests

Request

Retrieve all time requests in your workspace. Supports filtering by status (pending, approved, rejected), user_id, date range, and ID. If status is not specified, returns all statuses. Results are paginated.

Security
oauth2 or apiKey
Query
workspace_idintegerrequired

ID of the workspace

Example: workspace_id=1
idstring(uuid)

UUID of the time request

Example: id=a1b2c3d4-e5f6-7890-abcd-ef1234567890
statusstring

Filter by time request status

Enum"pending""approved""rejected"
Example: status=pending
user_idinteger

Filter by user ID

Example: user_id=100
date_fromstring(date)

Filter time requests from this date (YYYY-MM-DD)

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

Filter time requests to this date (YYYY-MM-DD)

Example: date_to=2024-01-31
pageinteger>= 1

Page number for pagination

Default 1
Example: page=1
per_pageinteger[ 1 .. 100 ]

Number of items per page (max 100)

Default 20
Example: per_page=20
curl -i -X GET \
  'https://api.webwork-tracker.com/api/v2/time-requests?workspace_id=1' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Time requests retrieved successfully

Bodyapplication/json
successboolean
Example: true
dataArray of objects(TimeRequest)
metaobject(Meta)
Response
application/json
{ "success": true, "data": [ { … } ], "meta": { "api_version": "2.0.0", "timestamp": "2019-08-24T14:15:22Z" } }

Create Time Request

Request

Create a new time request for a team member. The request will be in pending status and can be approved or rejected by authorized users.

Security
oauth2 or apiKey
Bodyapplication/jsonrequired
workspace_idintegerrequired

ID of the workspace (Team.id from owner_user_rel table)

Example: 1
user_idintegerrequired

ID of the user to request time for

Example: 100
contract_idintegerrequired

ID of the contract (project-member assignment)

Example: 500
startstring(date-time)required

Start date and time of the time request

Example: "2024-01-15T09:00:00Z"
endstring(date-time)required

End date and time of the time request

Example: "2024-01-15T17:00:00Z"
notesstring

Optional notes or memo for the time request

Example: "Working on project documentation"
task_idinteger or null

Optional task ID to associate with the time request

Example: 200
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": 100,
    "contract_id": 500,
    "start": "2024-01-15T09:00:00Z",
    "end": "2024-01-15T17:00:00Z",
    "notes": "Working on project documentation",
    "task_id": 200
  }'

Responses

Time request created successfully

Bodyapplication/json
successboolean
Example: true
dataobject(TimeRequest)
messagestring
Example: "Time request created successfully"
metaobject(Meta)
Response
application/json
{ "success": true, "data": { "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "user_id": 100, "contract_id": 500, "project_id": 200, "task_id": 300, "start": "2024-01-15T09:00:00Z", "end": "2024-01-15T17:00:00Z", "status": "pending", "notes": "Working on project documentation", "comment": "Time entry conflicts with project schedule", "updated_by": 101, "created_at": "2024-01-15T08:00:00Z", "updated_at": "2024-01-15T10:30:00Z" }, "message": "Time request created successfully", "meta": { "api_version": "2.0.0", "timestamp": "2019-08-24T14:15:22Z" } }

Get Time Request

Request

Retrieve a specific time request by ID.

Security
oauth2 or apiKey
Path
idstring(uuid)required

UUID of the time request

Example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
Query
workspace_idintegerrequired

ID of the workspace

Example: workspace_id=1
curl -i -X GET \
  'https://api.webwork-tracker.com/api/v2/time-requests/a1b2c3d4-e5f6-7890-abcd-ef1234567890?workspace_id=1' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Time request retrieved successfully

Bodyapplication/json
successboolean
Example: true
dataobject(TimeRequest)
metaobject(Meta)
Response
application/json
{ "success": true, "data": { "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "user_id": 100, "contract_id": 500, "project_id": 200, "task_id": 300, "start": "2024-01-15T09:00:00Z", "end": "2024-01-15T17:00:00Z", "status": "pending", "notes": "Working on project documentation", "comment": "Time entry conflicts with project schedule", "updated_by": 101, "created_at": "2024-01-15T08:00:00Z", "updated_at": "2024-01-15T10:30:00Z" }, "meta": { "api_version": "2.0.0", "timestamp": "2019-08-24T14:15:22Z" } }

Approve Time Request

Request

Approve a pending time request. Once approved, the time will be tracked and added to the user's timesheet.

Security
oauth2 or apiKey
Path
idstring(uuid)required

UUID of the time request

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

ID of the workspace (Team.id from owner_user_rel table)

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

Responses

Time request approved successfully

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

Reject Time Request

Request

Reject a pending time request. A comment explaining the rejection reason is required.

Security
oauth2 or apiKey
Path
idstring(uuid)required

UUID of the time request

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

ID of the workspace (Team.id from owner_user_rel table)

Example: 1
commentstringrequired

Reason for rejecting the time request

Example: "Time entry conflicts with project schedule"
curl -i -X POST \
  https://api.webwork-tracker.com/api/v2/time-requests/a1b2c3d4-e5f6-7890-abcd-ef1234567890/reject \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "workspace_id": 1,
    "comment": "Time entry conflicts with project schedule"
  }'

Responses

Time request rejected successfully

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

Leaves

Manage leave requests - view, approve, reject leave requests, view leave balances and policies.

Operations

Expenses

Manage expenses - create, update, delete expenses and view expense categories.

Operations

Webhooks

Manage webhooks - register callback URLs to receive real-time event notifications from the platform.

Operations

Reports

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

Operations