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:
- Log into your Clockify account at https://app.clockify.me/
- Click on your profile picture in the top-right corner
- Select "Profile settings"
- Scroll down to the "API" section
- 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. |