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

# Hourtick API Integration on Truto



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

## MCP-ready AI tools

Truto exposes 119 tools for Hourtick that AI agents can call directly.

- **list_all_hourtick_bootstraps** — Retrieve the Hourtick bootstrap for the current user: who they are and what they can track on. Returns: user, workspace, profile, clients, projects, tasks, recent. Takes no parameters.
- **list_all_hourtick_time_entries** — List your Hourtick time entries within a date range, including your currently running timer if one is active. Returns time-entry records with: id, version, notes, billable, spentDate, durationSeconds, projectId, taskId, workItemId, and userId. Required: from, to.
- **hourtick_time_entries_bulk_update** — Update one or many time entries in Hourtick by applying one patch (notes, projectId, taskId, spentDate, durationSeconds, or userId to reassign the time) to every listed entry. Returns: updated, entries. Up to 500 entries per request; running, invoiced, submitted or approved entries and stale versions fail atomically with…. Required: entries, patch.
- **create_a_hourtick_command** — Run a Hourtick time command: start, restart, stop, create, edit, delete, or restore a time entry. start stops any running timer; edit and delete require expectedVersion. Returns the resulting time entries with their id, projectId, taskId, notes, billable, durationSeconds, and version. Each command carries an idempotent commandId, so retrying is always safe. Required: commandId, command.
- **list_all_hourtick_reports** — Get a Hourtick report of totals, groups and time entries for a period (team scope for managers; admins also get P&L — costs, profit and uncosted seconds — inside totals and groups). Returns: scope, totals, groups, entries, truncated. Set format to csv for CSV output instead of JSON. Required: from, to.
- **list_all_hourtick_streams** — Server-Sent Events: live entry changes for your account and task changes in the workspace.
- **list_all_hourtick_timesheets** — Get your timesheet status for one week in Hourtick. Returns the week object with weekStart and status (null when not submitted, otherwise submitted, approved or rejected). Required: weekStart, the Monday of the week (e.g. 2026-08-03).

