Skip to content

Time Tracking

Clockify
API integration

Ship Time Tracking features without building the integration. Full Clockify API access via Proxy and 160+ MCP-ready tools for AI agents — extend models and mappings to fit your product.

Talk to us
Clockify

Use Cases

Why integrate with Clockify

Common scenarios for SaaS companies building Clockify integrations for their customers.

01

Sync project hierarchy from your PM tool into Clockify

Project management SaaS platforms can push clients, projects, and tasks into Clockify so users track time against the exact structure that lives in your product. Eliminates double data entry and keeps time entries mapped to real work items.

02

Automate contractor payroll from approved timesheets

HR and payroll platforms can pull approved time entries and user cost rates from Clockify to calculate payouts for hourly contractors. Removes manual timesheet reconciliation at the end of each pay cycle.

03

Bill support hours directly from your helpdesk

Ticketing and MSP platforms can create time entries in Clockify whenever an agent works a ticket, then roll those hours into Clockify invoices. Lets service providers measure agent profitability and bill clients accurately.

04

Push HR time-off and holidays into Clockify

HRIS and capacity planning tools can sync approved PTO, time-off policies, and regional holidays into Clockify so project managers see true team availability. Keeps scheduling grounded in actual working capacity.

05

Re-bill corporate expenses through Clockify invoices

Spend management platforms can push card transactions and receipts into Clockify as billable expenses tied to the right client and project. Those expenses then flow straight into Clockify invoices without manual re-entry.

What You Can Build

Ship these features with Truto + Clockify

Concrete product features your team can ship faster by leveraging Truto’s Clockify integration instead of building from scratch.

01

Two-way client, project, and task sync

Keep your product's workspace hierarchy mirrored in Clockify using the clients, projects, and tasks endpoints so time entries always map to the right work item.

02

Approved timesheet pull for payroll

List approval requests filtered by status and fetch the underlying time entries plus user hourly and cost rates to drive automated pay runs.

03

Embedded start/stop timer in your UI

Create and update time entries on behalf of users directly from your product so they never need to context-switch into Clockify to track work.

04

Live 'who's working on what' dashboard

Use the in-progress time entries endpoint plus webhooks to show real-time activity across a workspace without polling the full time entries list.

05

Billable expense push with receipt upload

Create expenses and expense categories in Clockify, attach receipt files, and let users roll them into client invoices generated through the invoices endpoints.

06

Capacity planning with PTO and holiday sync

Push time-off policies, user requests, and workspace holidays into Clockify, then read user totals and assignments to calculate accurate team bandwidth.

SuperAI

Clockify AI agent tools

Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.

create_a_clockify_file_image

Upload a photo image to Clockify. Returns the uploaded file's record including its id and upstream-defined attributes.

list_all_clockify_users

Get the currently logged-in Clockify user's info. Returns the user object with its id plus the user attributes defined by Clockify's upstream UserDtoV1 schema; the full field-level breakdown is in the Clockify API reference.

list_all_clockify_workspaces

List all Clockify workspaces the authenticated user belongs to. Returns workspace records, each identified by its id.

create_a_clockify_workspace

Create a new workspace in Clockify. Returns the created workspace record, including its id. Requires a JSON body matching the Clockify CreateWorkspaceRequestV1 schema.

get_single_clockify_workspace_by_id

Get info for a single Clockify workspace by id. Returns the workspace record, including its id. Required: id.

list_all_clockify_workspace_approval_requests

List approval requests in a Clockify workspace, filterable by status and request type. Returns approval request detail objects, each with an id and schema-specific fields defined by Clockify's ApprovalDetailsDtoV1. Required: workspace_id.

create_a_clockify_workspace_approval_request

Submit an approval request in a Clockify workspace. Returns the created approval request, including its id, with further fields defined by Clockify's ApprovalRequestDtoV1 schema. A JSON request body is required. Deprecated upstream. Required: workspace_id, periodStart.

update_a_clockify_workspace_approval_request_by_id

Update an approval request in a Clockify workspace by id. Returns the updated approval request, including its id, with further fields defined by Clockify's ApprovalRequestDtoV1 schema. A JSON request body is required. Required: id, workspace_id, state.

create_a_clockify_approval_requests_user

Submit an approval request for a user in Clockify. Returns the created approval request object including its id, type, and workspaceId. Requires workspace_id, user_id, and a JSON body following Clockify's CreateApprovalRequest schema. This upstream operation is deprecated. Required: workspace_id, user_id, periodStart.

list_all_clockify_workspace_clients

List clients on a Clockify workspace. Returns each client's id and name. Required: workspace_id.

create_a_clockify_workspace_client

Create a new client in a Clockify workspace. Returns the created client's id and name. Required: workspace_id.

get_single_clockify_workspace_client_by_id

Get a single Clockify client by id. Returns the client's id and name. Required: id, workspace_id.

update_a_clockify_workspace_client_by_id

Update a client in a Clockify workspace by id. Returns the updated client's id and name. Required: id, workspace_id.

delete_a_clockify_workspace_client_by_id

