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

Get All Project Tasks

Request

Retrieve all tasks in a specific project. You can apply filters by status or priority to narrow down results.

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

Workspace ID

Example: workspace_id=1
project_idinteger

Project ID. Required unless contract_id is provided.

Example: project_id=100
contract_idinteger

Contract ID. Can be used as an alternative to project_id — the project will be resolved from the contract.

Example: contract_id=50
statusinteger

Filter tasks by status code. Default statuses: 0 = Open, 10 = In Progress, 20 = Done, 30 = Closed. Custom status codes (e.g. 1, 2, 11, 21) are also supported if configured for the workspace/project.

priorityinteger

Filter tasks by priority: 10 = Urgent, 20 = High, 30 = Normal, 40 = Low

Enum10203040
pageinteger

Page number for pagination

Default 1
per_pageinteger

Number of results per page

Default 20
order_bystring

Sort order by task ID

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

Responses

Tasks retrieved successfully

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

Create New Task

Request

Create a new task in a project. Accessible to Owners and Executive Managers.

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

Workspace ID

project_idintegerrequired

Project ID

titlestring[ 1 .. 1024 ] charactersrequired

Task title

Example: "Implement user authentication"
descriptionstring or null<= 65535 characters

Task description

Example: "Add OAuth2 authentication support"
statusinteger

Task status: 0 = Open, 10 = In Progress, 20 = Done, 30 = Closed. Only base status codes are accepted for create.

Default 0
Enum0102030
Example: 0
priorityinteger or null

Task priority: 10 = Urgent, 20 = High, 30 = Normal, 40 = Low. Defaults to null if not provided.

Enum10203040
Example: 30
start_datestring or null(date)

Task start date

Example: "2024-01-15"
end_datestring or null(date)

Task end date (must be after or equal to start_date)

Example: "2024-01-30"
assigneesArray of integers

Array of user IDs to assign the task to

Example: [100,101]
curl -i -X POST \
  https://api.webwork-tracker.com/api/v2/tasks \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "workspace_id": 0,
    "project_id": 0,
    "title": "Implement user authentication",
    "description": "Add OAuth2 authentication support",
    "status": 0,
    "priority": 30,
    "start_date": "2024-01-15",
    "end_date": "2024-01-30",
    "assignees": [
      100,
      101
    ]
  }'

Responses

Task created successfully

Bodyapplication/json
successboolean
Example: true
dataobject(Task)
messagestring
Example: "Task created successfully"
metaobject(Meta)
Response
application/json
{ "success": true, "data": { "id": 1, "title": "Implement user authentication", "description": "Add OAuth2 authentication support", "project_id": 100, "owner_id": 10, "creator_id": 42, "status": 10, "status_name": "In Progress", "status_color": "#FFC107", "priority": 30, "priority_name": "Normal", "start_date": "2024-01-15", "end_date": "2024-01-30", "completed_at": "2024-01-25T14:30:00+00:00", "assignees": [], "created_at": "2024-01-15T09:00:00+00:00", "updated_at": "2024-01-20T14:30:00+00:00", "deleted_at": null }, "message": "Task created successfully", "meta": { "api_version": "2.0.0", "timestamp": "2019-08-24T14:15:22Z" } }

Get Single Task

Request

Retrieve detailed information about a specific task.

Security
oauth2(Required scopes:
read
)
or apiKey
Path
taskIdintegerrequired

ID of the task

Query
workspace_idintegerrequired

Workspace ID

project_idintegerrequired

Project ID

curl -i -X GET \
  'https://api.webwork-tracker.com/api/v2/tasks/{taskId}?workspace_id=0&project_id=0' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Task retrieved successfully

Bodyapplication/json
successboolean
Example: true
dataobject(Task)
messagestring
Example: "Task retrieved successfully"
metaobject(Meta)
Response
application/json
{ "success": true, "data": { "id": 1, "title": "Implement user authentication", "description": "Add OAuth2 authentication support", "project_id": 100, "owner_id": 10, "creator_id": 42, "status": 10, "status_name": "In Progress", "status_color": "#FFC107", "priority": 30, "priority_name": "Normal", "start_date": "2024-01-15", "end_date": "2024-01-30", "completed_at": "2024-01-25T14:30:00+00:00", "assignees": [], "created_at": "2024-01-15T09:00:00+00:00", "updated_at": "2024-01-20T14:30:00+00:00", "deleted_at": null }, "message": "Task retrieved successfully", "meta": { "api_version": "2.0.0", "timestamp": "2019-08-24T14:15:22Z" } }

Update Task

Request

Update an existing task. Accessible to Owners and Executive Managers.

Security
oauth2(Required scopes:
write
)
or apiKey
Path
taskIdintegerrequired

ID of the task

Bodyapplication/jsonrequired
workspace_idintegerrequired

Workspace ID

project_idintegerrequired

Project ID

titlestring[ 1 .. 1024 ] characters

Task title

Example: "Implement user authentication"
descriptionstring or null<= 65535 characters

Task description

Example: "Add OAuth2 authentication support"
statusinteger

Task status: 0 = Open, 10 = In Progress, 20 = Done, 30 = Closed. Only base status codes are accepted for update.

Enum0102030
Example: 10
priorityinteger

Task priority: 10 = Urgent, 20 = High, 30 = Normal, 40 = Low

Enum10203040
Example: 20
start_datestring or null(date)

Task start date

