Clockify Time Entries & Projects
Start, stop and log hours in Clockify without opening the app: see what is running across the workspace, pull a person's time entries for a date range, and file new entries against the right client, project, task and tag.
Connect this API to an AI agent Browse all specs
What you can do with Clockify Time Entries & Projects via MCP
Every endpoint below becomes a governed tool your AI agent (Claude, ChatGPT, or a customer-facing VX agent) can call — with scoped permissions, sandbox testing, and audit logs.
| Method | Path | Operation | Description |
|---|---|---|---|
| GET | /v1/user |
getCurrentUser | Get the user the API key belongs to (id, active workspace) |
| GET | /v1/workspaces |
listWorkspaces | List the workspaces you belong to |
| GET | /v1/workspaces/{workspaceId}/clients |
listClients | List or search clients in a workspace |
| GET | /v1/workspaces/{workspaceId}/projects |
listProjects | List or search projects in a workspace |
| GET | /v1/workspaces/{workspaceId}/projects/{projectId}/tasks |
listProjectTasks | List tasks on a project |
| GET | /v1/workspaces/{workspaceId}/tags |
listTags | List tags in a workspace |
| GET | /v1/workspaces/{workspaceId}/user/{userId}/time-entries |
listUserTimeEntries | List a user's time entries, optionally for a date range or project |
| PATCH | /v1/workspaces/{workspaceId}/user/{userId}/time-entries |
stopRunningTimer | Stop a user's running timer |
| GET | /v1/workspaces/{workspaceId}/time-entries/{id} |
getTimeEntry | Get one time entry |
| PUT | /v1/workspaces/{workspaceId}/time-entries/{id} |
updateTimeEntry | Update a time entry (times, description, project, tags) |
| GET | /v1/workspaces/{workspaceId}/time-entries/status/in-progress |
listRunningTimers | List timers running right now across the workspace |
| POST | /v1/workspaces/{workspaceId}/time-entries |
createTimeEntry | Start a timer or log a finished time entry |
Authentication
ApiKeyAuth
API key — sent as the X-Api-Key header
Clockify personal API key, sent in the X-Api-Key header.
How to get a credential
- Sign in to Clockify and open Profile settings (avatar, top right).
- Scroll to API (Preferences > Advanced in newer layouts) and click Generate (or Manage API keys > Generate new).
- Copy the key. It acts as you, with your role in every workspace you belong to.
Permissions used
| Access | Operations |
|---|---|
| Any member | getCurrentUser, listWorkspaces, listClients, listProjects, listProjectTasks, listTags, listUserTimeEntries (own entries), getTimeEntry, createTimeEntry, updateTimeEntry, stopRunningTimer (own timer) |
| Workspace admin or owner | listRunningTimers, listUserTimeEntries / stopRunningTimer for other users |
Common errors
- 401 Unauthorized: the key is missing or was regenerated; generate a new one in Profile settings.
- 403 Forbidden: your role cannot see other people's entries or the workspace locked entries before a date.
- 400 Bad Request: bad ISO date (
2026-10-21T09:00:00Z), unknown project/task id, or a required field such as a project is enforced by workspace settings. - 429 Too Many Requests: limit is 50 requests per second per workspace; wait and retry.
Data stored in the EU/UK/AU/US regions uses a regional host; the key itself works the same. Store the key as a VX Agents credential for this spec; never paste it into chat.
Usage guide
Setup
- Credential: a Clockify personal API key (Profile settings > API) in the
X-Api-Keyheader. It acts as you with your workspace role. - Worth pinning:
workspaceId(fromlistWorkspacesoractiveWorkspaceingetCurrentUser) and, for a single-person assistant,userId(theidfromgetCurrentUser). - Workspaces on regional data residency use a regional host (for example
https://euc1.clockify.me/api); the default host serves the global region.
Log and review time
getCurrentUserto get youridand active workspace;listWorkspacesif there are several.listClients,listProjects(filter withname,clients,archived=false),listProjectTasksandlistTagsto resolve names to ids.- To start a timer,
createTimeEntrywithstartand noend; to log past work, send bothstartandend, plusprojectId,taskId,tagIds,descriptionandbillableas needed. stopRunningTimerwithuserIdand anendtime stops whatever is running.listUserTimeEntrieswithstart/end(and optionallyproject,description) for a timesheet;in-progress=truereturns only the running entry.listRunningTimersshows everyone's running timers (admins only).getTimeEntry/updateTimeEntryto fix an entry. The update replaces the entry, so sendstartand every field you want to keep.
Confirm with the user before createTimeEntry, updateTimeEntry or stopRunningTimer: hours feed invoices and payroll.
Good to know
- All times are UTC ISO 8601 such as
2026-10-21T09:00:00Z; convert from the user's time zone first. - Ids are 24-character hex strings; names are not accepted where an id is expected.
- Lists page with
page(from 1) andpage-size(default 50). - Workspace settings can force a project, task or description, and can lock entries older than a date; those requests fail with 400 or 403.
- Rate limit: 50 requests per second per workspace.
Source: Clockify API reference (https://docs.clockify.me/), checked 2026-10-21.
How to use this spec
- Create a free VX Agents account (sandbox tools included).
- Open the marketplace and connect “Clockify Time Entries & Projects” to an agent.
- Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.