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

Get All Workspace Contracts

Request

Retrieve all contracts (project-member assignments) in your workspace. Contracts are automatically filtered based on your role and permissions: Role-based access: Owners and Executive Managers see all contracts; Project Managers see contracts for managed projects + their own contracts; Team Managers see contracts for managed teams + their own contracts; Regular Users see only their own contracts; Clients see only contracts for projects they have access to. Rate information is only visible if you have permission to view rates AND the project is billable. You can apply additional filters (project_id, user_id, status) to narrow down results.

Security
oauth2 or apiKey
Query
workspace_idintegerrequired

ID of the workspace

Example: workspace_id=1
project_idinteger

Filter contracts by project ID

Example: project_id=100
user_idinteger

Filter contracts by user ID

Example: user_id=100
statusstring

Filter contracts by status

Enum"active""paused"
Example: status=active
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/contracts?workspace_id=1' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Contracts retrieved successfully

Bodyapplication/json
successboolean
Example: true
messagestring
Example: "Contracts retrieved successfully"
dataArray of objects(Contract)
metaobject(Meta)
paginationobject
Response
application/json
{ "success": true, "message": "Contracts retrieved successfully", "data": [ { … } ], "meta": { "api_version": "2.0.0", "timestamp": "2019-08-24T14:15:22Z" }, "pagination": { "current_page": 1, "per_page": 20, "total": 50, "last_page": 3 } }

Create New Contract

Request

Create a new contract (assign a member to a project) in your workspace. This endpoint is only accessible to Owners and Executive Managers. Rate information will only be saved if you have permission to view rates.

Security
oauth2 or apiKey
Bodyapplication/jsonrequired
workspace_idintegerrequired

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

Example: 1
project_idintegerrequired

ID of the project

Example: 100
user_idintegerrequired

ID of the user (member)

Example: 100
weekly_hours_limitinteger

Weekly hours limit (default: 168)

Example: 40
screenshotsstring

Screenshot mode

Enum"full""blurred""no_preview""no_screenshot""background_blurred""video_full""video_blurred""video_full_silent""video_blurred_silent"
Example: "full"
ratenumber

Hourly rate (only saved if you have permission to view rates)

Example: 50
curl -i -X POST \
  https://api.webwork-tracker.com/api/v2/contracts \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "project_id": 100,
    "user_id": 100,
    "weekly_hours_limit": 40,
    "screenshots": "full",
    "rate": 50
  }'

Responses

Contract created successfully

Bodyapplication/json
successboolean
Example: true
messagestring
Example: "Contract created successfully"
dataobject(Contract)
metaobject(Meta)
Response
application/json
{ "success": true, "message": "Contract created successfully", "data": { "id": 100, "project_id": 100, "project_name": "Marketing Campaign Q1", "project_icon": "project-icon-1", "user_id": 100, "user_firstname": "John", "user_lastname": "Doe", "user_email": "john.doe@example.com", "user_role": "Regular User", "weekly_hours_limit": 40, "screenshots": "full", "screenshots_label": "Screenshot on", "rate": 50, "rate_type": 1, "status": "active", "currency": "USD", "created_at": "2024-01-15T09:00:00Z", "updated_at": "2024-01-15T09:00:00Z" }, "meta": { "api_version": "2.0.0", "timestamp": "2019-08-24T14:15:22Z" } }

Get Single Contract

Request

Retrieve detailed information about a specific contract in your workspace. Contracts are filtered based on your role and permissions. Rate information is only visible if you have permission to view rates AND the project is billable.

Security
oauth2 or apiKey
Path
contractIdintegerrequired

ID of the contract

Example: 100
Query
workspace_idintegerrequired

ID of the workspace

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

Responses

Contract retrieved successfully

Bodyapplication/json
successboolean
Example: true
messagestring
Example: "Contract retrieved successfully"
dataobject(Contract)
metaobject(Meta)
Response
application/json
{ "success": true, "message": "Contract retrieved successfully", "data": { "id": 100, "project_id": 100, "project_name": "Marketing Campaign Q1", "project_icon": "project-icon-1", "user_id": 100, "user_firstname": "John", "user_lastname": "Doe", "user_email": "john.doe@example.com", "user_role": "Regular User", "weekly_hours_limit": 40, "screenshots": "full", "screenshots_label": "Screenshot on", "rate": 50, "rate_type": 1, "status": "active", "currency": "USD", "created_at": "2024-01-15T09:00:00Z", "updated_at": "2024-01-15T09:00:00Z" }, "meta": { "api_version": "2.0.0", "timestamp": "2019-08-24T14:15:22Z" } }

Update Contract

Request

Update an existing contract in your workspace. This endpoint is only accessible to Owners and Executive Managers. Rate information will only be updated if you have permission to view rates.

Security
oauth2 or apiKey
Path
contractIdintegerrequired

ID of the contract to update

Example: 100
Bodyapplication/jsonrequired
workspace_idintegerrequired

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

Example: 1
weekly_hours_limitinteger

Weekly hours limit

Example: 40
screenshotsstring

Screenshot mode

Enum"full""blurred""no_preview""no_screenshot""background_blurred""video_full""video_blurred""video_full_silent""video_blurred_silent"
Example: "blurred"
ratenumber

Hourly rate (only updated if you have permission to view rates)

Example: 55
statusstring

Contract status

Enum"active""paused"
Example: "active"
curl -i -X PUT \
  https://api.webwork-tracker.com/api/v2/contracts/100 \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "weekly_hours_limit": 40,
    "screenshots": "blurred",
    "rate": 55,
    "status": "active"
  }'

Responses

Contract updated successfully

Bodyapplication/json
successboolean
Example: true
messagestring
Example: "Contract retrieved successfully"
dataobject(Contract)
metaobject(Meta)
Response
application/json
{ "success": true, "message": "Contract retrieved successfully", "data": { "id": 100, "project_id": 100, "project_name": "Marketing Campaign Q1", "project_icon": "project-icon-1", "user_id": 100, "user_firstname": "John", "user_lastname": "Doe", "user_email": "john.doe@example.com", "user_role": "Regular User", "weekly_hours_limit": 40, "screenshots": "full", "screenshots_label": "Screenshot on", "rate": 50, "rate_type": 1, "status": "active", "currency": "USD", "created_at": "2024-01-15T09:00:00Z", "updated_at": "2024-01-15T09:00:00Z" }, "meta": { "api_version": "2.0.0", "timestamp": "2019-08-24T14:15:22Z" } }

Delete Contract

Request

Delete (soft delete) a contract from your workspace. This endpoint is only accessible to Owners and Executive Managers.

Security
oauth2 or apiKey
Path
contractIdintegerrequired

ID of the contract to delete

Example: 100
Bodyapplication/jsonrequired
workspace_idintegerrequired

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

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

Responses

Contract deleted successfully

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

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

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