Example: "2024-01-15"
end_datestring or null(date)

Task end date (must be after or equal to start_date)

Example: "2024-01-30"
curl -i -X PUT \
  'https://api.webwork-tracker.com/api/v2/tasks/{taskId}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "workspace_id": 0,
    "project_id": 0,
    "title": "Implement user authentication",
    "description": "Add OAuth2 authentication support",
    "status": 10,
    "priority": 20,
    "start_date": "2024-01-15",
    "end_date": "2024-01-30"
  }'

Responses

Task updated successfully

Bodyapplication/json
successboolean
Example: true
dataobject(Task)
messagestring
Example: "Task updated successfully"
metaobject(Meta)
Response
application/json
{ "success": true, "data": { "id": 1, "title": "Implement user authentication", "description": "Add OAuth2 authentication support", "project_id": 100, "owner_id": 10, "creator_id": 42, "status": 10, "status_name": "In Progress", "status_color": "#FFC107", "priority": 30, "priority_name": "Normal", "start_date": "2024-01-15", "end_date": "2024-01-30", "completed_at": "2024-01-25T14:30:00+00:00", "assignees": [], "created_at": "2024-01-15T09:00:00+00:00", "updated_at": "2024-01-20T14:30:00+00:00", "deleted_at": null }, "message": "Task updated successfully", "meta": { "api_version": "2.0.0", "timestamp": "2019-08-24T14:15:22Z" } }

Delete Task

Request

Delete (soft delete) a task from a project. Accessible to Owners and Executive Managers.

Security
oauth2(Required scopes:
write
)
or apiKey
Path
taskIdintegerrequired

ID of the task

Bodyapplication/jsonrequired
workspace_idintegerrequired

Workspace ID

project_idintegerrequired

Project ID

curl -i -X DELETE \
  'https://api.webwork-tracker.com/api/v2/tasks/{taskId}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "workspace_id": 0,
    "project_id": 0
  }'

Responses

Task deleted successfully

Bodyapplication/json
successboolean
Example: true
dataobject
messagestring
Example: "Task deleted successfully"
metaobject(Meta)
Response
application/json
{ "success": true, "data": { "id": "abc123xyz", "status": "approved", "user_id": 45696, "user_name": "John Smith", "user_email": "john.smith@example.com", "date_from": "2024-01-01", "date_to": "2024-01-15" }, "message": "Timesheet approved by Jane Doe at 2024-01-15 10:30:00 | Member: John Smith | Period: 2024-01-01 to 2024-01-15", "meta": { "api_version": "2.0.0", "timestamp": "2024-01-15T10:30:00Z" } }

Get Task Assignees

Request

Retrieve all users assigned to a specific task.

Security
oauth2(Required scopes:
read
)
or apiKey
Path
taskIdintegerrequired

ID of the task

Query
workspace_idintegerrequired

Workspace ID

project_idintegerrequired

Project ID

curl -i -X GET \
  'https://api.webwork-tracker.com/api/v2/tasks/{taskId}/assignees?workspace_id=0&project_id=0' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Task assignees retrieved successfully

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

Assign Task to User

Request

Assign a task to a specific user. The user must be a member of the project.

Security
oauth2(Required scopes:
write
)
or apiKey
Path
taskIdintegerrequired

ID of the task

userIdintegerrequired

ID of the user to assign the task to

Bodyapplication/jsonrequired
workspace_idintegerrequired

Workspace ID

project_idintegerrequired

Project ID

curl -i -X POST \
  'https://api.webwork-tracker.com/api/v2/tasks/{taskId}/assign/{userId}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "workspace_id": 0,
    "project_id": 0
  }'

Responses

Task assigned successfully

Bodyapplication/json
successboolean
Example: true
dataobject(TaskAssignment)

Task assignment response returned from POST assign endpoint

messagestring
Example: "Task assigned successfully"
metaobject(Meta)
Response
application/json
{ "success": true, "data": { "id": 1, "user_id": 42, "task_id": 100 }, "message": "Task assigned successfully", "meta": { "api_version": "2.0.0", "timestamp": "2019-08-24T14:15:22Z" } }

Unassign Task from User

Request

Remove a user assignment from a task.

Security
oauth2(Required scopes:
write
)
or apiKey
Path
taskIdintegerrequired

ID of the task

userIdintegerrequired

ID of the user to unassign from the task

Bodyapplication/jsonrequired
workspace_idintegerrequired

Workspace ID

project_idintegerrequired

Project ID

curl -i -X DELETE \
  'https://api.webwork-tracker.com/api/v2/tasks/{taskId}/unassign/{userId}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "workspace_id": 0,
    "project_id": 0
  }'

Responses

Task unassigned successfully

Bodyapplication/json
successboolean
Example: true
dataobject
messagestring
Example: "Task unassigned successfully"
metaobject(Meta)
Response
application/json
{ "success": true, "data": { "id": "abc123xyz", "status": "rejected", "user_id": 45696, "user_name": "John Smith", "user_email": "john.smith@example.com", "date_from": "2024-01-01", "date_to": "2024-01-15" }, "message": "Timesheet rejected by Jane Doe at 2024-01-15 10:30:00 | Member: John Smith | Period: 2024-01-01 to 2024-01-15 | Reason: Please correct the hours for Monday", "meta": { "api_version": "2.0.0", "timestamp": "2024-01-15T10:30:00Z" } }

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

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