Modern REST API for WebWork Tracker with OAuth2 authentication. This API provides access to workspaces, members, projects, and time tracking features.
WebWork Tracker REST API V2 (2.0.0)
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.
Request
Retrieve tracked hours report data for a workspace. Supports filtering by users, projects, teams, and titles. Data is always grouped by day. Always returns: Day-by-day breakdown grouped by date (date as key), with users array inside each date. Tracked time is returned in minutes (total_minutes field), aggregated across all tracking methods and grouped by user_id, project_id, and contract_id. If user has access to rates (rate_status = 1), also returns total_amount as an object with currency codes as keys. When user_id is provided: Results are filtered to that specific user only. Date range is limited to maximum 31 days (1 month) when user_id is provided. Security: Only workspace owners and executive managers can access this endpoint.
ID of the workspace (team_id from owner_user_rel table)
Filter by specific user ID. When provided, results are filtered to that user only. Date range is limited to maximum 31 days.
Start date for the report (Y-m-d format). Defaults to start of current week if not provided. Maximum 31 days from end_date when user_id is provided.
End date for the report (Y-m-d format). Defaults to end of current week if not provided. Maximum 31 days from start_date when user_id is provided.
Filter by user IDs (comma-separated or array)
Filter by project IDs (comma-separated or array)
- Production Serverhttps://api.webwork-tracker.com/api/v2/reports/tracked-hours
- cURL
- JS
- Python
- PHP
- Go
- Java 8
- C#
- C++
curl -i -X GET \
'https://api.webwork-tracker.com/api/v2/reports/tracked-hours?workspace_id=1' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'{ "success": true, "data": { "report_type": "tracked_hours", "start_date": "2024-01-01", "end_date": "2024-01-31", "total": { … }, "daily_breakdown": { … } }, "message": "Tracked hours report retrieved successfully", "meta": { "api_version": "2.0.0", "timestamp": "2024-01-15T10:30:00Z" } }
Request
Retrieve daily timeline report data for a specific date, paginated by user IDs. Returns time entries with details for each user including start/end times, project, task, activity description, tracking method, and activity metrics.\n\nKey Features:\n- Single date only: This endpoint accepts only one date (not a date range). Date must be within the last year and not more than a year in the future.\n- Pagination: Results are paginated by user_ids. Default is 30 users per page, maximum 100.\n- Rate visibility: total_amount and currency fields are only included if the workspace has rate_status = 1 (rate visibility enabled).\n- Activity metrics: Both user-level and time entry-level activity_level are calculated using the TimelineService::activity() method based on mouse, keyboard, and scroll actions.\n- Timezone handling: Times are returned in ISO 8601 format with timezone offset based on the workspace owner's system_timezone.\n- Security: Only workspace owners and executive managers can access this endpoint.
ID of the workspace (team_id from owner_user_rel table)
Date for the timeline report (Y-m-d format, e.g., 2024-01-15). Only single date is supported, not a date range. Date must be within the last year and not more than a year in the future.
Filter by specific user IDs. Can be provided as comma-separated values (e.g., "100,101,102") or as an array. If not provided, returns all users with timeline entries for the specified date.
Page number for pagination. Results are paginated by user_ids, so each page contains up to per_page users with all their time entries.
- Production Serverhttps://api.webwork-tracker.com/api/v2/reports/daily-timeline
- cURL
- JS
- Python
- PHP
- Go
- Java 8
- C#
- C++
curl -i -X GET \
'https://api.webwork-tracker.com/api/v2/reports/daily-timeline?workspace_id=1&date=2024-01-15' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'{ "success": true, "data": { "date": "2024-01-15", "total_users": 5, "per_page": 30, "current_page": 1, "total_pages": 1, "users": [ … ] }, "message": "Daily timeline report retrieved successfully", "meta": { "api_version": "2.0.0", "timestamp": "2024-01-15T10:30:00Z" } }
Request
Retrieve activity level report data for a date range, paginated by day. Returns activity level percentage per user per day, with overall statistics across all users and days.
Key Features:
- Date range: Accepts start_date and end_date parameters (YYYY-MM-DD format). Maximum date range is 1 month (31 days).
- Pagination: Results are paginated by day. Default is 30 days per page, maximum 100.
- Filtering: Can filter by contract_id and user_ids.
- Activity metrics: Activity level is calculated based on mouse, keyboard, and scroll actions.
- Overall statistics: Includes aggregated activity data across all users and days in the report range.
- Security: Only workspace owners and executive managers can access this endpoint.
Start date of the report range. Format: YYYY-MM-DD (e.g., 2024-01-01). Must be before or equal to end_date.
End date of the report range. Format: YYYY-MM-DD (e.g., 2024-01-31). Must be after or equal to start_date. Maximum date range is 1 month (31 days).
Optional filter by contract ID (project-member assignment). If provided, only returns activity data for the specified contract.
Optional filter by specific user IDs. Can be provided as comma-separated values (e.g., 100,101,102) or as an array. If not provided, returns all users.
Page number for pagination. Results are paginated by user, so each page contains up to per_page users with all their daily activity data.
- Production Serverhttps://api.webwork-tracker.com/api/v2/reports/activity-level
- cURL
- JS
- Python
- PHP
- Go
- Java 8
- C#
- C++
curl -i -X GET \
'https://api.webwork-tracker.com/api/v2/reports/activity-level?workspace_id=1&start_date=2024-01-01&end_date=2024-01-31' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'{ "success": true, "data": { "report_type": "activity_level", "start_date": "2024-01-01", "end_date": "2024-01-31", "total_users": 5, "per_page": 30, "current_page": 1, "total_pages": 1, "users": [ … ] }, "message": "Activity level report retrieved successfully", "meta": { "api_version": "2.0.0", "timestamp": "2024-01-15T10:30:00Z" } }
Request
Retrieve task-based time tracking report data for a date range, paginated by user. Returns time tracked per task for each user, with daily breakdown and overall task breakdown.
Key Features:
- Date range: Accepts start_date and end_date parameters (YYYY-MM-DD format). Maximum date range is 1 month (31 days).
- Pagination: Results are paginated by user. Default is 30 users per page, maximum 100.
- Filtering: Can filter by users, project_id, and task_id.
- No Task entries: Entries without a task (task_id is null) are included by default. Use include_no_task=false to exclude them.
- Tasks breakdown: Each user has an overall tasks_breakdown showing total time per task across the date range.
- Daily breakdown: Each user has a daily_breakdown showing time per task for each day.
- Security: Only workspace owners and executive managers can access this endpoint.
Start date of the report range. Format: YYYY-MM-DD (e.g., 2024-01-01). Must be before or equal to end_date.
End date of the report range. Format: YYYY-MM-DD (e.g., 2024-01-31). Must be after or equal to start_date. Maximum date range is 1 month (31 days).
Optional filter by specific user IDs. Can be provided as comma-separated values (e.g., 100,101,102) or as an array. If not provided, returns all users.
Optional filter by specific project IDs. Can be provided as comma-separated values or as an array. If not provided, returns data for all projects.
Optional filter by specific task IDs. Can be provided as comma-separated values or as an array. If not provided, returns data for all tasks.
Whether to include time entries without a task (task_id is null). Default is true. Set to false to exclude entries without a task.
Page number for pagination. Results are paginated by user, so each page contains up to per_page users with all their task data.
- Production Serverhttps://api.webwork-tracker.com/api/v2/reports/task-report
- cURL
- JS
- Python
- PHP
- Go
- Java 8
- C#
- C++
curl -i -X GET \
'https://api.webwork-tracker.com/api/v2/reports/task-report?workspace_id=1&start_date=2024-01-01&end_date=2024-01-31' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'{ "success": true, "data": { "report_type": "task_report", "start_date": "2024-01-01", "end_date": "2024-01-31", "total_users": 2, "per_page": 30, "current_page": 1, "total_pages": 1, "users": [ … ] }, "message": "Task report retrieved successfully", "meta": { "api_version": "2.0.0", "timestamp": "2024-01-15T10:30:00Z" } }
Request
Retrieve daily attendance report data for a specific date, paginated by user. Returns attendance information including statuses, times, breaks, and productivity metrics for each user.
Key Features:
- Single date only: This endpoint accepts only one date (not a date range). Date must be in YYYY-MM-DD format.
- Pagination: Results are paginated by user. Default is 30 users per page, maximum 100.
- Statuses array: Each user can have multiple statuses (e.g., ["Late", "Left early"]). Possible statuses: "Present", "Late", "Left early", "Tracked less", "Absent", "On leave", "Holiday".
- Time values in minutes: All time-related fields are returned as integers representing total minutes (e.g., 303 instead of "5h 3m").
- Filtering: Can filter by users and status. Status filter accepts string values: "late", "left_early", "tracked_less", "absent", "on_leave".
- Break intervals: Returns break time intervals as an array of strings (e.g., ["14:30 - 15:25", "16:00 - 16:15"]).
- Security: Only workspace owners and executive managers can access this endpoint.
ID of the workspace (team_id from owner_user_rel table)
Date for the attendance report (Y-m-d format, e.g., 2024-12-22). Only single date is supported, not a date range.
Optional filter by specific user IDs. Can be provided as comma-separated values (e.g., "100,101,102") or as an array. If not provided, returns all users.
Optional filter by attendance status. Can be provided as comma-separated values or as an array. Valid string values: "late" (Late coming), "left_early" (Early leaving), "tracked_less" (Tracked less than required), "absent" (Absent), "on_leave" (On leave). You can filter by multiple statuses (e.g., status=late,left_early).
Page number for pagination. Results are paginated by user, so each page contains up to per_page users with their attendance data.
- Production Serverhttps://api.webwork-tracker.com/api/v2/reports/daily-attendance
- cURL
- JS
- Python
- PHP
- Go
- Java 8
- C#
- C++
curl -i -X GET \
'https://api.webwork-tracker.com/api/v2/reports/daily-attendance?workspace_id=1&date=2024-12-22' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'{ "success": true, "data": { "report_type": "daily_attendance", "date": "2024-12-22", "total_users": 5, "per_page": 30, "current_page": 1, "total_pages": 1, "users": [ … ] }, "message": "Daily attendance report retrieved successfully", "meta": { "api_version": "2.0.0", "timestamp": "2024-12-22T10:30:00Z" } }
Request
Retrieve activity description-based time tracking report data for a date range, paginated by user. Returns time tracked per activity description (memo) for each user, with daily breakdown and overall breakdown.
Key Features:
- Date range: Accepts start_date and end_date parameters (YYYY-MM-DD format). Maximum date range is 1 month (31 days).
- Pagination: Results are paginated by user. Default is 30 users per page, maximum 100.
- Filtering: Can filter by users, project_id, and task_id.
- No Description entries: Entries without an activity description (memo is null) are included by default. Use include_no_description=false to exclude them.
- Activities breakdown: Each user has an overall activities_breakdown showing total time per activity description across the date range.
- Daily breakdown: Each user has a daily_breakdown showing time per activity description for each day.
- Security: Only workspace owners and executive managers can access this endpoint.
Start date of the report range. Format: YYYY-MM-DD (e.g., 2024-01-01). Must be before or equal to end_date.
End date of the report range. Format: YYYY-MM-DD (e.g., 2024-01-31). Must be after or equal to start_date. Maximum date range is 1 month (31 days).
Optional filter by specific user IDs. Can be provided as comma-separated values (e.g., 100,101,102) or as an array. If not provided, returns all users.
Optional filter by specific project IDs. Can be provided as comma-separated values or as an array. If not provided, returns data for all projects.
Optional filter by specific task IDs. Can be provided as comma-separated values or as an array. If not provided, returns data for all tasks.
Whether to include time entries without an activity description (memo is null). Default is true. Set to false to exclude entries without a description.
Page number for pagination. Results are paginated by user, so each page contains up to per_page users with all their activity data.
- Production Serverhttps://api.webwork-tracker.com/api/v2/reports/activity-description
- cURL
- JS
- Python
- PHP
- Go
- Java 8
- C#
- C++
curl -i -X GET \
'https://api.webwork-tracker.com/api/v2/reports/activity-description?workspace_id=1&start_date=2024-01-01&end_date=2024-01-31' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'{ "success": true, "data": { "report_type": "activity_description", "start_date": "2024-01-01", "end_date": "2024-01-31", "total_users": 2, "per_page": 30, "current_page": 1, "total_pages": 1, "users": [ … ] }, "message": "Activity description report retrieved successfully", "meta": { "api_version": "2.0.0", "timestamp": "2024-01-15T10:30:00Z" } }