- **create_a_hourtick_timesheet** — Submit or withdraw a timesheet week in Hourtick. Returns a JSON object whose field set is not enumerated upstream — the API documents an untyped object response. A 409 is returned when the week is in the wrong state for the requested action. Required: weekStart, action.
- **list_all_hourtick_approvals** — List the weeks waiting for approval in Hourtick (managers). Optionally filter by status, `submitted` or `approved`. Returns a JSON object; the API spec documents no specific fields for it.
- **create_a_hourtick_approval** — Approve, send back, or reopen a team member's week in Hourtick (managers). Returns a JSON object; the API spec documents no specific fields for it. Requires userId, weekStart, and action (`approve`, `reject`, or `reopen`). Required: userId, weekStart, action.
- **create_a_hourtick_invoicing** — Mark hourtick time entries as invoiced (or revert them) in bulk. Returns: updated. Admin-only; marked entries are locked. Required: entryIds, invoiced.
- **list_all_hourtick_members** — List all members of a Hourtick workspace (managers). Returns each member's id and the upstream member fields (attributes). No query parameters are required.
- **list_all_hourtick_cost_rates** — List every member's hourly cost rates in Hourtick, newest first. Returns: userId, hourlyCostMinor, validFrom. Requires admin access.
- **hourtick_member_cost_rates_bulk_update** — Set a member's hourly cost rate in hourtick, effective from a given day — time is costed at the rate valid on its day. Returns: validFrom. Admins only; set hourlyCost to null to remove the rate that starts on validFrom. Required: user_id, hourlyCost.
- **list_all_hourtick_agent_costs** — List the Hourtick agent cost ledger for a period. Returns cost rows with costUsd, model, inputTokens, outputTokens, agentId, and spentDate; an agent's own rows, or all for admins (agentId narrows it). Required: from, to.
- **create_a_hourtick_agent_cost** — Report what a piece of work cost in Hourtick; it counts toward the agent's budget and the P&L, and each cost is reported once (here, MCP log_time usage, or session usage). Returns the created cost record with costUsd, model, inputTokens, outputTokens, agentId, and spentDate. Admins pass agentId to report for another agent; spentDate defaults to today.
- **delete_a_hourtick_agent_cost_by_id** — Delete an agent cost row in hourtick by id. Use this to remove an incorrectly recorded cost. Returns an empty 204 response on success. Required: id.
- **list_all_hourtick_ai_providers** — List the AI provider connections in Hourtick used for verified agent cost. Returns each connection's id, provider, label, and fillGaps setting; keys are never returned, only their last 4 characters.
- **create_a_hourtick_ai_provider** — Connect an Anthropic, OpenAI, or OpenRouter key in Hourtick to read what the provider billed for agent work; the key is checked against the provider, then stored encrypted. Returns the created connection with id, provider, label, and fillGaps. Required: provider, key.
- **update_a_hourtick_ai_provider_by_id** — Rename an AI provider connection in Hourtick, or turn gap-filling from provider bills on or off. Returns an empty 204 response on success. Required: id.
- **delete_a_hourtick_ai_provider_by_id** — Delete an AI provider connection in Hourtick, removing the stored key, its synced bills, and the cost it filled in. Returns an empty 204 response on success. Required: id.
- **list_all_hourtick_ai_provider_scopes** — List the AI provider scopes in hourtick: what the connected AI provider's key can see — Anthropic workspaces, OpenAI projects and API keys, OpenRouter keys — and which agent each is mapped to. Returns a single JSON object whose field structure is not documented in the upstream API reference. Required: ai_provider_id.
- **hourtick_ai_provider_scopes_bulk_update** — Map an AI provider scope to an agent in hourtick, or clear the mapping by passing agentId as null. Returns an empty 204 response on success. For OpenAI, an agent can map to projects or API keys but not both. Required: ai_provider_id, scopeType, scopeId, agentId.
- **create_a_hourtick_ai_provider_sync** — Trigger a manual sync of an AI provider in hourtick to read its last 30 days of bills now and reconcile them (the same sync also runs automatically every 6 hours). Returns: rows. Required: ai_provider_id.
- **list_all_hourtick_reports_cost_reconciliations** — Get the Hourtick agent cost reconciliation report: what agents reported as their cost vs what the providers (Anthropic, OpenAI, OpenRouter) billed, per agent and UTC month, including what was filled in from the cost ledger source. Admins only. Returns the report object with report-specific fields (the upstream API does not enumerate them). Required: from, to.
- **list_all_hourtick_reports_agent_outcomes** — List Hourtick agent outcomes for a date range: for each task with agent work done in the period, the agent's time and cost, people's time before (briefing) and after (review and rework) delivery, how often work was sent back, and who approved it. Returns: currency, from, to, totals, agents, tasks. Required: from, to.
- **list_all_hourtick_client_ai_reports_previews** — Preview a client AI work report in Hourtick without sharing it: people's and agents' hours, agents and models used, and whether a person reviewed each piece of agent work (no rates, costs or notes). Returns the report object with report-specific fields. Required: clientId, from, to.
- **list_all_hourtick_client_ai_reports** — List shared client AI work reports in Hourtick, newest first. Returns each report's id and report content (hours by people and agents, models used, human review); links are not included.
- **create_a_hourtick_client_ai_report** — Freeze a client AI work report for a Hourtick client and get a share link. Returns: id. Admins only. Required: clientId, from, to.
- **delete_a_hourtick_client_ai_report_by_id** — Revoke a shared client AI work report in Hourtick by id; its share link stops working at once. Returns an empty 204 response on success. Admins only. Required: id.
- **get_single_hourtick_ai_report_by_id** — Get a shared client AI work report from Hourtick by id (the token from the report's share link). Returns the report content plus fingerprint, createdAt, and fingerprintMethod. Unknown or revoked tokens return 404. Required: id.
- **list_all_hourtick_integrations** — List the vendor integrations Hourtick supports (Linear, Notion, Teamwork, Asana) and whether you are connected to each. Returns: id, label, available, asks, connection.
- **create_a_hourtick_integration** — Start connecting a vendor integration (linear, notion, teamwork or asana) in Hourtick. Returns: url. Required: provider.
- **hourtick_integrations_bulk_delete** — Disconnect a vendor integration (linear, notion, teamwork or asana) from Hourtick: forgets the stored tokens and asks the vendor to revoke them where it supports that. Returns an empty 204 response on success. Required: provider.
- **list_all_hourtick_work_item_links** — List the items linked to a Hourtick work item (Linear issues, Notion pages, Teamwork or Asana tasks). Returns each link's id, provider, label, url, title, and status, with title and status refreshed when older than 5 minutes. Required: work_item_id.
- **create_a_hourtick_work_item_link** — Link a Linear issue, Notion page, Teamwork task or Asana task to a Hourtick work item by its address (a Linear identifier such as ENG-123 also works). Returns the created link with id, provider, label, url, title, and status. One link per provider per task — a new link replaces the old, and the provider must already be connected. Required: work_item_id, url.
- **delete_a_hourtick_work_item_link_by_id** — Remove a link from a Hourtick work item. Time already sent to Teamwork stays there. Returns an empty 204 response on success. Required: id, work_item_id.
- **list_all_hourtick_notes** — List notes on a project or client in Hourtick, newest edit first, with titles and previews. Returns each note's id, title, preview, updatedAt, updatedBy, and createdBy. Give either projectId or clientId.

- **create_a_hourtick_note** — Create a note on a project or client in Hourtick, sending the document as markdown or as Tiptap JSON in content. Returns the created note including id, title, version, markdown, and updatedAt.
- **get_single_hourtick_note_by_id** — Get a single note by id in Hourtick. Returns the full note including title, Tiptap content, markdown, plain text, and version. Required: id.
- **update_a_hourtick_note_by_id** — Save a note by id in Hourtick: replace the title and/or document (markdown or Tiptap content) against the version you started from, or append with appendMarkdown without a version. On a 409 conflict, resend with force: true to keep yours. Returns the saved note including id, title, version, and updatedAt. Required: id.
- **delete_a_hourtick_note_by_id** — Delete a note by id in Hourtick (its creator or a manager). Returns an empty 204 response on success. Required: id.
- **list_all_hourtick_files** — List files attached to a Hourtick project or client, newest first. Returns attachment records including id, created_at, and updated_at. Filter by projectId or clientId.
- **create_a_hourtick_file** — Upload a file to a Hourtick project or client as multipart form data. Returns the created file record including id, created_at, and updated_at. Up to 25 MB; uploads count toward usage and pause when the limit is reached.
- **get_single_hourtick_file_by_id** — Open a Hourtick file by id and get its short-lived signed URL — the endpoint answers with a 302 redirect, or a `{ url }` JSON body when JSON output is requested. Returns: url. Required: id.
- **delete_a_hourtick_file_by_id** — Delete a Hourtick file by id. Only the file's uploader or a manager may delete it. Returns an empty 204 response on success. Required: id.
- **list_all_hourtick_records_counts** — Get the number of notes and files attached to each project and client in Hourtick. Returns: projects, clients. Takes no parameters.
- **list_all_hourtick_clients** — List Hourtick clients with their VAT numbers and active project counts. Returns each client's id, name, vatNumber, and activeProjectCount.
- **create_a_hourtick_client** — Create a client in Hourtick (admins, or an agent an admin allows), optionally with a VAT number; the creation records who added it. Returns: id, name, vatNumber. Requires name (1–200 characters). Required: name.
- **update_a_hourtick_client_by_id** — Update a client in Hourtick: rename it, set or clear its VAT number, or archive it. Returns the updated client object including id, name, vatNumber, and archived. Client names must be unique. Required: id.
- **create_a_hourtick_project** — Create a project in Hourtick. Returns the created project record including its id, name, color, billingType, budgetHours, and hourlyRate. Requires name, clientId, color, and billingType. Required: name, clientId, color, billingType.
- **update_a_hourtick_project_by_id** — Update a project in Hourtick by id — change billing, budget, hourly rate, task types, team members, or archive it. Returns the updated project record including its id, name, color, billingType, budgetHours, and hourlyRate. Required: id.
- **list_all_hourtick_work_items** — List Hourtick tasks on the board — open ones plus those done in the last 14 days (send done=all for everything). Returns tasks with id, title, status, priority, labels, and assigneeIds; optionally filter by projectId or assigneeId.
- **create_a_hourtick_work_item** — Create a task in Hourtick. Returns the created task with id, title, status, priority, dueDate, and labels. Required: title.
- **get_single_hourtick_work_item_by_id** — Get a single Hourtick task by id, including its description, checklist, timeline (comments, files, events) and time per person. Returns the task with id, title, status, priority, and assigneeIds. Required: id.
- **update_a_hourtick_work_item_by_id** — Update a Hourtick task by id. To move it between board columns send status (and position to place it — lower is higher up). Returns the updated task with id, title, status, priority, and labels. Required: id.
- **delete_a_hourtick_work_item_by_id** — Delete a Hourtick task by id, along with its comments and files; tracked time is kept. Returns an empty 204 response on success. Required: id.
- **update_a_hourtick_work_item_comment_by_id** — Edit your comment on a Hourtick work item. Returns an empty 204 response on success. Max body 10000 characters. Required: id, work_item_id, body.
- **delete_a_hourtick_work_item_comment_by_id** — Delete a comment and its files from a Hourtick work item (author or managers). Returns an empty 204 response on success. Required: id, work_item_id.
- **create_a_hourtick_work_item_comment** — Post a comment in a Hourtick work item's chat. Returns the created comment with its id. Max body 10000 characters. Required: work_item_id, body.
- **create_a_hourtick_work_item_checklist** — Add a checklist item to a work item in Hourtick. Returns: id, title. Title must be 1-500 characters. Required: work_item_id, title.
- **update_a_hourtick_work_item_checklist_by_id** — Tick, rename or move a checklist item on a work item in Hourtick. Returns an empty 204 response on success. Required: id, work_item_id.
- **delete_a_hourtick_work_item_checklist_by_id** — Remove a checklist item from a work item in Hourtick. Returns an empty 204 response on success. Required: id, work_item_id.
- **get_single_hourtick_attachment_by_id** — Get an attachment in Hourtick by id. Returns a 302 redirect to a 5-minute signed URL (no response body); images, PDFs, video, audio and text preview inline while other file types download. Required: id.
- **delete_a_hourtick_attachment_by_id** — Delete a file in Hourtick by id (only the uploader or managers may delete). Returns an empty 204 response on success. Required: id.
- **list_all_hourtick_task_views** — List your saved task views in Hourtick (personal). Returns each view's id, name, filters (people, projects, clients, labels, q, layout) and position.
- **create_a_hourtick_task_view** — Create a saved task view in Hourtick with people, projects, clients and labels (any-of; `none` for unset), search and layout. Returns: id, name, filters. Required: name, filters.
- **update_a_hourtick_task_view_by_id** — Update a saved task view in Hourtick — rename it, change its filters or move it. Returns the updated view's id, name, filters and position. All body fields are optional. Required: id.
- **delete_a_hourtick_task_view_by_id** — Delete a saved task view in Hourtick by id. Returns an empty 204 response on success. Required: id.
- **list_all_hourtick_usages** — Get hourtick's usage for the current month and the plan's limit in bytes (1 GB = 10^9), covering stored database and file data plus data in and out since the 1st. Returns: dbBytes, fileBytes, usedBytes, limitBytes, measuredAt.
- **hourtick_billing_storages_bulk_update** — Set the workspace's extra storage in Hourtick (admins only): extraGb gigabytes on the Pro plan at $10 per GB per month, with added storage charged pro rata right away. Requires extraGb (0-1000); the workspace must be on the Pro plan. Returns an opaque JSON object on success (response fields are not specified upstream). Required: extraGb.
- **list_all_hourtick_chat_channels** — List your Hourtick chat channels and direct messages with their unread and mention counts. Returns: id, name, topic, created_at, updated_at. Set browse to include public channels you haven't joined.
- **create_a_hourtick_chat_channel** — Create a channel in Hourtick; the name is slugged and must be unique. Returns the created channel with id, name, topic, and created_at. Required: name.
- **update_a_hourtick_chat_channel_by_id** — Update a Hourtick chat channel — rename it, set its topic, or archive it. Returns an empty 204 response on success. Required: id.
- **list_all_hourtick_searches** — Search the Hourtick workspace (the ⌘K palette) across tasks (by number, e.g. #12, or title), your own time entries (notes, project, task type), projects, clients, people and the channels you can see. Returns: tasks, entries, projects, clients, people, channels — a few of each, best matches first. Required: q.
- **list_all_hourtick_gifs** — List GIFs for the Hourtick chat picker (powered by GIPHY): trending when no search term is given, otherwise a rated-G search. Returns up to 24 GIFs with id, title, preview (with size) and url (with width and height). Post one in chat as ![title](url#WxH) — only GIPHY media URLs render as images.
- **get_single_hourtick_chat_file_by_id** — Get a chat file in Hourtick by id. The endpoint responds with a redirect to a pre-signed URL that is valid for 5 minutes rather than a JSON body. Required: id.
- **create_a_hourtick_chat_dm** — Open (or reuse) a direct message with one or more people and agents in hourtick. Accepts up to 20 userIds and 10 agentIds (UUIDs); both fields are optional and default to empty lists. Returns a JSON object whose field-level shape is not enumerated in the upstream API spec.
- **update_a_hourtick_chat_message_by_id** — Edit the text of your own chat message in Hourtick by id. Returns an empty 204 response on success. Required: id, body.
- **delete_a_hourtick_chat_message_by_id** — Delete a chat message and its files in Hourtick by id (allowed for the message author or managers). Returns an empty 204 response on success. Required: id.
- **list_all_hourtick_chat_messages** — List chat messages in a Hourtick channel. Returns up to 50 top-level messages, newest last, each with id, body, parentId, refs, and created_at. Required: channel_id.
- **create_a_hourtick_chat_message** — Post a message to a Hourtick chat channel. Returns the created message with id, body, parentId, attachmentIds, refs, and created_at. Max 20000 characters; up to 20 attachmentIds; mentioning an agent queues a session. Required: channel_id, body.
- **create_a_hourtick_chat_typing** — Send a typing indicator in an hourtick chat channel; the indicator is shown for 5 seconds. Returns an empty 204 response on success. Required: channelId.
- **hourtick_chats_search** — Search Hourtick chat messages with a full-text query, returning only messages visible to you. Returns an opaque JSON object of matching message results; the upstream schema does not enumerate the result fields. Required: q.
- **list_all_hourtick_presences** — List Hourtick presence: who's online, what they're tracking (if they share it), and which agents are connected. Returns the presence snapshot as an untyped JSON object; the upstream API spec does not enumerate its fields.
- **list_all_hourtick_agents** — List the AI agents in your Hourtick workspace. Returns each agent's provider, model, skills, access, and canUse (whether you may ask it).
- **create_a_hourtick_agent** — Create a new AI agent in Hourtick (admins only). Returns the created agent — provider, model, skills, access, canUse — and its token, shown only once. Required: name.
- **update_a_hourtick_agent_by_id** — Update an AI agent in Hourtick by id: rename it, set provider, model, skills, access, scope, budgets, expiry, instructions, or webhooks. Returns webhookSecret when a new webhook is set; otherwise an empty 204 response on success. Required: id.
- **create_a_hourtick_work_item_dependency** — Create a work item dependency in hourtick: mark this work item as blocked by another (type `blocked_by`) or as blocking another (type `blocks`). Returns a JSON object whose fields are not enumerated upstream. Refuses self-references, dependency loops, and more than 50 blockers; a blocked work item can't move to in progress, review, or done until its…. Required: work_item_id, type, workItemId.
- **hourtick_work_item_dependencies_bulk_delete** — Delete a work item dependency in hourtick by removing the `blocked_by` or `blocks` relation between two work items; a work item with no open blockers left unlocks. Returns a JSON object whose fields are not enumerated upstream. Required: work_item_id, type, workItemId.
- **list_all_hourtick_agent_instructions** — List an agent's instructions in hourtick, including every earlier version. Returns an untyped object of the agent's instructions and version history; its field-level shape is not specified upstream. Owner or admins only. Required: agent_id.
- **create_a_hourtick_agent_webhook** — Run a webhook action for an agent in hourtick: `test` sends a signed agent.ping to the agent's webhook and returns the status it received, while `rotate` issues a new signing secret that is shown only once. Returns an action-dependent JSON object whose fields are not documented (test reports the ping outcome, rotate returns the secret). Required: agent_id, action.
- **list_all_hourtick_agent_requests** — List agent requests for new agents in Hourtick: admins see all requests, other users see only their own. Returns an opaque JSON object; the upstream API does not document its response fields.
- **create_a_hourtick_agent_request** — Create an agent request in Hourtick asking the admins for a new agent. Returns the created request with id, name, provider, model, skills, and created_at. Required: name.
- **update_a_hourtick_agent_request_by_id** — Approve or decline an agent request in Hourtick by id; approving creates the requested agent owned by you without a token. Returns an opaque JSON object; the upstream API does not document its response fields. Required: id, approve.
- **create_a_hourtick_agent_token** — Create a new token for a specific hourtick agent, replacing the agent's existing token. Returns: token. Required: agent_id.
- **get_single_hourtick_agent_session_by_id** — Get an agent session in hourtick by id. Returns the session object with its status, steps, answer and reported tokens and cost, plus the helpers array of sessions it delegated to. Required: id.
- **hourtick_agent_sessions_cancel** — Cancel an agent session in hourtick, stopping the agent's work and every helper it delegated to. Returns an empty 204 response on success. Required: agent_session_id.
- **create_a_hourtick_delegation** — Delegate work to a Hourtick agent by name, either against an existing task (workItemId), as a new task (title), or as a quick request with instructions alone. Returns the created agent session. Rejected on unknown agent, too-deep or looping delegation chains, or a full agent queue. Required: agent, instructions.
- **create_a_hourtick_workspace** — Create a new Hourtick workspace that you own, seeded with a starter client, project and task types; you stay in your current workspace until you switch. Returns an empty 201 response on success. Requires name (1-80 characters). Maximum 20 owned workspaces. Required: name.
- **list_all_hourtick_connected_apps** — List the apps connected to Hourtick over OAuth (ChatGPT, Claude and similar) that act as you in your default workspace. Returns the connected-apps payload including each app's clientId, the identifier to pass as id when disconnecting an app.
- **delete_a_hourtick_connected_app_by_id** — Disconnect an app connected to Hourtick over OAuth; its access tokens stop working at once. Returns an empty 204 response on success. Required: id.
- **create_a_hourtick_work_item_delegate** — Delegate a Hourtick work item to an agent — hands the task to the agent while the people on it stay responsible. Requires work_item_id and agentId. Returns a 201 confirmation response; the API does not enumerate the response body fields. Required: work_item_id, agentId.
- **list_all_hourtick_work_item_agent_sessions** — List the agent sessions for a Hourtick work item, with each session's activity on the task. Returns a JSON payload whose fields the Hourtick API reference does not enumerate. Required: work_item_id.
- **list_all_hourtick_activities** — Get your day's activity from Hourtick — tracked time entries plus what you did that day (tasks created, moved or commented on, chat messages per channel, agent requests) — for drafting a timesheet. Returns a single day-summary object (attributes) whose exact fields are activity-specific and not enumerated in the upstream spec.
- **list_all_hourtick_reports_agents** — Get Hourtick's agent usage report for a date range: how long agents worked on requests, tokens used and reported cost in USD, broken down by agent and project. Time agents log also appears as its own rows in the normal reports. Returns the report as a JSON object; the upstream spec does not enumerate its fields. Required: from, to.
- **create_a_hourtick_task** — Create a new task type in Hourtick (admins). Returns the created task type including id, name, and billable. Requires name (1–200 characters). Required: name.
- **update_a_hourtick_task_by_id** — Update an existing task type in Hourtick (admins) by id. Returns the updated task type including id, name, billable, and archived. Required: id.
- **create_a_hourtick_chat_message_task** — Turn a chat message into a task in Hourtick; a reply is posted in the thread linking back to the new task. Returns the created task (a Hourtick WorkItem) in the item field. Required: message_id.
- **create_a_hourtick_work_item_attachment** — Upload a file attachment to a Hourtick work item. Returns the created attachment object including its id, created_at, and updated_at; link the file into the task by posting a comment with its id. Files up to 25 MB. Required: work_item_id.
- **create_a_hourtick_chat_message_reaction** — Toggle an emoji reaction on a Hourtick chat message. Returns an empty 204 response on success. Required: message_id, emoji.
- **create_a_hourtick_chat_channel_member** — Add people and AI agents as members of a Hourtick chat channel. Returns an empty 204 response on success. Required: channel_id.
- **create_a_hourtick_channel_file** — Upload a file to a Hourtick chat channel as a multipart attachment. Returns the uploaded file's id, which you then pass in `attachmentIds` when posting a message to the channel. Files up to 25 MB; uploads pause once this month's usage is used up. Required: channel_id.
- **create_a_hourtick_channel_join** — Join a public chat channel in hourtick by its UUID. Returns an empty 204 response on success. Required: channel_id.
- **create_a_hourtick_channel_leaf** — Leave a channel in hourtick. Returns an empty 204 response on success. Required: channel_id.
- **create_a_hourtick_channel_read** — Mark a chat channel as read in hourtick. Returns an empty 204 response on success. Required: channel_id.
- **hourtick_channel_preferences_bulk_update** — Update your notification preferences for a chat channel in hourtick. `muteAll: true` stops `@all` from mentioning you in this channel while direct mentions still reach you. Returns an empty 204 response on success. Required: channel_id, muteAll.
- **list_all_hourtick_agent_events** — List a Hourtick agent's activity log together with this month's usage against its budget. Returns a JSON object combining the activity log with current-month budget usage; the API spec does not enumerate the response fields. Required: agent_id.
- **create_a_hourtick_workspace_switch** — Switch the signed-in device to another hourtick workspace you are a member of and make it the default. Returns: workspaceId, role. Applies to sign-in sessions only; API and agent tokens stay in their own workspace. Required: workspaceId.

## How it works

1. **Link your customer's Hourtick 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 Hourtick.** The Proxy API is a 1-to-1 mapping of the Hourtick 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

- **Unify human and AI labor costs in billing workflows** — Accounting and invoicing platforms can pull approved timesheets alongside AI agent token costs from Hourtick to generate itemized invoices that show clients exactly what humans delivered versus what AI agents consumed on each project.
- **Log AI agent costs from external bot platforms** — AI builder and orchestration platforms can register their bots as first-class Hourtick agents and push per-task token usage and compute costs into the client's project ledger, so end customers see unified P&L inside Hourtick.
- **Embed time tracking and AI delegation inside helpdesks and CRMs** — Support and CRM products can let agents start timers, log work items, or delegate tickets to Hourtick AI agents directly from their ticket UI, with all time and token costs linked back to the originating CRM record.
- **Mirror tasks between external PM tools and Hourtick** — Project management SaaS can push issues and tickets into Hourtick as work items so hybrid teams can track time against them, then pull time entries back to keep both systems in sync.
- **Power AI ROI and agent efficiency dashboards** — BI and analytics platforms can ingest Hourtick's agent outcome and cost reconciliation reports to show leaders which models are saving money and which are driving excessive human rework.

## What you can build

- **Hybrid human + AI invoicing** — Pull approved timesheets, member cost rates, and agent cost ledgers to auto-generate invoices itemizing human hours and AI token spend per project.
- **Two-way work item sync** — Create and update Hourtick work items from external tickets and use work item links to maintain bidirectional references with your source system.
- **Agent cost ingestion pipeline** — Register external bots as Hourtick agents and stream per-task token usage into Hourtick's agent cost ledger as workflows complete.
- **Embedded timer controls** — Use idempotent Hourtick commands to safely start, stop, and switch timers from browser extensions, desktop widgets, or in-app buttons without duplicate state.
- **Live activity and timesheet feed** — Subscribe to Hourtick streams to render real-time timer status, task updates, and presence inside your product without polling.
- **Client-ready AI transparency reports** — Fetch pre-built client AI reports to show end customers a breakdown of human vs. AI contribution on each engagement directly inside your dashboard.

## FAQs

### How is authentication handled for Hourtick connections?

Truto manages the full auth lifecycle for Hourtick on your behalf, so your end users connect their Hourtick workspace through a hosted flow and your product receives a ready-to-use connection without you handling credentials or token refresh.

### Can we track AI agent token costs alongside human time?

Yes. Hourtick exposes agent cost endpoints for creating and listing per-task token usage and USD cost, which can be combined with time entries and member cost rates to produce unified human + AI cost views.

### How do we keep data fresh without aggressive polling?

Hourtick provides a streams endpoint that delivers live events for timers, work items, and activity, letting you maintain near real-time sync in your product instead of polling list endpoints.

### Can we safely trigger timer start/stop from an external UI?

Yes. Hourtick's command endpoint is idempotent, so timer actions issued from browser extensions, desktop apps, or embedded widgets won't double-fire if a request is retried over a flaky network.

### What project management operations are supported?

You can create, update, and delete work items, manage comments, checklists, attachments, dependencies, and task views, and link Hourtick work items to external records via work item links for bidirectional sync.

### Can we pull approved timesheets for payroll or invoicing?

Yes. Timesheets, approvals, member cost rates, and invoicing endpoints are all available, so you can ingest only approved hours and apply the correct rates when pushing data to billing or payroll systems.

## Related reading

- [Connect Hourtick to Claude: Sync Reports and Collaborate in Chat](https://truto.one/blog/connect-hourtick-to-claude-sync-reports-and-collaborate-in-chat/) — Learn how to connect Hourtick to Claude using a managed MCP server. This guide covers bypassing API complexities, handling idempotent time tracking, and automating team workflows.
- [Connect Hourtick to ChatGPT: Track Time and Manage Workspace Tasks](https://truto.one/blog/connect-hourtick-to-chatgpt-track-time-and-manage-workspace-tasks/) — Learn how to connect Hourtick to ChatGPT using a managed MCP server. Track time, bulk-update entries, and manage workspace tasks with natural language.
- [Connect Hourtick to AI Agents: Delegate Work and Audit Agent Costs](https://truto.one/blog/connect-hourtick-to-ai-agents-delegate-work-and-audit-agent-costs/) — Learn how to connect Hourtick to AI Agents using Truto's /tools endpoint and SDK. Build autonomous workflows to delegate tasks, track time, and audit AI costs.