Delete a client from a Clockify workspace by id. Returns the deleted client's id and name. Required: id, workspace_id.

clockify_workspace_cost_rates_bulk_update

Update the workspace-level cost rate for a Clockify workspace. Returns the updated workspace record with its id and workspace-specific attributes (fields defined by Clockify's WorkspaceDtoV1). Requires workspace_id and a cost-rate payload body. Required: workspace_id, amount.

list_all_clockify_workspace_custom_fields

List the custom fields defined on a Clockify workspace. Returns: allowedValues, description, entityType, id, name, onlyAdminCanEdit, placeholder, projectDefaultValues, required, status, type, workspaceDefaultValue, workspaceId. Required: workspace_id.

create_a_clockify_workspace_custom_field

Create a custom field on a Clockify workspace. Returns the created custom field's id, name, type, and description. Required: workspace_id, name, type.

update_a_clockify_workspace_custom_field_by_id

Update a custom field on a Clockify workspace by id. Returns the updated custom field's id, name, type, and description. Required: id, workspace_id, name.

delete_a_clockify_workspace_custom_field_by_id

Delete a custom field from a Clockify workspace by id. Returns an empty 204 response on success. Required: id, workspace_id.

get_single_clockify_entities_created_by_id

List Clockify workspace records created within a start/end date range (experimental). Returns created entity records with content-type-specific fields, determined by the requested type values.g. TIME_ENTRY). Required: id, type.

get_single_clockify_entities_deleted_by_id

Get Clockify workspace records that were deleted within a date range (experimental). Returns pageable deleted-entity records, each with an id and entity-type-specific attributes. Deleted entities are reflected in the results about one minute after deletion, and entities created and deleted within the requested range are excluded. Required: id, type.

get_single_clockify_entities_updated_by_id

List Clockify workspace records that were updated within a date range (experimental). Returns updated-entity change records with fields specific to each requested entity type.g. TIME_ENTRY). Entities both created and updated within the range are excluded from the results. Required: id, type.

list_all_clockify_workspace_expenses

List all expenses in a Clockify workspace, optionally filtered by the user linked to the expense. Returns the workspace's expense records, each including its id; the remaining fields of Clockify's expenses-and-totals response (ExpensesAndTotalsDtoV1) are not enumerated in the discovered docs. Required: workspace_id.

create_a_clockify_workspace_expense

Create an expense in a Clockify workspace by sending a multipart/form-data body. Returns the created expense record, including its id; the remaining fields of Clockify's ExpenseDtoV1 response are not enumerated in the discovered docs. Required: workspace_id.

update_a_clockify_workspace_expense_by_id

Update a Clockify expense by id, sending a multipart/form-data body. Returns the updated expense record, including its id; the remaining fields of Clockify's ExpenseDtoV1 response are not enumerated in the discovered docs. Required: id, workspace_id.

delete_a_clockify_workspace_expense_by_id

Delete a Clockify expense by id from a workspace. Returns an empty 204 response on success. Required: id, workspace_id.

get_single_clockify_workspace_expense_by_id

Get a Clockify expense by id within a workspace. Returns the expense record with its id and an attributes object holding the expense's fields (the exact field set is defined by Clockify's expense schema). Required: id, workspace_id.

list_all_clockify_expenses_categories

List all expense categories in a Clockify workspace. Returns each category's id and name. Required: workspace_id.

create_a_clockify_expenses_category

Create a new expense category in a Clockify workspace. Returns the created category's id and name. Required: workspace_id, name.

update_a_clockify_expenses_category_by_id

Update an existing expense category in a Clockify workspace by id. Returns the updated category's id and name. Required: id, workspace_id, name.

delete_a_clockify_expenses_category_by_id

Delete an expense category from a Clockify workspace by id. Returns an empty 204 response on success. Required: id, workspace_id.

clockify_categorie_status_bulk_update

Archive an expense category in a Clockify workspace by updating its status. Returns the updated category with its id and name. Required: id, workspace_id.

list_all_clockify_expense_files

Download the receipt file attached to a Clockify expense. Returns the raw receipt file contents as binary data; the format depends on how the file was uploaded. Required: file_id, expense_id, workspace_id.

list_all_clockify_workspace_holidays

List holidays on a Clockify workspace. Returns an array of holiday records, each including its id. Required: workspace_id.

create_a_clockify_workspace_holiday

Create a holiday on a Clockify workspace. Returns the created holiday record including its id and name. Required: workspace_id, datePeriod, name.

update_a_clockify_workspace_holiday_by_id

Update a holiday on a Clockify workspace by id. Returns the updated holiday record including its id and name. Required: id, workspace_id, datePeriod, name, occursAnnually.

delete_a_clockify_workspace_holiday_by_id

Delete a holiday from a Clockify workspace by id. Returns the deleted holiday record including its id and name. Required: id, workspace_id.

list_all_clockify_holidays_in_periods

List Clockify holidays on a workspace that fall within a specific period, filtered by assigned user and start/end dates (expected format yyyy-MM-ddThh:mm:ssZ). Returns an array of holiday records; each includes its holiday id. Required: workspace_id, assigned_to, start, end.

