---
title: Clockify API Integration on Truto
slug: clockify
category: Time Tracking
canonical: "https://truto.one/integrations/detail/clockify/"
---

# Clockify API Integration on Truto



**Category:** Time Tracking  
**Status:** Generally available

## MCP-ready AI tools

Truto exposes 169 tools for Clockify that AI agents can call directly.

- **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.

## How it works

1. **Link your customer's Clockify account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Clockify.** The Proxy API is a 1-to-1 mapping of the Clockify API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **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.
- **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.
- **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.
- **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.
- **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

- **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.
- **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.
- **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.
- **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.
- **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.
- **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.

## FAQs

### 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.

## Related reading

- [Connect Clockify to Claude: Automate Invoicing, Expenses & Reports](https://truto.one/blog/connect-clockify-to-claude-automate-invoicing-expenses-reports/) — Learn how to build a managed MCP server to connect Clockify to Claude. Automate invoicing, expense tracking, and time reports with AI agents.
- [Connect Clockify to AI Agents: Manage Teams, Schedules & Approvals](https://truto.one/blog/connect-clockify-to-ai-agents-manage-teams-schedules-approvals/) — Learn how to connect Clockify to AI agents using Truto's /tools endpoint. Build autonomous workflows for time tracking, project scheduling, and approvals.
