API Data Provider - Online Help

Connecting to Clockify

Using API Key Authentication

To authenticate using an API Key, you need to obtain your API Key from your Clockify account settings.

You can then connect by setting the AuthScheme to APIKey and providing your API key:

  • AuthScheme: Set this to APIKey.
  • APIKey: Set this to your API key from Clockify.

To obtain your API Key:

  1. Log into your Clockify account at https://app.clockify.me/
  2. Click on your profile picture in the top-right corner
  3. Select "Profile settings"
  4. Scroll down to the "API" section
  5. Copy your API Key

Example Connection String

Profile=C:\profiles\Clockify.apip;AuthScheme=APIKey;ProfileSettings="APIKey=your_api_key";

Working with Workspaces

Many tables in Clockify require a WorkspaceId parameter to retrieve data. You can find your Workspace ID by querying the Workspaces table or by looking at the URL when logged into Clockify (e.g., https://app.clockify.me/tracker/{WORKSPACE_ID}).

You can either set the WorkspaceId as a connection property for a default workspace, or specify it in your SQL queries using the WHERE clause. See the Usage Examples section below for per-table query examples.

Available Tables

The Clockify API Profile provides access to the following tables:

  • Workspaces: Clockify workspaces available to the authenticated user.
  • WorkspaceUsers: Users within a Clockify workspace with filtering support.
  • User: Currently logged-in user profile information.
  • Clients: Client management within a workspace. Supports insert, update, and delete.
  • Projects: Projects within a Clockify workspace for tracking time and tasks. Supports insert, update, and delete.
  • Tasks: Task management within projects. Supports insert, update, and delete.
  • Tags: Tag management for time entries within a workspace. Supports insert, update, and delete.
  • Groups: User group management within a workspace. Supports insert, update, and delete.
  • TimeEntries: Time tracking entries for a specific user within a workspace. Supports insert, update, and delete.
  • UsersTimeEntries: Currently running time tracking entries in a workspace. Requires UserId filter.
  • CustomFields: Custom field definitions for a workspace. Supports insert, update, and delete.
  • Expenses: Expense tracking for workspace projects. Supports insert, update, and delete.
  • Invoices: Invoice management for workspace billing. Supports insert, update, and delete.
  • Holidays: Holiday definitions for a workspace. Supports insert, update, and delete.
  • Policies: Time off policy management for workspaces. Supports insert, update, and delete.
  • PolicyBalance: Time off balance tracking by policy. Requires WorkspaceId and PolicyId filters.
  • UserBalance: Time off balance tracking for users. Requires WorkspaceId and UserId filters.
  • TimeOff: Time off request management using PTO API. Supports insert and delete.
  • ApprovalRequests: Time entry approval workflow requests.

Usage Examples

Workspaces:

SELECT * FROM Workspaces

WorkspaceUsers:

SELECT * FROM WorkspaceUsers WHERE WorkspaceId = 'workspace-uuid'

User:

SELECT * FROM User

Clients:

SELECT * FROM Clients WHERE WorkspaceId = 'workspace-uuid'
INSERT INTO Clients (WorkspaceId, Name, Email, Address, Note, CurrencyId)
VALUES ('workspace-uuid', 'Acme Corp', '[email protected]', '123 Main St', 'Key account', 'currency-uuid')
UPDATE Clients SET Name = 'Acme Corp Updated', Email = '[email protected]', Archived = false, Address = '456 Oak Ave', Note = 'Updated notes' WHERE WorkspaceId = 'workspace-uuid' AND Id = 'client-uuid'
DELETE FROM Clients WHERE WorkspaceId = 'workspace-uuid' AND Id = 'client-uuid'

Projects:

SELECT * FROM Projects WHERE WorkspaceId = 'workspace-uuid'
INSERT INTO Projects (WorkspaceId, Name, ClientId, Billable, Color, Public)
VALUES ('workspace-uuid', 'Website Redesign', 'client-uuid', true, '#FF5722', false)
UPDATE Projects SET Name = 'Website Redesign v2', ClientId = 'client-uuid', Billable = true, Color = '#4CAF50', Archived = false, Public = true WHERE WorkspaceId = 'workspace-uuid' AND Id = 'project-uuid'
DELETE FROM Projects WHERE WorkspaceId = 'workspace-uuid' AND Id = 'project-uuid'

Tasks:

SELECT * FROM Tasks WHERE WorkspaceId = 'workspace-uuid' AND ProjectId = 'project-uuid'
INSERT INTO Tasks (WorkspaceId, ProjectId, Name, AssigneeIds, UserGroupIds, Estimate, Status, BudgetEstimate)
VALUES ('workspace-uuid', 'project-uuid', 'Design mockups', '["user-uuid"]', '["group-uuid"]', 'PT4H', 'ACTIVE', 500)
UPDATE Tasks SET Name = 'Design mockups final', AssigneeIds = '["user-uuid"]', UserGroupIds = '["group-uuid"]', Estimate = 'PT8H', Status = 'DONE', BudgetEstimate = 800 WHERE WorkspaceId = 'workspace-uuid' AND ProjectId = 'project-uuid' AND Id = 'task-uuid'
DELETE FROM Tasks WHERE WorkspaceId = 'workspace-uuid' AND ProjectId = 'project-uuid' AND Id = 'task-uuid'

Tags:

SELECT * FROM Tags WHERE WorkspaceId = 'workspace-uuid'
INSERT INTO Tags (WorkspaceId, Name)
VALUES ('workspace-uuid', 'billable')
UPDATE Tags SET Name = 'billable-work', Archived = false WHERE WorkspaceId = 'workspace-uuid' AND Id = 'tag-uuid'
DELETE FROM Tags WHERE WorkspaceId = 'workspace-uuid' AND Id = 'tag-uuid'

Groups:

SELECT * FROM Groups WHERE WorkspaceId = 'workspace-uuid'
INSERT INTO Groups (WorkspaceId, Name, UserIds)
VALUES ('workspace-uuid', 'Engineering', '["user-uuid-1","user-uuid-2"]')
UPDATE Groups SET Name = 'Engineering Team', UserIds = '["user-uuid-1","user-uuid-2","user-uuid-3"]' WHERE WorkspaceId = 'workspace-uuid' AND Id = 'group-uuid'
DELETE FROM Groups WHERE WorkspaceId = 'workspace-uuid' AND Id = 'group-uuid'

TimeEntries:

SELECT * FROM TimeEntries WHERE WorkspaceId = 'workspace-uuid'
INSERT INTO TimeEntries (WorkspaceId, TimeIntervalStart, TimeIntervalEnd, Description, ProjectId, TaskId, TagIds, Billable, Type)
VALUES ('workspace-uuid', '2026-01-15T09:00:00Z', '2026-01-15T11:00:00Z', 'Client meeting', 'project-uuid', 'task-uuid', '["tag-uuid"]', true, 'REGULAR')
UPDATE TimeEntries SET TimeIntervalStart = '2026-01-15T09:00:00Z', TimeIntervalEnd = '2026-01-15T12:00:00Z', Description = 'Client meeting extended', ProjectId = 'project-uuid', TaskId = 'task-uuid', TagIds = '["tag-uuid"]', Billable = true, CustomFieldValues = '[]', Type = 'REGULAR' WHERE WorkspaceId = 'workspace-uuid' AND Id = 'entry-uuid'
DELETE FROM TimeEntries WHERE WorkspaceId = 'workspace-uuid' AND Id = 'entry-uuid'

UsersTimeEntries:

SELECT * FROM UsersTimeEntries WHERE WorkspaceId = 'workspace-uuid' AND UserId = 'user-uuid'

CustomFields:

SELECT * FROM CustomFields WHERE WorkspaceId = 'workspace-uuid'
INSERT INTO CustomFields (WorkspaceId, Name, Type, Required, AllowedValues, OnlyAdminCanEdit)
VALUES ('workspace-uuid', 'Priority', 'DROPDOWN_SINGLE', true, '["Low","Medium","High"]', false)
UPDATE CustomFields SET Name = 'Priority Level', Required = true, AllowedValues = '["Low","Medium","High","Critical"]', OnlyAdminCanEdit = true WHERE WorkspaceId = 'workspace-uuid' AND Id = 'field-uuid'
DELETE FROM CustomFields WHERE WorkspaceId = 'workspace-uuid' AND Id = 'field-uuid'

Expenses:

SELECT * FROM Expenses WHERE WorkspaceId = 'workspace-uuid'
INSERT INTO Expenses (WorkspaceId, UserId, Date, CategoryId, Total, ProjectId, TaskId, Notes, Quantity, Billable)
VALUES ('workspace-uuid', 'user-uuid', '2026-01-15T00:00:00Z', 'category-uuid', 125.00, 'project-uuid', 'task-uuid', 'Team lunch', 1, true)
UPDATE Expenses SET UserId = 'user-uuid', Date = '2026-01-15T00:00:00Z', CategoryId = 'category-uuid', Total = 150.00, ProjectId = 'project-uuid', TaskId = 'task-uuid', Notes = 'Team dinner', Quantity = 1, Billable = false WHERE WorkspaceId = 'workspace-uuid' AND Id = 'expense-uuid'
DELETE FROM Expenses WHERE WorkspaceId = 'workspace-uuid' AND Id = 'expense-uuid'

Invoices:

SELECT * FROM Invoices WHERE WorkspaceId = 'workspace-uuid'
INSERT INTO Invoices (WorkspaceId, Number, IssuedDate, DueDate, ClientId, Currency)
VALUES ('workspace-uuid', 'INV-2026-001', '2026-01-15T00:00:00Z', '2026-02-14T00:00:00Z', 'client-uuid', 'USD')
UPDATE Invoices SET Number = 'INV-2026-001-REV', IssuedDate = '2026-01-20T00:00:00Z', DueDate = '2026-02-20T00:00:00Z', ClientId = 'client-uuid', Currency = 'EUR' WHERE WorkspaceId = 'workspace-uuid' AND Id = 'invoice-uuid'
DELETE FROM Invoices WHERE WorkspaceId = 'workspace-uuid' AND Id = 'invoice-uuid'

Holidays:

SELECT * FROM Holidays WHERE WorkspaceId = 'workspace-uuid'
INSERT INTO Holidays (WorkspaceId, Name, StartDate, EndDate, OccursAnnually, UserIds, UserGroupIds, EveryoneIncludingNew, AutomaticTimeEntryCreation, ProjectId, TaskId)
VALUES ('workspace-uuid', 'New Years Day', '2026-01-01', '2026-01-01', true, '["user-uuid"]', '["group-uuid"]', true, false, 'project-uuid', 'task-uuid')
UPDATE Holidays SET Name = 'New Years Day Observed', StartDate = '2026-01-01', EndDate = '2026-01-02', OccursAnnually = true, UserIds = '["user-uuid"]', UserGroupIds = '["group-uuid"]', EveryoneIncludingNew = true, ProjectId = 'project-uuid', TaskId = 'task-uuid' WHERE WorkspaceId = 'workspace-uuid' AND Id = 'holiday-uuid'
DELETE FROM Holidays WHERE WorkspaceId = 'workspace-uuid' AND Id = 'holiday-uuid'

Policies:

SELECT * FROM Policies WHERE WorkspaceId = 'workspace-uuid'
INSERT INTO Policies (WorkspaceId, Name, TimeUnit, ApproveRequiresApproval, AllowNegativeBalance, AllowHalfDay, UserIds, UserGroupIds, EveryoneIncludingNew, ApproveTeamManagers, ApproveSpecificMembers, ProjectId)
VALUES ('workspace-uuid', 'Annual Leave', 'DAYS', true, false, true, '["user-uuid"]', '["group-uuid"]', true, true, false, 'project-uuid')
UPDATE Policies SET Name = 'Annual Leave Policy', AllowNegativeBalance = false, AllowHalfDay = true, UserIds = '["user-uuid"]', UserGroupIds = '["group-uuid"]', EveryoneIncludingNew = true, ApproveRequiresApproval = true, ApproveTeamManagers = true, ApproveSpecificMembers = false, ProjectId = 'project-uuid' WHERE WorkspaceId = 'workspace-uuid' AND Id = 'policy-uuid'
DELETE FROM Policies WHERE WorkspaceId = 'workspace-uuid' AND Id = 'policy-uuid'

PolicyBalance:

SELECT * FROM PolicyBalance WHERE WorkspaceId = 'workspace-uuid' AND PolicyId = 'policy-uuid'

UserBalance:

SELECT * FROM UserBalance WHERE WorkspaceId = 'workspace-uuid' AND UserId = 'user-uuid'

TimeOff:

SELECT * FROM TimeOff WHERE WorkspaceId = 'workspace-uuid'
INSERT INTO TimeOff (WorkspaceId, PolicyId, UserId, Days, PeriodStart, PeriodEnd, HalfDay, HalfDayPeriod, Note)
VALUES ('workspace-uuid', 'policy-uuid', 'user-uuid', 3, '2026-02-10', '2026-02-12', false, 'MORNING', 'Family vacation')
DELETE FROM TimeOff WHERE WorkspaceId = 'workspace-uuid' AND PolicyId = 'policy-uuid' AND Id = 'timeoff-uuid'

ApprovalRequests:

SELECT * FROM ApprovalRequests WHERE WorkspaceId = 'workspace-uuid'

Connection Properties

The connection string properties are the various options that can be used to establish a connection. This section provides a complete list of the options you can configure in the connection string for this provider.


Property Description
APIKey The API Key from Clockify. You can obtain your API Key from your Clockify account settings under the Profile Settings page.
AuthScheme The scheme used for authentication. Accepted entries are APIKey or None.
Allowed values are: BASIC, NONE, NTLM, OAUTH, APIKEY, OAUTH_CLIENT, OAUTH_PASSWORD
WorkspaceId The Workspace ID to scope queries to a specific workspace. Many tables in Clockify require a WorkspaceId parameter to retrieve data. You can find your Workspace ID by querying the Workspaces table or by inspecting the URL when logged into Clockify.

Copyright (c) 2026 CData Software, Inc. - All rights reserved.
Build 26.0.9770.0