clockify_workspace_hourly_rates_bulk_update

Update a Clockify workspace's hourly billable rate. Returns the updated workspace object (WorkspaceDtoV1); the source documents its shape by schema reference only, without field-level detail. Required: workspace_id, amount, currency.

list_all_clockify_workspace_invoices

List all invoices on a Clockify workspace. Returns a paginated list of invoices with fields including id, status, client, issue_date, due_on, amount, and balance. Requires workspace_id. Required: workspace_id.

create_a_clockify_workspace_invoice

Create a new invoice in a Clockify workspace. Returns the created invoice including id, status, client, issue_date, and amount. Requires workspace_id and a JSON body matching Clockify's CreateInvoiceRequest schema. Required: workspace_id, clientId, currency, dueDate, issuedDate, number.

update_a_clockify_workspace_invoice_by_id

Update an invoice in a Clockify workspace by id. Returns the updated invoice including id, status, client, issue_date, and amount. Requires workspace_id, id, and a JSON body matching Clockify's UpdateInvoiceRequestV1 schema. Required: id, workspace_id, currency, discountPercent, dueDate, issuedDate, number, tax2Percent, taxPercent.

delete_a_clockify_workspace_invoice_by_id

Delete an invoice from a Clockify workspace by id. Requires workspace_id and id. Returns an empty 200 response on success. Required: id, workspace_id.

clockify_workspace_invoices_duplicate

Duplicate an existing invoice in a Clockify workspace. Returns the new duplicate invoice including id, status, client, issue_date, and amount. Requires workspace_id and invoice_id. Required: invoice_id, workspace_id.

get_single_clockify_workspace_invoice_by_id

Get a single Clockify invoice by id within a workspace. Returns the invoice overview with its id, client, status, issue_date, due_on, amount, and balance. Required: id, workspace_id.

list_all_clockify_invoices_info

Filter and list Clockify invoices on a workspace by sending filter criteria in the request body. Returns matching invoice info records including their id. Required: workspace_id.

list_all_clockify_invoices_settings

Get the invoice settings for a Clockify workspace. Returns the invoice settings object (upstream schema InvoiceSettingsDtoV1) with schema-defined fields; the field-level breakdown is not enumerated in these docs. Required: workspace_id.

clockify_invoices_settings_bulk_update

Change the invoice settings for a Clockify workspace. Returns an empty 200 response on success. First GET the current settings, modify only the fields to change, and send the full payload back — PUT replaces the entire resource, so omitted fields are overwritten with defaults or cleared. Required: workspace_id, labels.

get_single_clockify_invoice_export_by_id

Export a Clockify invoice as a downloadable file within a workspace. Returns the exported invoice file as raw binary content (not a JSON object). Required: id, workspace_id, user_locale.

create_a_clockify_invoice_item

Add item to an invoice. Returns: amount, balance, billFrom, calculationType, clientAddress, clientId, clientName, companyId. Required: workspace_id, invoice_id, applyTaxes, description, itemType, quantity, unitPrice.

clockify_invoice_items_bulk_delete

Delete item from an invoice. Returns: amount, balance, billFrom, calculationType, clientAddress, clientId, clientName, companyId. Required: workspace_id, invoice_id, order.

create_a_clockify_items_import

Import time entries and expenses into a Clockify invoice. Returns the updated invoice overview object with its id and upstream-defined overview attributes. The JSON request body (upstream schema ImportTimeEntriesAndExpensesRequestV1) is required. Required: workspace_id, invoice_id, from, importExpenses, projectFilter, timeEntryGroupType, to.

list_all_clockify_invoice_payments

List the payments recorded against a Clockify invoice. Returns one payment record per entry: its id plus attributes holding the payment fields defined in Clockify's InvoicePaymentDtoV1. Required: workspace_id, invoice_id.

create_a_clockify_invoice_payment

Add a payment to a Clockify invoice. Returns the updated invoice overview record: its id plus attributes holding the remaining fields defined in Clockify's InvoiceOverviewDtoV1. A request body is required; its fields follow Clockify's CreateInvoicePaymentRequest schema. Required: workspace_id, invoice_id.

delete_a_clockify_invoice_payment_by_id

Delete a payment from a Clockify invoice. Returns the updated invoice overview record: its id plus attributes holding the remaining fields defined in Clockify's InvoiceOverviewDtoV1. Required: id, invoice_id, workspace_id.

clockify_invoice_status_bulk_update

Change the status of an invoice in a Clockify workspace. Returns an empty response body on success. Required: workspace_id, invoice_id.

create_a_clockify_workspace_limited_user

Add limited users to a Clockify workspace. Returns the workspace object (WorkspaceDtoV1) including its id. Required: workspace_id, users.

list_all_clockify_workspace_member_profiles

Get a member's profile in a Clockify workspace by workspace and user id. Returns the member profile record with its id and attributes (fields defined by the upstream MemberProfileDtoV1 schema). Required: workspace_id, user_id.

update_a_clockify_workspace_member_profile_by_id

