| name | clockify |
| description | Clockify is a time tracking and timesheet platform that enables teams and businesses to record work hours, manage projects, track billable time, and analyze productivity through web, mobile, and API-based integrations for reporting, payroll, and workflow automation. Read and write Clockify data through One: timeentries, workspaces, invoices, approvalrequests, webhooks, timeoffrequests and more, 155 actions with real parameter documentation. Use whenever the user asks to look something up in Clockify, create or update a record there, or build code against the Clockify API. |
Clockify through One
Clockify is a time tracking and timesheet platform that enables teams and businesses to record work hours, manage projects, track billable time, and analyze productivity through web, mobile, and API-based integrations for reporting, payroll, and workflow automation.
One exposes Clockify through four MCP tools. The table below carries real action ids from One's knowledge base, so for a common operation you can skip search and go straight to reading the action's parameters.
How to run an action
- Find the action in the table below, or call
search_one_platform_actions with platform clockify if it is not listed.
- Call
get_one_action_knowledge with the action id. Do this every time, including for actions in this table. The table gives you the id, not the parameters.
- Call
execute_one_action with parameters copied from that knowledge.
Never guess a parameter name, a body field, or an enum value. The knowledge has the real schema, and a guessed field is either a 400 or a silent write of the wrong thing.
Before you start
Call list_one_integrations once and confirm Clockify is connected. If it is missing, the user has not connected it: say so and point them at https://app.withone.ai rather than reaching for raw HTTP.
Each connection carries an access field. If it reports {"policy": "methods", "methods": ["GET"]} the agent is read-only here, so plan a read-only answer instead of attempting a write that will be refused.
Before a write
Creates, updates, deletes and sends land on a real Clockify account and cannot be recalled. State the action and the specific target in one line before the first write in a task, and let the user stop you. Reads need no confirmation.
Actions
TimeEntries
| Action | Method | Path | Action id |
|---|
| Get a Specific Workspace Time Entry | GET | /api/v1/workspaces/{{workspaceId}}/time-entries/{{id}} | conn_mod_def::GLSyN3WF5Hg::Ig7ZV7r2QYuLoxPgdRPLpQ |
| Get Time Entries for a User on a Workspace | GET | /api/v1/workspaces/{{workspaceId}}/user/{{userId}}/time-entries | conn_mod_def::GLSyOCPsd-g::y0O4Ln8-R_OScvJgjfzXrg |
| Add a New Time Entry for a Workspace | POST | /api/v1/workspaces/{{workspaceId}}/time-entries | conn_mod_def::GLSyNeCAClg::XKjjIVypSluVa0YVS96bGg |
| Bulk Edit Time Entries for a Workspace User | PUT | /api/v1/workspaces/{{workspaceId}}/user/{{userId}}/time-entries | conn_mod_def::GLSyNe-y1VA::ynaqotDcTmGvP_1UuSSGUQ |
| Delete a User's Time Entries in a Workspace | DELETE | /api/v1/workspaces/{{workspaceId}}/user/{{userId}}/time-entries | conn_mod_def::GLSyNtutrRg::ZhIegOMoRcaa3-K_d5jPGQ |
| Delete a Workspace Time Entry | DELETE | /api/v1/workspaces/{{workspaceId}}/time-entries/{{id}} | conn_mod_def::GLSyNeJxkYg::pvUB31-lSXSbLi-3yDGzeA |
| Stop a User's Running Timer in a Workspace | PATCH | /api/v1/workspaces/{{workspaceId}}/user/{{userId}}/time-entries | conn_mod_def::GLSyOKrLlVA::jPl-pvzMTiSPVHRH5hMa6A |
| Update a Workspace Time Entry | PUT | /api/v1/workspaces/{{workspaceId}}/time-entries/{{id}} | conn_mod_def::GLSyOK0T33A::byK0f8imSjWfU1e0TuoZ-g |
Workspaces
| Action | Method | Path | Action id |
|---|
| Get My Workspaces | GET | /api/v1/workspaces | conn_mod_def::GLSyJA7hPrA::GeWgXWr0Rte1e8nHv1CjjA |
| Get Workspace Info | GET | /api/v1/workspaces/{{workspaceId}} | conn_mod_def::GLSyJByLF-g::VnmAfntDQbmvwlDuSeQkwA |
| Add a Workspace | POST | /api/v1/workspaces | conn_mod_def::GLSyImIiA2g::2tG7_L66QlOeYufiTUA3bw |
| Add User to a Workspace | POST | /api/v1/workspaces/{{workspaceId}}/users | conn_mod_def::GLSyI33XOYg::uzlbGeQ8TLuf6_AlDxirjA |
| Update Workspace Billable Rate | PUT | /api/v1/workspaces/{{workspaceId}}/hourly-rate | conn_mod_def::GLSyJcOq5wA::5EjXTcYYTtCr_qFyktlRXw |
| Update Workspace Cost Rate | PUT | /api/v1/workspaces/{{workspaceId}}/cost-rate | conn_mod_def::GLSyJcdfipA::XJBZCHEWTPqJp9GJP-KGIg |
Invoices
| Action | Method | Path | Action id |
|---|
| Get an Invoice by ID for a Workspace | GET | /api/v1/workspaces/{{workspaceId}}/invoices/{{invoiceId}} | conn_mod_def::GLSyLFm6ijg::gPjMVT6uS02NLXWoFswE1A |
| Add an Invoice for a Workspace | POST | /api/v1/workspaces/{{workspaceId}}/invoices | conn_mod_def::GLSyKtt_eyA::peFHhxOjQj2aHQ0gHPNyhQ |
| Add Item to an Invoice | POST | /api/v1/workspaces/{{workspaceId}}/invoices/{{invoiceId}}/items | conn_mod_def::GLSyKu2YZng::GD3ZtaDUS5aEcElhFlGUTw |
| Delete an Invoice in a Workspace | DELETE | /api/v1/workspaces/{{workspaceId}}/invoices/{{invoiceId}} | conn_mod_def::GLSyK3syfeg::pW7x-4ORRGiQQMwUtePGAg |
| Delete an Invoice Item in a Workspace | DELETE | /api/v1/workspaces/{{workspaceId}}/invoices/{{invoiceId}}/items/{{order}} | conn_mod_def::GLSyK39EdBg::kJNIoVK1QGm2OqlXBPKTnA |
| Filter Out Invoices for a Workspace | POST | /api/v1/workspaces/{{workspaceId}}/invoices/info | conn_mod_def::GLSyLG4ENFg::rS-AdcFbSOOD49xGHosayw |
ApprovalRequests
| Action | Method | Path | Action id |
|---|
| Get Approval Requests for a Workspace | GET | /api/v1/workspaces/{{workspaceId}}/approval-requests | conn_mod_def::GLSyIZjm99g::Z-t25tC4Q_OWETc-leDbtA |
| Resubmit Entries for Approval | POST | /api/v1/workspaces/{{workspaceId}}/approval-requests/resubmit-entries-for-approval | conn_mod_def::GLSyIK_5IZA::JRZkzfRDRWCowpAnKchALA |
| Submit an Approval Request for a User | POST | /api/v1/workspaces/{{workspaceId}}/approval-requests/users/{{userId}} | conn_mod_def::GLSyIeXlZvA::gI8mtjBmRtWgPYKsZozi3A |
| Submit Approval Request for a Workspace | POST | /api/v1/workspaces/{{workspaceId}}/approval-requests | conn_mod_def::GLSyIIXxcRg::OImWADYLQQiwiY2CB6luag |
| Update an Approval Request | PATCH | /api/v1/workspaces/{{workspaceId}}/approval-requests/{{approvalRequestId}} | conn_mod_def::GLSyImZOQCg::8PPOz8qhSwS383zzqftiBQ |
Webhooks
| Action | Method | Path | Action id |
|---|
| Get a Webhook by ID for a Workspace | GET | /api/v1/workspaces/{{workspaceId}}/webhooks/{{webhookId}} | conn_mod_def::GLSyO2g6elA::9VpwRFvQQsenFCURAyfX8w |
| List a Workspace's Webhooks | GET | /api/v1/workspaces/{{workspaceId}}/webhooks | conn_mod_def::GLSyPCvqYRg::rfhYuchnRUWyd0apPrlJBA |
| Create a Webhook for a Workspace | POST | /api/v1/workspaces/{{workspaceId}}/webhooks | conn_mod_def::GLSyOstGZMA::De4EMaFlQgK4917yhwp_ig |
| Delete a Workspace Webhook | DELETE | /api/v1/workspaces/{{workspaceId}}/webhooks/{{webhookId}} | conn_mod_def::GLSyOszw2KA::B633QgQvQj6IFUxLsIfILQ |
| Generate a New Webhook Token | PATCH | /api/v1/workspaces/{{workspaceId}}/webhooks/{{webhookId}}/token | conn_mod_def::GLSyOtdu9Sg::wLa0QaJORyWLM1E3c0ic0g |
TimeOffRequests
| Action | Method | Path | Action id |
|---|
| Change Time Off Request Status | PATCH | /api/v1/workspaces/{{workspaceId}}/time-off/policies/{{policyId}}/requests/{{requestId}} | conn_mod_def::GLSyOLXBrLA::jvv3AktnQRe99vPCOMMiRg |
| Create a Time Off Request for a Workspace Policy | POST | /api/v1/workspaces/{{workspaceId}}/time-off/policies/{{policyId}}/requests | conn_mod_def::GLSyOLCbf5A::xaPc9oeaSeuigbQ06IwuLA |
| Create a User Time Off Request for a Policy in a Workspace | POST | /api/v1/workspaces/{{workspaceId}}/time-off/policies/{{policyId}}/users/{{userId}}/requests | conn_mod_def::GLSyOPNktkg::eI_190wvRW-c-j2W4IP9Bw |
| Delete a Time Off Request | DELETE | /api/v1/workspaces/{{workspaceId}}/time-off/policies/{{policyId}}/requests/{{requestId}} | conn_mod_def::GLSyOXdekfg::Swk7pYkGRyyM43WG5VGvLA |
| Get All Time Off Requests on a Workspace | POST | /api/v1/workspaces/{{workspaceId}}/time-off/requests | conn_mod_def::GLSyOYa9eeg::Kdrorgo6QOCuudftX1qX5g |
Holidays
| Action | Method | Path | Action id |
|---|
| Get Holidays for a Workspace | GET | /api/v1/workspaces/{{workspaceId}}/holidays | conn_mod_def::GLSyKkYOCOA::1IzAkuafRNy0zP6l59brdw |
| Get Holidays in a Workspace for a Specific Period | GET | /api/v1/workspaces/{{workspaceId}}/holidays/in-period | conn_mod_def::GLSyKlide_g::J2bl7a9RTGGWuUcDrd5AKA |
| Create a Holiday in a Workspace | POST | /api/v1/workspaces/{{workspaceId}}/holidays | conn_mod_def::GLSyKkJAxKA::C7jkxXORQ-28tXIr_zZ4pg |
| Delete a Workspace Holiday | DELETE | /api/v1/workspaces/{{workspaceId}}/holidays/{{holidayId}} | conn_mod_def::GLSyKkApDBg::xPTVMXBHRrm1fuKryHbnTA |
Expenses
| Action | Method | Path | Action id |
|---|
| Get All Expenses on a Workspace | GET | /api/v1/workspaces/{{workspaceId}}/expenses | conn_mod_def::GLSyKPKKpQg::OT5F0QbUQWqnTWsqHSuz6A |
| Create an Expense in a Workspace | POST | /api/v1/workspaces/{{workspaceId}}/expenses | conn_mod_def::GLSyKFCQZag::QlF7frDBQviTxd_5R-HMlw |
| Delete an Expense in a Workspace | DELETE | /api/v1/workspaces/{{workspaceId}}/expenses/{{expenseId}} | conn_mod_def::GLSyKEVxRmA::z85i7LudSjeJoZOhFxUIpg |
| Update an Expense in a Workspace | PUT | /api/v1/workspaces/{{workspaceId}}/expenses/{{expenseId}} | conn_mod_def::GLSyKOAiq2g::V7t-nPx3SqeGFIBeReeRjQ |
WorkspaceUsers
| Action | Method | Path | Action id |
|---|
| List Workspace Users | GET | /api/v1/workspaces/{{workspaceId}}/users | conn_mod_def::GLSyOa27UXg::slLcot8wTAKoQHnB4T0lnw |
| Filter Workspace Users | POST | /api/v1/workspaces/{{workspaceId}}/users/info | conn_mod_def::GLSyOYGKQPA::62NR3QViQ3WVQTyMFC18aw |
| Remove a User from a Workspace | DELETE | /api/v1/workspaces/{{workspaceId}}/users/{{userId}} | conn_mod_def::GLSyJT-uSEg::eoQfiZqTRl6f8uYvW_HMEA |
| Update a User's Status in a Workspace | PUT | /api/v1/workspaces/{{workspaceId}}/users/{{userId}} | conn_mod_def::GLSyJTapJ5A::dYtg6qsESKmVvcHqR3_AUA |
Tags
| Action | Method | Path | Action id |
|---|
| Find Tags in a Workspace | GET | /api/v1/workspaces/{{workspaceId}}/tags | conn_mod_def::GLSyM4PlvEA::TedXikQXSGuJy1xp0vVtAw |
| Add a New Tag for a Workspace | POST | /api/v1/workspaces/{{workspaceId}}/tags | conn_mod_def::GLSyMquCMnA::OLYGqSy_QZyBrBX40TssPg |
| Delete a Workspace Tag | DELETE | /api/v1/workspaces/{{workspaceId}}/tags/{{id}} | conn_mod_def::GLSyMpNKF-A::miC_FXWaRxOxmTz5oJujnw |
| Update a Workspace Tag | PUT | /api/v1/workspaces/{{workspaceId}}/tags/{{id}} | conn_mod_def::GLSyM2kHRYg::5VP8os1KQSGlzFz3TYeEVw |
Clients
| Action | Method | Path | Action id |
|---|
| Find Clients on a Workspace | GET | /api/v1/workspaces/{{workspaceId}}/clients | conn_mod_def::GLSyJpobqVA::3p_svfIMQyaFJ6aGAaf9pA |
| Create a Workspace Client | POST | /api/v1/workspaces/{{workspaceId}}/clients | conn_mod_def::GLSyJm9v8Kg::m7CGMXKPSp2dGgxjNBt9Eg |
| Update a Workspace Client | PUT | /api/v1/workspaces/{{workspaceId}}/clients/{{id}} | conn_mod_def::GLSyJ6SqO4g::JgHB0Rw4TjqNupYRl9iV7w |
WorkspaceCustomFields
| Action | Method | Path | Action id |
|---|
| Create a Workspace Custom Field | POST | /api/v1/workspaces/{{workspaceId}}/custom-fields | conn_mod_def::GLSyIpjEOCg::mFZiK9k7TmeIu1TJ-vWMQQ |
| Delete a Workspace Custom Field | DELETE | /api/v1/workspaces/{{workspaceId}}/custom-fields/{{customFieldId}} | conn_mod_def::GLSyImlLX0A::D-I9MzxCQg6j24sRzZOQuQ |
| Update a Workspace Custom Field | PUT | /api/v1/workspaces/{{workspaceId}}/custom-fields/{{customFieldId}} | conn_mod_def::GLSyJdNrBag::QZ9kBoPkSyWTLrGhey8MXA |
Users
| Action | Method | Path | Action id |
|---|
| Find a User's Team Managers | GET | /api/v1/workspaces/{{workspaceId}}/users/{{userId}}/managers | conn_mod_def::GLSyOku8cgg::KDfEbPZJQLms8RpgjVHYEA |
| Update a User's Cost Rate | PUT | /api/v1/workspaces/{{workspaceId}}/users/{{userId}}/cost-rate | conn_mod_def::GLSyJTVRfwA::Bu_KPAReTjaYWdN9NOxPqg |
| Update a User's Hourly Rate in a Workspace | PUT | /api/v1/workspaces/{{workspaceId}}/users/{{userId}}/hourly-rate | conn_mod_def::GLSyJTtw8KA::VrhTEwehT0SibkF2gZjgew |
RecurringAssignments
| Action | Method | Path | Action id |
|---|
| Create a Recurring Assignment for a Workspace | POST | /api/v1/workspaces/{{workspaceId}}/scheduling/assignments/recurring | conn_mod_def::GLSyMPjDaZg::lLxUTWUiQK62nQ7saWMRJQ |
| Delete a Recurring Assignment in a Workspace | DELETE | /api/v1/workspaces/{{workspaceId}}/scheduling/assignments/recurring/{{assignmentId}} | conn_mod_def::GLSyL8PjjxA::8fsQSIZ5RpeUzDt59tZaMQ |
| Update a Recurring Assignment in a Workspace | PATCH | /api/v1/workspaces/{{workspaceId}}/scheduling/assignments/recurring/{{assignmentId}} | conn_mod_def::GLSyMt2QveA::-CJK8IkZTAqXHdD_LGk6dg |
Tasks
| Action | Method | Path | Action id |
|---|
| Find Tasks on a Project | GET | /api/v1/workspaces/{{workspaceId}}/projects/{{projectId}}/tasks | conn_mod_def::GLSyNI-1NtA::PQR3R85lTxCGuM4SVU33mw |
| Create a Task for a Project in a Workspace | POST | /api/v1/workspaces/{{workspaceId}}/projects/{{projectId}}/tasks | conn_mod_def::GLSyM7eT0pg::Wo-jDs64Qhq4oLNtKz562w |
| Update Task Cost Rate | PUT | /api/v1/workspaces/{{workspaceId}}/projects/{{projectId}}/tasks/{{id}}/cost-rate | conn_mod_def::GLSyND8Dh6A::YHBYPYAXRcW7DOAkEl6-tg |
Balances
| Action | Method | Path | Action id |
|---|
| Get Balance for a User | GET | /api/v1/workspaces/{{workspaceId}}/time-off/balance/user/{{userId}} | conn_mod_def::GLSyJeis_jA::pqN0jhVVTHGyaDvIVJh2lg |
| Get Balances for a Policy in a Workspace | GET | /api/v1/workspaces/{{workspaceId}}/time-off/balance/policy/{{policyId}} | conn_mod_def::GLSyJew1_eA::6nvQbGR8SWuwo5nZkqWH8g |
Projects
| Action | Method | Path | Action id |
|---|
| Create a Workspace Project | POST | /api/v1/workspaces/{{workspaceId}}/projects | conn_mod_def::GLSyLZKYPoA::lPMhRnxTQEispnfSomku1Q |
| Remove a Custom Field from a Project | DELETE | /api/v1/workspaces/{{workspaceId}}/projects/{{projectId}}/custom-fields/{{customFieldId}} | conn_mod_def::GLSyJBF8wYA::ZI-ncBsnSY2wgizSBA-t-Q |
ProjectCustomFields
| Action | Method | Path | Action id |
|---|
| Get Project Custom Fields | GET | /api/v1/workspaces/{{workspaceId}}/projects/{{projectId}}/custom-fields | conn_mod_def::GLSyJJdvjtA::P905MvF7SZq9zZi21cncdw |
| Update a Project Custom Field Using Workspace, Project, and Custom Field IDs | PATCH | /api/v1/workspaces/{{workspaceId}}/projects/{{projectId}}/custom-fields/{{customFieldId}} | conn_mod_def::GLSyJTZOGvg::vAJ3ubAPSf-SPA0gJTh8Mg |
ExpenseCategories
| Action | Method | Path | Action id |
|---|
| Get Expense Categories for a Workspace | GET | /api/v1/workspaces/{{workspaceId}}/expenses/categories | conn_mod_def::GLSyKQ6ItMA::ZvN8MdapTPyza4O7pg1r5w |
| Delete an Expense Category in a Workspace | DELETE | /api/v1/workspaces/{{workspaceId}}/expenses/categories/{{categoryId}} | conn_mod_def::GLSyKFjXCMA::x5-B4v6fSY6F7MlWG6qi4w |
ProjectAssignmentTotals
| Action | Method | Path | Action id |
|---|
| Get Project Assignment Totals for a Workspace | GET | /api/v1/workspaces/{{workspaceId}}/scheduling/assignments/projects/totals | conn_mod_def::GLSyMeo6VrA::P0A6x6JGRkeqOFSmeeZINg |
| Get Project Assignment Totals for a Workspace | POST | /api/v1/workspaces/{{workspaceId}}/scheduling/assignments/projects/totals | conn_mod_def::GLSyMeystkA::Ez76N1n7Tki0_kaUjgLWXQ |
MemberProfile
| Action | Method | Path | Action id |
|---|
| Get a Member's Profile in a Workspace | GET | /api/v1/workspaces/{{workspaceId}}/member-profile/{{userId}} | conn_mod_def::GLSyOjE2oqA::FwTXXKdhRNOiPdAJYW-weA |
| Update a Member's Profile Using Workspaces Member Profile | PATCH | /api/v1/workspaces/{{workspaceId}}/member-profile/{{userId}} | conn_mod_def::GLSyOuR7JwA::0DnihdIMTPauwoU1qXJ8Zg |
UpdatedEntities
| Action | Method | Path | Action id |
|---|
| Get Updated Entities for a Workspace | GET | /api/v1/workspaces/{{workspaceId}}/entities/updated | conn_mod_def::GLSyJ7ljqvA::qwbSTWsST8uj2UFqMQR_AA |
TimeOffPolicies
| Action | Method | Path | Action id |
|---|
| Change a Time-off Policy Status in a Workspace | PATCH | /api/v1/workspaces/{{workspaceId}}/time-off/policies/{{id}} | conn_mod_def::GLSyLPrhulg::q4p7OPsyTJ2k5QS2F6tvrA |
UserGroups
| Action | Method | Path | Action id |
|---|
| List User Groups for a Workspace | GET | /api/v1/workspaces/{{workspaceId}}/user-groups | conn_mod_def::GLSyKcdqqYA::pWzsCPqWRvmmIbROxzwB1Q |
InvoicePayments
| Action | Method | Path | Action id |
|---|
| Add Payment to an Invoice in a Workspace | POST | /api/v1/workspaces/{{workspaceId}}/invoices/{{invoiceId}}/payments | conn_mod_def::GLSyKtnzn0g::FrNO0u7lTCmFXMO4erfLvQ |
CustomFields
| Action | Method | Path | Action id |
|---|
| Get Custom Fields on a Workspace | GET | /api/v1/workspaces/{{workspaceId}}/custom-fields | conn_mod_def::GLSyJLGT-KA::7z7kc1PbRxK6pmFrlrpBeg |
DeletedEntities
| Action | Method | Path | Action id |
|---|
| Get Deleted Entities for a Workspace | GET | /api/v1/workspaces/{{workspaceId}}/entities/deleted | conn_mod_def::GLSyJ6F139A::HHQoQ1hFS0Gqu2ssm7d0fg |
WorkspaceWebhooks
| Action | Method | Path | Action id |
|---|
| Update a Workspace Webhook | PUT | /api/v1/workspaces/{{workspaceId}}/webhooks/{{webhookId}} | conn_mod_def::GLSyO2ljeZA::_HeR_mvAQsuuXls2dxOTuA |
UserRoles
| Action | Method | Path | Action id |
|---|
| Give a User a Manager Role in a Workspace | POST | /api/v1/workspaces/{{workspaceId}}/users/{{userId}}/roles | conn_mod_def::GLSyOk91FQg::kc6KdAr7QD-nwn6EMZ1jGw |
User
| Action | Method | Path | Action id |
|---|
| Get the Current Logged-In User's Info | GET | /user | conn_mod_def::GLSyOj4s5zA::X7yJ21t6TA-NxFmVx1NOrQ |
WorkspaceAssignmentSeries
| Action | Method | Path | Action id |
|---|
| Change the Recurring Period for a Workspace Assignment Series | PUT | /api/v1/workspaces/{{workspaceId}}/scheduling/assignments/series/{{assignmentId}} | conn_mod_def::GLSyL7sHvJA::6NdiFIJcTDKt6m4xNqwyXA |
WorkspaceUserTotals
| Action | Method | Path | Action id |
|---|
| Get User Totals for a Workspace User | GET | /api/v1/workspaces/{{workspaceId}}/scheduling/assignments/users/{{userId}}/totals | conn_mod_def::GLSyMhxjfqA::nWQQtIB1TiGsuopiDJY7FA |
ProjectTotals
| Action | Method | Path | Action id |
|---|
| Get Project Totals for a Single Project | GET | /api/v1/workspaces/{{workspaceId}}/scheduling/assignments/projects/totals/{{projectId}} | conn_mod_def::GLSyMcQDOiA::a2nQ6HaySAShOe4zJ16WgQ |
This lists 90 of 155 actions. For anything not here, call search_one_platform_actions with platform clockify. The full catalog is at https://www.withone.ai/knowledge/clockify.
When a call fails
The error comes from Clockify, not from One. A 400 or 422 means your parameters do not match the schema, so re-read the knowledge and fix the field. A 401 or 403 means the connection needs re-authorizing, which no retry will fix. A 404 means the id is not on this account. A 429 means slow down. Never retry a write more than once: the first attempt may have landed.
Full catalog: https://www.withone.ai/knowledge/clockify
Integration knowledge by One (withone.ai), licensed under One-Knowledge-1.0. Attribution must be preserved in derivative works.