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

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 (team_id from owner_user_rel table)

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
Query
workspace_idintegerrequired

ID of the workspace (team_id from owner_user_rel table)

Example: workspace_id=1
Bodyapplication/jsonrequired
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 or null

Screenshot mode

Enum"full""blurred""no_preview""no_screenshot""background_blurred""video_full""video_blurred""video_full_silent""video_blurred_silent"null
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?workspace_id=1' \
  -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 (team_id from owner_user_rel table)

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
Query
workspace_idintegerrequired

ID of the workspace (team_id from owner_user_rel table)

Example: workspace_id=1
Bodyapplication/jsonrequired
weekly_hours_limitinteger

Weekly hours limit

Example: 40
screenshotsstring or null

Screenshot mode

Enum"full""blurred""no_preview""no_screenshot""background_blurred""video_full""video_blurred""video_full_silent""video_blurred_silent"null
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?workspace_id=1' \
  -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
Query
workspace_idintegerrequired

ID of the workspace (team_id from owner_user_rel table)

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

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" } }

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

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