Update a member's profile in a Clockify workspace by id. Sends the full member profile request body (MemberProfileFullRequestV1) and returns the updated member profile record with its id and attributes. Required: id, workspace_id.

list_all_clockify_workspace_projects

List all projects in a Clockify workspace, with filters for name, client, user, group, status, and sorting. Returns project records keyed by id. Required: workspace_id.

create_a_clockify_workspace_project

Create a new project in a Clockify workspace. Returns the created project record keyed by its id. Required: workspace_id, name.

update_a_clockify_workspace_project_by_id

Update an existing project in a Clockify workspace by id. Returns the updated project record keyed by its id. Required: id, workspace_id.

delete_a_clockify_workspace_project_by_id

Delete a project from a Clockify workspace by id. Returns the deleted project record keyed by its id. Required: id, workspace_id.

get_single_clockify_workspace_project_by_id

Get a Clockify project by id within a workspace. Returns the project record with its id plus attributes for the remaining schema-defined project fields. Required: id, workspace_id.

create_a_clockify_projects_from_template

Create a Clockify project from a workspace template. Returns the created project's id plus the full project record as content-type-specific attributes (the upstream docs do not enumerate the record fields). Requires workspace_id and a JSON request body. Required: workspace_id, name, templateProjectId.

list_all_clockify_project_custom_fields

List custom fields on a Clockify project, optionally filtered by status or entity type. Returns each custom field record including its id. Required: workspace_id, project_id.

update_a_clockify_project_custom_field_by_id

Update a custom field's default values on a Clockify project. Returns the updated custom field record including its id. Required: id, workspace_id, project_id.

delete_a_clockify_project_custom_field_by_id

Remove a custom field from a Clockify project. Returns the removed custom field record including its id. Required: id, workspace_id, project_id.

clockify_project_estimates_bulk_update

Update a Clockify project's estimate. Sends the estimate configuration as the JSON request body and returns the updated project object including its id. Required: workspace_id, project_id.

create_a_clockify_project_membership

Create project memberships to assign or remove users on a Clockify project. Returns the updated project object including its id. Required: workspace_id, project_id.

clockify_project_memberships_bulk_update

Update project memberships for a Clockify project. Returns the updated project object including its id. Required: workspace_id, project_id, memberships.

list_all_clockify_project_tasks

List tasks on a Clockify project, optionally filtered by task name and active state. Returns each task's id and name. Required: project_id, workspace_id.

create_a_clockify_project_task

Create a new task on a Clockify project. Returns the created task including its id and name. Required: project_id, workspace_id, name.

update_a_clockify_project_task_by_id

Update a task on a Clockify project by id. Returns: billable, duration, estimate, id, name, status. Required: id, workspace_id, project_id, name.

delete_a_clockify_project_task_by_id

Delete a task from a Clockify project by id. Returns the deleted task including its id and name. Required: id, workspace_id, project_id.

get_single_clockify_project_task_by_id

Get a single task on a Clockify project by id. Returns: assigneeId, assigneeIds, billable, budgetEstimate, costRate, duration, estimate, hourlyRate, id, name, projectId, status, userGroupIds. Required: id, project_id, workspace_id.

clockify_task_cost_rates_bulk_update

Update a task's cost rate in Clockify. Returns the updated task object including its id and the remaining task attributes. Required: id, project_id, workspace_id, amount.

clockify_task_hourly_rates_bulk_update

Update a task's billable (hourly) rate in Clockify. Returns the updated task object including its id and name. Required: id, project_id, workspace_id, amount.

clockify_project_templates_bulk_update

Update a project template in Clockify for the given workspace and project. Returns the updated project record including its id. Requires workspace_id, project_id, and a JSON request body (the docs reference PatchProjectTemplateRequest without enumerating its fields). Required: workspace_id, project_id.

clockify_user_cost_rates_bulk_update

Update a Clockify workspace user's cost rate. Returns the updated workspace record per the upstream WorkspaceDtoV1 schema (the source docs reference this schema without enumerating its fields). Required: workspace_id, user_id, amount.

clockify_user_hourly_rates_bulk_update

Update a Clockify user's hourly (billable) rate within a workspace. Returns the updated workspace object as the upstream WorkspaceDtoV1 schema; the docs do not enumerate its fields. Requires a JSON request body per the upstream HourlyRateRequestV1 schema. Required: workspace_id, user_id, amount.

list_all_clockify_assignments_alls

