Harvest
Also an agent toolHarvest time tracking & invoicing automation across the Harvest API v2: clients, contacts, projects, tasks, task/user assignments, time entries (CRUD + start/stop/restart), expenses + categories, invoices (+ line items, payments, messages), estimates (+ line items, messages), users (+ cost/billable rates), roles, company. Multi-header api_key auth (Authorization: Bearer + Harvest-Account-Id + static User-Agent; ADR-032 extra_headers). No native webhooks — polling trigger via updated_since (see compatibility.md harvest-02/03).
87 actions · 4 triggers
The Harvest integration lets you connect Harvest to your automations with 87 actions and 4 triggers — and every action is also a tool an AI agent can call. Examples: List Clients, Get Client, Create Client, Update Client, Delete Client. No blank-canvas wiring — connect it and use it in your workflows.
Every action below is also a tool an AI agent can call — the same pack powers your workflows and your agents.
Triggers 4
Events in Harvest that can start a workflow.
New or updated client
Polls /v2/clients for clients updated since the last run.
List Projects
List projects (GET /projects)
New or updated time entry
Polls /v2/time_entries for entries updated since the last run.
List Invoice Payments
List payments for an invoice (GET /invoices/{invoice_id}/payments)
Actions 87
What Zervanor can do in Harvest.
Projects15
List Projects
List projects (GET /projects)
Get Project
Retrieve a project by id (GET /projects/{project_id})
Create Project
Create a project (POST /projects)
Update Project
Update a project (PATCH /projects/{project_id})
Delete Project
Delete a project (DELETE /projects/{project_id})
List Project Task Assignments
List task assignments for a project (GET /projects/{project_id}/task_assignments)
Get Task Assignment
Retrieve a project task assignment (GET /projects/{project_id}/task_assignments/{task_assignment_id})
Create Task Assignment
Create a project task assignment (POST /projects/{project_id}/task_assignments)
Update Task Assignment
Update a project task assignment (PATCH /projects/{project_id}/task_assignments/{task_assignment_id})
Delete Task Assignment
Delete a project task assignment (DELETE /projects/{project_id}/task_assignments/{task_assignment_id})
List Project User Assignments
List user assignments for a project (GET /projects/{project_id}/user_assignments)
Get User Assignment
Retrieve a project user assignment (GET /projects/{project_id}/user_assignments/{user_assignment_id})
Create User Assignment
Create a project user assignment (POST /projects/{project_id}/user_assignments)
Update User Assignment
Update a project user assignment (PATCH /projects/{project_id}/user_assignments/{user_assignment_id})
Delete User Assignment
Delete a project user assignment (DELETE /projects/{project_id}/user_assignments/{user_assignment_id})
Users12
List Users
List users (GET /users)
Get Current User
Retrieve the currently authenticated user (GET /users/me) — safe identity check
Get User
Retrieve a user by id (GET /users/{user_id})
Create User
Create a user (POST /users) — Admin only; first_name, last_name, email required
Update User
Update a user (PATCH /users/{user_id})
Delete User
Delete a user (DELETE /users/{user_id})
List User Billable Rates
List billable rates for a user (GET /users/{user_id}/billable_rates)
Get User Billable Rate
Retrieve a user billable rate (GET /users/{user_id}/billable_rates/{billable_rate_id})
Create User Billable Rate
Create a billable rate for a user (POST /users/{user_id}/billable_rates) — amount required
List User Cost Rates
List cost rates for a user (GET /users/{user_id}/cost_rates)
Get User Cost Rate
Retrieve a user cost rate (GET /users/{user_id}/cost_rates/{cost_rate_id})
Create User Cost Rate
Create a cost rate for a user (POST /users/{user_id}/cost_rates) — amount required
Invoices11
List Invoices
List invoices (GET /invoices) — default per_page is 100
Get Invoice
Retrieve an invoice by id (GET /invoices/{invoice_id})
Create Invoice
Create an invoice — free-form (line_items) or from tracked time & expenses (line_items_import) (POST /invoices)
Update Invoice
Update an invoice; create/update/delete line items via line_items[] (PATCH /invoices/{invoice_id})
Delete Invoice
Delete an invoice (DELETE /invoices/{invoice_id})
List Invoice Messages
List messages for an invoice (GET /invoices/{invoice_id}/messages)
Create Invoice Message
Create & send an invoice message, or change invoice state via event_type (send | close | re-open | draft) (POST /invoices/{invoice_id}/messages)
Delete Invoice Message
Delete an invoice message (DELETE /invoices/{invoice_id}/messages/{message_id})
List Invoice Payments
List payments for an invoice (GET /invoices/{invoice_id}/payments)
Create Invoice Payment
Create an invoice payment (POST /invoices/{invoice_id}/payments) — amount required
Delete Invoice Payment
Delete an invoice payment (DELETE /invoices/{invoice_id}/payments/{payment_id})
Estimates8
List Estimates
List estimates (GET /estimates)
Get Estimate
Retrieve an estimate by id (GET /estimates/{estimate_id})
Create Estimate
Create an estimate (POST /estimates) — client_id required; line items via line_items[]
Update Estimate
Update an estimate; create/update/delete line items via line_items[] (PATCH /estimates/{estimate_id})
Delete Estimate
Delete an estimate (DELETE /estimates/{estimate_id})
List Estimate Messages
List messages for an estimate (GET /estimates/{estimate_id}/messages)
Create Estimate Message
Create & send an estimate message, or change estimate state via event_type (send | accept | decline | re-open) (POST /estimates/{estimate_id}/messages)
Delete Estimate Message
Delete an estimate message (DELETE /estimates/{estimate_id}/messages/{message_id})
Time Entries7
List Time Entries
List time entries (GET /time_entries) — recommended polling trigger source
Get Time Entry
Retrieve a time entry by id (GET /time_entries/{time_entry_id})
Create Time Entry
Create a time entry via duration or start/end time (POST /time_entries). Required: project_id, task_id, spent_date. Provide hours (duration) or started_time/ended_time.
Update Time Entry
Update a time entry (PATCH /time_entries/{time_entry_id})
Delete Time Entry
Delete a time entry (DELETE /time_entries/{time_entry_id})
Restart Time Entry
Restart a stopped time entry (PATCH /time_entries/{time_entry_id}/restart)
Stop Time Entry
Stop a running time entry (PATCH /time_entries/{time_entry_id}/stop)
Clients5
List Clients
List clients (safe identity/connectivity read — GET /clients)
Get Client
Retrieve a client by id (GET /clients/{client_id})
Create Client
Create a client (POST /clients) — only name required
Update Client
Update a client (PATCH /clients/{client_id})
Delete Client
Delete a client (DELETE /clients/{client_id})
Contacts5
List Contacts
List client contacts (GET /contacts)
Get Contact
Retrieve a contact by id (GET /contacts/{contact_id})
Create Contact
Create a client contact (POST /contacts)
Update Contact
Update a contact (PATCH /contacts/{contact_id})
Delete Contact
Delete a contact (DELETE /contacts/{contact_id})
Expense Categories5
List Expense Categories
List expense categories (GET /expense_categories)
Get Expense Category
Retrieve an expense category by id (GET /expense_categories/{expense_category_id})
Create Expense Category
Create an expense category (POST /expense_categories) — only name required
Update Expense Category
Update an expense category (PATCH /expense_categories/{expense_category_id})
Delete Expense Category
Delete an expense category (DELETE /expense_categories/{expense_category_id})
Expenses5
List Expenses
List expenses (GET /expenses)
Get Expense
Retrieve an expense by id (GET /expenses/{expense_id})
Create Expense
Create an expense via JSON body, no receipt (POST /expenses). Receipt multipart upload deferred — see compatibility.md harvest-06.
Update Expense
Update an expense via JSON body (PATCH /expenses/{expense_id}). delete_receipt boolean supported; multipart receipt upload deferred (harvest-06).
Delete Expense
Delete an expense (DELETE /expenses/{expense_id})
Roles5
List Roles
List roles (GET /roles) — Admin only
Get Role
Retrieve a role by id (GET /roles/{role_id})
Create Role
Create a role (POST /roles) — name required
Update Role
Update a role (PATCH /roles/{role_id})
Delete Role
Delete a role (DELETE /roles/{role_id})
Tasks5
List Tasks
List tasks (GET /tasks)
Get Task
Retrieve a task by id (GET /tasks/{task_id})
Create Task
Create a task (POST /tasks) — Admin/Manager only, only name required
Update Task
Update a task (PATCH /tasks/{task_id})
Delete Task
Delete a task (DELETE /tasks/{task_id})
Company2
Get Company
Retrieve the company for the authenticated account (GET /company)
Update Company
Update company settings (PATCH /company)
Task Assignments1
List All Task Assignments
List all task assignments across the company (GET /task_assignments)
User Assignments1
List All User Assignments
List all user assignments across the company (GET /user_assignments)
Nothing matches your search.
Automations using Harvest
Build your own automation with Harvest in the visual builder.
Frequently asked questions
What can I automate with Harvest?
87 actions are available — for example: List Clients, Get Client, Create Client, Update Client, Delete Client, and more.
Which Harvest events can start a workflow?
4 triggers — for example: New or updated client, List Projects, New or updated time entry, List Invoice Payments.
Can Harvest be used as an AI agent tool?
Yes. Every Harvest action automatically becomes a tool an AI agent can call — the same pack powers both your workflows and your agents.
How is the Harvest integration modelled?
Harvest is modelled as a versioned connector pack, and the steps that need reasoning fall to first-party agents hosted in the same runtime as the workflows.