Clockify Timesheet Approvals & Expenses
When the week closes in Clockify, submit timesheets and expenses for approval, see which approval requests are still pending, approve or send them back with a note, and review logged expenses by person and category, including the expense categories and unit prices your team bills with.
Connect this API to an AI agent Browse all specs
What you can do with Clockify Timesheet Approvals & Expenses 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/{workspaceId}/approval-requests |
listApprovalRequests | List timesheet and expense approval requests by status |
| POST | /v1/workspaces/{workspaceId}/approval-requests/resubmit-entries-for-approval |
resubmitEntriesForApproval | Add new or rejected entries to an existing approval request |
| PATCH | /v1/workspaces/{workspaceId}/approval-requests/{approvalRequestId} |
updateApprovalRequest | Approve, reject or withdraw an approval request with a note |
| POST | /v1/workspaces/{workspaceId}/approval-requests/{approvalRequestId} |
submitApprovalRequest | Submit your timesheet or expenses for a period for approval |
| GET | /v1/workspaces/{workspaceId}/expenses |
listExpenses | List expenses in a workspace, optionally for one user |
| GET | /v1/workspaces/{workspaceId}/expenses/{expenseId} |
getExpense | Get one expense with amount, category, project and receipt info |
| GET | /v1/workspaces/{workspaceId}/expenses/categories |
listExpenseCategories | List expense categories (with unit and unit price) |
| POST | /v1/workspaces/{workspaceId}/expenses/categories |
createExpenseCategory | Add an expense category, optionally priced per unit |
| PUT | /v1/workspaces/{workspaceId}/expenses/categories/{categoryId} |
updateExpenseCategory | Rename an expense category or change its unit price |
| PATCH | /v1/workspaces/{workspaceId}/expenses/categories/{categoryId}/status |
archiveExpenseCategory | Archive or restore an expense category |
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.
- Approvals and expenses must be turned on for the workspace (Workspace settings > General: Timesheet approval, Expenses; approvals need a paid plan).
Permissions used
| Access | Operations |
|---|---|
| Any member | getCurrentUser, listApprovalRequests (own), submitApprovalRequest, resubmitEntriesForApproval, updateApprovalRequest (withdraw own submission), listExpenses (own), getExpense (own), listExpenseCategories |
| Workspace admin, or manager of the user | listApprovalRequests / listExpenses for the team, updateApprovalRequest (approve, reject, withdraw approval) |
| Workspace admin | createExpenseCategory, updateExpenseCategory, archiveExpenseCategory |
Common errors
- 401 Unauthorized: the key is missing or was regenerated; generate a new one in Profile settings.
- 403 Forbidden: your role cannot approve for that user or edit categories, or approvals/expenses are off for the workspace.
- 400 Bad Request:
perioddoes not match the workspace approval period,periodStartis notyyyy-MM-ddThh:mm:ssZat the start of a period, or the period was already submitted. - 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 API key (header
X-Api-Key). - Worth pinning:
workspaceId. CallgetCurrentUseronce: it returns your useridandactiveWorkspace. - Know your workspace approval period (weekly, semi-monthly or monthly):
periodin submissions has to match it.
Close the week: submit, review, approve
- Employee side:
submitApprovalRequestwith the path valueTIMESHEETorEXPENSE(the path parameter is namedapprovalRequestIdbecause it shares a URL pattern withupdateApprovalRequest) and a body like{"period": "WEEKLY", "periodStart": "2026-10-19T00:00:00Z"}(the first day of the period). Confirm the period with the user first: it locks those entries for review. - If entries were added after submitting, or a request came back rejected, fix them and call
resubmitEntriesForApprovalwith the same period. - Manager side:
listApprovalRequestswithstatus=PENDING(andtypesTIMESHEET,EXPENSEorTIMESHEET_AND_EXPENSE) shows what is waiting, sorted withsort-columnSTARTorUPDATED_AT. - Decide with
updateApprovalRequest:{"state": "APPROVED"}, or{"state": "REJECTED", "note": "Missing Friday hours"}.WITHDRAWN_APPROVALreopens an approved request;WITHDRAWN_SUBMISSIONlets an employee pull back their own. Always confirm the decision and note with the user before calling it.
Review expenses
listExpenseCategoriesgives category ids, names,unitandpriceInCents(for per-unit categories such as mileage).listExpenses(filter withuser-id, page withpage/page-size, default 50) andgetExpenseshow amount, date, category, project, billable flag and the receipt file.- Admins can add categories with
createExpenseCategory(name, optionalhasUnitPrice+unit+priceInCents), edit them withupdateExpenseCategoryor retire them witharchiveExpenseCategory({"archived": true}; old expenses keep their category).
Good to know
- Timestamps are ISO 8601 UTC (
2026-10-19T00:00:00Z); amounts are in the workspace currency, unit prices in cents. - The approval
statusfilter knowsPENDING,APPROVEDandWITHDRAWN_APPROVAL; rejected requests drop out of it. - New expenses with receipts are added in the Clockify app (the API needs a multipart file upload, not included here).
Source: Clockify API reference (https://docs.clockify.me/), checked 2026-10-25.
How to use this spec
- Create a free VX Agents account (sandbox tools included).
- Open the marketplace and connect “Clockify Timesheet Approvals & Expenses” to an agent.
- Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.