List all scheduling assignments in a Clockify workspace. Returns assignment records including id and hydrated assignment attributes (per Clockify's AssignmentHydratedDtoV1 shape). Required: workspace_id, start, end.

list_all_clockify_projects_totals

List Clockify scheduled assignment totals per project over a date range, optionally filtered by a project or client name search term. Returns each totals record's id and its assignment-totals attributes (field-level shape defined by the SchedulingProjectsTotalsDtoV1 schema upstream). This GET endpoint is deprecated upstream. Required: workspace_id, start, end.

get_single_clockify_projects_total_by_id

Get Clockify scheduled assignment totals for a single project over a date range. Returns each totals record's id and its assignment-totals attributes (field-level shape defined by the SchedulingProjectsTotalsDtoV1 schema upstream). Required: id, workspace_id, start, end.

clockify_projects_totals_search

Search Clockify scheduled assignment totals per project by sending a filter payload to the totals endpoint. Returns totals records with their id and assignment-totals attributes. Required: workspace_id, end, start.

clockify_assignments_publishes_bulk_update

Publish scheduled assignments in a Clockify workspace. Returns an empty 200 OK response on success. Requires workspace_id and a JSON request body (PublishAssignmentsRequestV1). Required: workspace_id, end, start.

create_a_clockify_assignments_recurring

Create a recurring scheduling assignment in a Clockify workspace. Returns the created assignment record(s) as an array including id. A JSON assignment payload body is required. Required: workspace_id, end, hoursPerDay, projectId, start, userId.

update_a_clockify_assignments_recurring_by_id

Update a recurring scheduling assignment by id in a Clockify workspace. Returns the updated assignment record(s) as an array including id. A JSON assignment payload body is required. Required: id, workspace_id, end, start.

delete_a_clockify_assignments_recurring_by_id

Delete a recurring scheduling assignment by id in a Clockify workspace. Returns the affected assignment record(s) as an array including id. Required: id, workspace_id.

update_a_clockify_assignments_sery_by_id

Update the recurring period of a Clockify scheduled assignment series. Returns an array of updated assignment records; each record is modeled as id plus attributes covering the upstream AssignmentDtoV1 fields. Required: id, workspace_id.

list_all_clockify_user_filter_totals

Get totals of users' capacity across a Clockify workspace, filtered by the criteria supplied in the request body. Returns an array of user capacity totals records (each including an id). Required: workspace_id, end, start.

list_all_clockify_user_totals

Get the total capacity of a single Clockify user for a date range. Returns the user totals object; the individual response fields are not enumerated in the available Clockify documentation. Required: workspace_id, user_id, start, end.

create_a_clockify_assignment_copy

Copy a scheduled assignment in Clockify. Returns an array of copied assignment records, each including its id. Requires a JSON request body. Required: workspace_id, assignment_id, userId.

get_single_clockify_workspace_tag_by_id

Get a single Clockify workspace tag by id. Returns: archived, id, name, workspaceId. Required: id, workspace_id.

update_a_clockify_workspace_tag_by_id

Update a Clockify workspace tag's name by id. Returns the updated tag: id, name. Required: id, workspace_id.

delete_a_clockify_workspace_tag_by_id

Delete a Clockify workspace tag by id. Returns the deleted tag: id, name. Required: id, workspace_id.

list_all_clockify_workspace_tags

List tags on a Clockify workspace, with optional name search, archived filtering, and sorting. Returns each tag's id, name, and archived state. Required: workspace_id.

create_a_clockify_workspace_tag

Create a new tag on a Clockify workspace. Returns the created tag: id, name, archived. Required: workspace_id.

list_all_clockify_workspace_templates

List all templates on a Clockify workspace, optionally filtered by name or cleansed/hydrated flags. Returns template records including id, name, and template-specific attributes. This endpoint is deprecated by Clockify. Required: workspace_id.

create_a_clockify_workspace_template

Create one or more templates on a Clockify workspace by posting a JSON array of template definitions. Returns the created templates including id and name. This endpoint is deprecated by Clockify. Required: workspace_id.

update_a_clockify_workspace_template_by_id

Update a template on a Clockify workspace by id. Returns the updated template including id and name. This endpoint is deprecated by Clockify. Required: id, workspace_id, name.

delete_a_clockify_workspace_template_by_id

Delete a template from a Clockify workspace by id. Returns the deleted template including id and name. This endpoint is deprecated by Clockify. Required: id, workspace_id.

get_single_clockify_workspace_template_by_id

Get a single template on a Clockify workspace by id, with options to filter out inactive or hydrate template projects and tasks. Returns the template including id, name, and template-specific attributes. This endpoint is deprecated by Clockify. Required: id, workspace_id.

create_a_clockify_workspace_time_entry

Add a new time entry to a Clockify workspace. Returns: billable, description, id, type. If the workspace has time entry custom fields configured as required, they must be provided in the customFields array. Required: workspace_id.

get_single_clockify_workspace_time_entry_by_id

Get a specific time entry on a Clockify workspace by id. Returns: billable, description, id, type. Required: id, workspace_id.

update_a_clockify_workspace_time_entry_by_id

Update a time entry on a Clockify workspace by id. Returns: billable, description, id, type. Required: id, workspace_id, start.

delete_a_clockify_workspace_time_entry_by_id

Delete a time entry from a Clockify workspace by id. Returns an empty 204 response on success. Required: id, workspace_id.

list_all_clockify_time_entries_batches

List multiple Clockify time entries on a workspace in one batch request, identifying the entries by ids sent in the request body. Returns an array of matching time entries (upstream TimeEntryWithRatesDtoV1 records, including the entries' rate information). Required: workspace_id, timeEntryIds.

clockify_time_entries_invoiceds_bulk_update

Mark time entries as invoiced in a Clockify workspace, updating the invoiced status of the selected time entries in bulk. Returns an empty 200 response on success. Required: workspace_id, invoiced, timeEntryIds.

list_all_clockify_status_in_progreses

List all in-progress (running) time entries on a Clockify workspace. Returns in-progress time entry records including id, description, project, task, and tags. Required: workspace_id.

create_a_clockify_balance_assignment

Create a time-off balance assignment for a user in a policy in Clockify. Returns a 201 Created response on success. Required: workspace_id, balance, policyId, userIds.

get_single_clockify_policy_by_id

Get all balance assignments of a Clockify user in a time-off policy. Returns an array of balance assignment records identified by id. Required: id, workspace_id, user_id.

update_a_clockify_policy_by_id

Update a specific balance assignment for a Clockify user in a time-off policy. Returns an empty 204 response on success. Required: id, workspace_id, user_id, balance_assignment_id, balanceChange.

delete_a_clockify_policy_by_id

Delete a specific balance assignment for a Clockify user in a time-off policy. Returns an empty 200 response on success. Required: id, workspace_id, user_id, balance_assignment_id, note.

list_all_clockify_balance_policies

Get balances for a Clockify time-off policy. Returns: balances, count. Required: workspace_id, policy_id.

update_a_clockify_balance_policy_by_id

Update a balance for a Clockify time-off policy. Returns an empty 204 response on success. The endpoint requires a JSON request body (UpdateBalanceRequestV1); upstream docs reference the schema by name without enumerating its fields. Required: id, workspace_id, userIds, value.

list_all_clockify_balance_users

List Clockify time-off balances for a user across the workspace's policies. Returns a count plus a paginated balances collection whose entries carry the user, policy, and time-off amounts (used, remaining balance, total). Required: workspace_id, user_id.

list_all_clockify_time_off_policies

List time off policies in a Clockify workspace. Returns each policy's id and its content-type-specific fields. Filter by name and status (ACTIVE, ARCHIVED, ALL). Required: workspace_id.

create_a_clockify_time_off_policy

Create a time off policy in a Clockify workspace. Returns the created policy's id and its content-type-specific fields. Required: workspace_id, approve, name.

get_single_clockify_time_off_policy_by_id

Get a single time off policy by id in a Clockify workspace. Returns the policy's id and its content-type-specific fields. Required: id, workspace_id.

update_a_clockify_time_off_policy_by_id

Update a time off policy by id in a Clockify workspace. Returns the updated policy's id and its content-type-specific fields. Required: id, workspace_id, status.

delete_a_clockify_time_off_policy_by_id

Delete a time off policy by id in a Clockify workspace. Returns an empty 204 response on success. Required: id, workspace_id.

create_a_clockify_policie_request

Create a time off request under a time off policy in Clockify. Returns: balance, createdAt, id, note, status. Required: workspace_id, policy_id, timeOffPeriod.

update_a_clockify_policie_request_by_id

Change the status of a time off request in Clockify. Returns: createdAt, id, note, status. Required: id, workspace_id, policy_id.

delete_a_clockify_policie_request_by_id

Delete a time off request from a time off policy in Clockify. Returns: createdAt, id, note, status. Required: id, workspace_id, policy_id.

create_a_clockify_user_request

Create a time off request for a specific user under a policy in Clockify. Returns the created request including its id and createdAt. Body follows Clockify's CreateTimeOffRequestV1Request schema. Required: workspace_id, policy_id, user_id, timeOffPeriod.

list_all_clockify_time_off_requests

List all time off requests in a Clockify workspace. Returns the workspace's time off requests together with a total count. Filters are supplied in the request body. Required: workspace_id.

list_all_clockify_workspace_user_groups

List all user groups in a Clockify workspace. Returns group records with their id and the remaining group fields under attributes. Required: workspace_id.

create_a_clockify_workspace_user_group

Create a user group in a Clockify workspace. Returns the created group record with its id and the remaining group fields under attributes. Required: workspace_id.

update_a_clockify_workspace_user_group_by_id

Update a user group in a Clockify workspace by id. Returns the updated group with its id and name. Required: id, workspace_id.

delete_a_clockify_workspace_user_group_by_id

Delete a user group in a Clockify workspace by id. Returns the deleted group record with its id and the remaining group fields under attributes. Required: id, workspace_id.

create_a_clockify_user_group_user

Add one or more users to a Clockify user group. Returns the updated user group with its id and name. Required: workspace_id, user_group_id, userId.

delete_a_clockify_user_group_user_by_id

Remove a user from a Clockify user group. Returns the updated user group with its id and name. Required: id, workspace_id, user_group_id.

list_all_clockify_time_entries

Get time entries for a user on a workspace. Returns: billable, costRate, customFieldValues, description, hourlyRate, id, isLocked, kioskId. Required: workspace_id, user_id.

create_a_clockify_time_entry

Add a new time entry for another user on workspace. Returns: billable, customFieldValues, description, id, isLocked, kioskId, projectId, tagIds. Required: workspace_id, user_id.

clockify_time_entries_duplicate

Duplicate a time entry. Returns: billable, customFieldValues, description, id, isLocked, kioskId, projectId, tagIds. Required: workspace_id, user_id, time_entry_id.

clockify_time_entries_bulk_update

Bulk edit time entries. Returns: billable, customFieldValues, description, id, isLocked, kioskId, projectId, tagIds. Required: workspace_id, user_id.

clockify_time_entries_bulk_delete

Delete all time entries for a user on a workspace. Returns: billable, customFieldValues, description, id, isLocked, kioskId, projectId, tagIds. Required: workspace_id, user_id, time_entry_ids.

list_all_clockify_workspace_users

Find all users on a workspace. Returns: activeWorkspace, customFields, defaultWorkspace, email, id, memberships, name, profilePicture. Required: workspace_id, include_roles.

create_a_clockify_workspace_user

Add user to a workspace. Returns: cakeOrganizationId, costRate, currencies, featureSubscriptionType, features, hourlyRate, id, imageUrl. Required: workspace_id, send_email, email.

update_a_clockify_workspace_user_by_id

Update a user's status. Returns: cakeOrganizationId, costRate, currencies, featureSubscriptionType, features, hourlyRate, id, imageUrl. Required: id, workspace_id, status.

delete_a_clockify_workspace_user_by_id

Remove user from a workspace. Returns: cakeOrganizationId, costRate, currencies, featureSubscriptionType, features, hourlyRate, id, imageUrl. Required: id, workspace_id.

create_a_clockify_users_info

Filter users in a Clockify workspace by POSTing filter criteria. Returns an array of matching user records, each with its id. Required: workspace_id.

clockify_custom_field_values_bulk_update

Update (upsert) a user's custom field value in Clockify. Returns the saved custom field value object with fields defined by Clockify's UserCustomFieldValueDtoV1 schema, including its id. Required: workspace_id, user_id, custom_field_id.

list_all_clockify_user_managers

Find a Clockify user's team managers on a workspace. Returns a list of manager records with their id, email, and name. Required: workspace_id, user_id.

create_a_clockify_user_role

Give the manager role to a user in a Clockify workspace. Returns an array of the user's role detail records. Required: workspace_id, user_id, entityId, role.

clockify_user_roles_bulk_delete

Remove a user's manager role in a Clockify workspace. Returns an empty 204 response on success. Required: workspace_id, user_id, entityId, role.

list_all_clockify_workspace_webhooks

List all webhooks on a Clockify workspace. Returns the webhook records including id, name, url, and type. Required: workspace_id.

update_a_clockify_workspace_webhook_by_id

Update a Clockify webhook by id. Returns the updated webhook record including id, name, url, and type. Required: id, workspace_id, triggerSource, triggerSourceType, url, webhookEvent.

delete_a_clockify_workspace_webhook_by_id

Delete a Clockify webhook by id. Returns an empty response on success. Required: id, workspace_id.

get_single_clockify_workspace_webhook_by_id

Get a specific Clockify webhook by id. Returns: authToken, deliveryEnabled, enabled, id, name, planEnabled, triggerSource, triggerSourceType, url, userId, webhookEvent, workspaceId, type, token. Required: id, workspace_id.

create_a_clockify_workspace_webhook

Create a webhook on a Clockify workspace; Clockify generates a verification token with it that is present in the header of every webhook delivery. Returns: authToken, deliveryEnabled, enabled, id, name, planEnabled, triggerSource, triggerSourceType, url, userId, webhookEvent, workspaceId, type, token. Required: workspace_id, triggerSource, triggerSourceType, url, webhookEvent.

list_all_clockify_webhook_statuses

List webhook event statuses for a webhook in Clockify. Returns a paginated array of webhook event status records, each with an id. Required: workspace_id, webhook_id.

clockify_webhook_tokens_bulk_update

Generate a new webhook token in Clockify for the given webhook, invalidating the previous one. Returns the updated webhook record (upstream schema WebhookDtoV1) including its id. Required: workspace_id, webhook_id.

get_single_clockify_shared_report_by_id

Generate a shared report by id in Clockify. Returns the shared report data with report-type- and export-type-specific fields (the documented example is a SUMMARY report with exportType JSON). On the FREE subscription plan, shared report data is limited to a maximum interval of one month (31 days). Required: id.

create_a_clockify_reports_attendance

Generate an attendance report for a clockify workspace. Returns: id. Required: workspace_id, attendanceFilter, dateRangeEnd, dateRangeStart.

create_a_clockify_reports_detailed

Generate a detailed time entry report for a Clockify workspace. The JSON body (DetailedReportFilterV1) defines the report's filters; returns the detailed report object (TimeEntryDetailedReportDto) with report-specific fields. On the FREE subscription plan the report interval is limited to one month (31 days). Required: workspace_id, dateRangeEnd, dateRangeStart, detailedFilter.

create_a_clockify_expenses_detailed

Generate a detailed expense report for a Clockify workspace by posting the report filter criteria. Returns the generated expense report as a 200 OK JSON body whose fields are defined by Clockify's ExpenseDetailedReportDtoV1 report document schema; the field set depends on the filters supplied in the request body. On the FREE subscription plan, report data is limited to a…. Required: workspace_id, dateRangeEnd, dateRangeStart.

create_a_clockify_reports_summary

Generate a summary report for a Clockify workspace. Returns the generated summary report object (TimeEntrySummaryReportDto); its field-level shape is defined upstream and depends on the report filter sent. Summary report data on the FREE plan is limited to a maximum interval of one month (31 days). Required: workspace_id, dateRangeEnd, dateRangeStart, summaryFilter.

create_a_clockify_reports_weekly

Generate a weekly report for a clockify workspace. Returns: id. Weekly report data on the FREE subscription plan is limited to a maximum interval length of one month (31 days). Required: workspace_id, dateRangeEnd, dateRangeStart, weeklyFilter.

list_all_clockify_workspace_shared_reports

List the shared reports visible to the current user in a Clockify workspace. Returns a collection payload with the matching sharedReports and their total count; each report includes id, name, options, created_at, and updated_at. Required: workspace_id.

create_a_clockify_workspace_shared_report

Create a shared report in a Clockify workspace with a name, report options and a report filter. Returns the created report including id, name, options, created_at, and updated_at. On FREE subscription plans the shared report data interval is limited to one month (31 days). Required: workspace_id.

update_a_clockify_workspace_shared_report_by_id

Update a shared report's name and/or options in a Clockify workspace by id. Returns the updated report including id, name, options, created_at, and updated_at. Required: id, workspace_id, name.

delete_a_clockify_workspace_shared_report_by_id

Delete a shared report from a Clockify workspace by id. Returns an empty 204 response on success. Required: id, workspace_id.

get_single_clockify_workspace_audit_log_by_id

Generate an audit log report for a Clockify workspace. Returns a paginated report of audit log entries; Clockify's published API reference does not enumerate the report's fields (PageableV1ListAuditLogDtoV1). Required: id, actions, authors, end, start.

list_all_clockify_addon_webhooks

List all webhooks registered for an addon on a Clockify workspace. Returns the webhook collection with each webhook's id. Required: workspace_id, addon_id.

create_a_clockify_approval_requests_resubmit_entry

Submit non-pending/approved entries and expenses for approval to an existing approval request in a Clockify workspace. Returns the updated approval request object. Required: workspace_id, periodStart.

create_a_clockify_user_resubmit_entry

Re-submit rejected or withdrawn time entries and expenses for approval for a specific user in a Clockify workspace. Returns the approval request object: id plus its full attributes. Required: workspace_id, user_id, periodStart.

list_all_clockify_webhook_logs

List log entries recorded for a Clockify webhook. Returns: id, respondedAt, responseBody, statusCode, webhookEventStatusId, webhookId. Required: workspace_id, webhook_id.

Why Truto

Why use Truto’s MCP server for Clockify

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 800+ integrations.

01

Auto-generated, always up to date

Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.

02

Fine-grained access control

Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.

03

Multi-tenant by design

Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.

04

Works with every MCP client

Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.

05

Built-in auth, rate limits, and error handling

Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.

06

Expiring and auditable servers

Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.

How It Works

From zero to integrated

Go live with Clockify in under an hour. No boilerplate, no maintenance burden.

01

Link your customer’s Clockify account

Use Truto’s frontend SDK to connect your customer’s Clockify account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

We handle authentication

Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.

03

Call our API, we call Clockify

Truto’s Proxy API is a 1-to-1 mapping of the Clockify API. You call us, we call Clockify, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate Clockify’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about Clockify on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

How do end users authenticate their Clockify account?

Clockify uses API key authentication. Through Truto's connect flow, your end users paste their personal Clockify API key (found in their Clockify profile settings) and Truto securely stores and manages the credential for every subsequent API call.

Can we receive real-time events from Clockify instead of polling?

Yes. Truto exposes Clockify's webhook endpoints, so you can programmatically register webhooks per workspace to be notified when timers stop, time entries change, or approvals move state. This removes the need to poll endpoints like list_all_clockify_time_entries on a schedule.

Does the integration support Clockify's custom fields?

Yes. You can list, create, update, and delete workspace-level and project-level custom fields, and bulk update custom field values on time entries, so your product's metadata can flow into Clockify alongside standard fields.

How are rates and financial data handled across users, projects, and tasks?

Clockify models rates at multiple levels. Truto exposes bulk update endpoints for workspace, user, project, and task cost and hourly rates, so you can sync billable and cost economics at the right level of granularity rather than overwriting a single global value.

Can we create invoices and attach time entries or expenses programmatically?

Yes. You can create and duplicate workspace invoices, add invoice items, bulk delete items, record payments, update invoice status in bulk, and push expenses that can be included on invoices — enabling fully programmatic billing flows.

What's the right way to handle multi-workspace Clockify accounts?

Clockify scopes nearly every resource (projects, tags, time entries, approvals, invoices) to a workspace. Use list_all_clockify_workspaces after a user connects to let them pick which workspace to sync, then pass that workspace ID into all downstream calls.

Clockify

Get Clockify integrated into your app

Our team understands what it takes to make a Clockify integration successful. A short, crisp 30 minute call with folks who understand the problem.