• Tools
Tools
  • Tools
loading...
No Results
  • ActiveCampaign
  • Asana
  • AWS-S3
  • AWS Lambda
  • Appstore
  • Bitbucket
  • Coda
  • Code
  • ConvertKit
  • CSV
  • Crypto
  • Clockify
  • Data Shaping
  • Date & Time
  • Delay
  • DingTalk
  • Discord
  • Dropbox
  • Elastic Security
  • FeiShu
  • Freshdesk
  • Freshservice
  • Freshworks CRM
  • Github
  • Gitlab
  • Google Calendar
  • Google Developer
  • Google Drive
  • Google Gmail
  • Google Sheets
  • Grafana
  • HaloPSA
  • Hacker News
  • Harvest
  • Help Scout
  • Hubspot
  • Intercom
  • Jenkins
  • Kafka
  • MailChimp
  • Microsoft Excel
  • Monday
  • Notion
  • Odoo
  • Ortto
  • Okta
  • Paddle
  • PayPal
  • Pipedrive
  • Qdrant
  • QRCode
  • QuickBooks
  • Redis
  • Segment
  • Search&Crawl
  • ServiceNow
  • Shopify
  • Stripe
  • Text
  • Trello
  • Twilio
  • WooCommerce
  • WordPress
  • Wikipedia
  • Xml
  • Zendesk
  • Zoom
Home > Tools

Harvest

1. Overview

Harvest is a popular online tool for time tracking, invoicing, and project management, designed to help businesses and freelancers manage their projects, track time, and get paid. It provides insights into project budgets, team capacity, and overall business health.

With the GoInsight Harvest node, you can seamlessly integrate these functionalities into your automated workflows. This allows you to manage the entire lifecycle of your business operations, from client onboarding to final invoicing, directly within GoInsight. Key capabilities include:

  • Client and Contact Management: Create, retrieve, update, and delete client and contact information.
  • Project and Task Management: Automate the creation and administration of projects and their associated tasks.
  • Time and Expense Tracking: Log time entries and expenses for projects, ensuring accurate billing and budget monitoring.
  • Billing and Invoicing: Generate, update, and manage estimates and invoices for your clients.
  • User Administration: Add new users to your Harvest account and manage their details.

2. Prerequisites

Before using this node, you must have a valid Harvest account. Depending on the operations you wish to perform, you may also need administrator or project manager permissions to create and manage API credentials and access certain data.

3. Credentials

For a detailed guide on how to obtain and configure your credentials, please refer to our official documentation: Credentials Configuration Guide.

4. Supported Operations

Summary

This node provides a comprehensive set of operations to interact with various resources within your Harvest account, including Clients, Contacts, Projects, Tasks, Time Entries, Expenses, Estimates, Invoices, and Users.

Resource Operation Description
Client Create a Client Creates a new client in Harvest via the Harvest API v2.
Client Delete a Client Deletes a specific client in Harvest via the Harvest API v2.
Client Get Data of All Clients Retrieves a list of clients in Harvest via the Harvest API v2, supporting pagination and optional filters.
Client Get Data of a Client Retrieves a specific client by ID from Harvest via the Harvest API v2.
Client Update a Client Updates a specific client in Harvest via the Harvest API v2.
Company Retrieve the Company for the Currently Authenticated User Retrieves the company for the currently authenticated user via Harvest API v2.
Contact Create a Contact Creates a new contact in Harvest via the Harvest API v2.
Contact Delete a Contact Deletes a specific contact in Harvest via the Harvest API v2.
Contact Get Data of All Contacts Retrieves data of all contacts in Harvest via Harvest API v2, with optional limit and filters is_active, updated_since.
Contact Get Data of a Contact Retrieves a specific contact in Harvest via the Harvest API v2.
Contact Update a Contact Updates a specific contact in Harvest via the Harvest API v2.
Estimate Create an Estimate Creates a new estimate in Harvest via the Harvest API v2.
Estimate Delete an Estimate Deletes a specific estimate in Harvest via the Harvest API v2.
Estimate Get Data of All Estimates Retrieves data of all estimates in Harvest via Harvest API v2, with optional limit and filter updated_since.
Estimate Get Data of an Estimate Retrieves a specific estimate in Harvest via the Harvest API v2.
Estimate Update an Estimate Updates a specific estimate in Harvest via the Harvest API v2.
Expense Create an Expense Creates a new expense in Harvest via the Harvest API v2. Returns an expense object and a 201 Created response code if the call succeeded.
Expense Delete an Expense Delete an existing expense by its ID using Harvest API.
Expense Get Data of All Expenses Retrieve all expenses from Harvest API, with optional filters for date range, user, project, and client.
Expense Get Data of an Expense Retrieve a specific expense by its ID using Harvest API.
Expense Update an Expense Update an existing expense specified by its ID using Harvest API.
Invoice Create an Invoice Creates a new invoice object. Returns an invoice object and a 201 Created response code if the call succeeded.
Invoice Delete an Invoice Deletes a single invoice in Harvest specified by the invoice ID.
Invoice Get Data of All Invoices Retrieves a list of invoices in Harvest with pagination support.
Invoice Get Data of an Invoice Retrieves a specific invoice in Harvest by its invoice ID.
Invoice Update an Invoice Updates the specific invoice by setting the values of the parameters passed. Any parameters not provided will be left unchanged.
Project Create a Project Creates a new project in Harvest via the Harvest API v2. Returns a project object and a 201 Created response code if the call succeeded.
Project Delete a Project Deletes a project and any time entries or expenses tracked to it. Invoices associated with the project will not be deleted.
Project Get Data of All Projects Retrieves all projects from Harvest, including data from all pages of results.
Project Get Data of a Project Retrieve data of a specific project by its ID using Harvest API.
Project Update a Project Updates the specified Harvest project by setting the values of any passed parameters. Parameters not provided will remain unchanged.
Task Create a Task Creates a new task object in Harvest. Returns a task object and a 201 Created response code if the call succeeded.
Task Delete a Task Deletes the specified Harvest task by its ID. Deletion is only possible if the task has no time entries associated with it. Returns a 200 OK response code on success.
Task Get Data of All Tasks Retrieves all tasks from Harvest. This function will fetch pages of tasks until all pages have been retrieved.
Task Get Data of a Task Retrieves a specific task from Harvest by its ID.
Task Update a Task Updates the specified Harvest task by setting the values of any passed parameters. Parameters not provided will remain unchanged.
Time Entry Create a Time Entry Via Duration Creates a new time entry using duration for the Harvest account when duration tracking is enabled.
Time Entry Create a Time Entry Via Start And End Time Creates a new time entry using start and end time for the Harvest account when time tracking by interval.
Time Entry Delete a Time Entry Deletes a time entry specified by its ID for the Harvest account.
Time Entry Delete a Time Entry’s External Reference Deletes an external reference for a specific time entry in Harvest.
Time Entry Get Data of All Time Entries Retrieves all time entries for the Harvest account.
Time Entry Get Data of a Time Entry Retrieves a time entry by its ID for the Harvest account.
Time Entry Restart a Time Entry Restarts a time entry for the Harvest account, creating a new running time entry.
Time Entry Stop a Time Entry Stops a running time entry for the Harvest account, recording the end time.
Time Entry Update a Time Entry Updates specified fields of a time entry in Harvest, including ended_time, started_time, hours, and notes.
User Create a User Creates a new user object and sends an invitation email to the address specified in the email parameter. Returns a user object and a 201 Created response code if the call succeeded.
User Delete a User Deletes a user from the Harvest account specified by user ID. This operation cannot be undone.
User Get Data of All Users Retrieves all users for the Harvest account.
User Get Data of Authenticated User Retrieves the data of the authenticated user for the Harvest account.
User Get Data of a User Retrieves user data for a specified user in the Harvest account.
User Update a User Updates the specific user by setting the values of provided parameters. Any parameters not provided will remain unchanged.

Operation Details

Create a Client

Creates a new client in Harvest via the Harvest API v2.

Input Parameters:

  • AccountId: Harvest account ID.
  • Name: New client name.

Options:

  • Currency: ISO currency code (optional).
  • Address: A textual representation of the client’s physical address. May include new line characters. (optional).
  • Active: Whether the client is active (default true).

Output:

  • Client (object): The created client object with fields: Id (integer): Client ID. Name (string): Client name. Currency (string): ISO currency code. Active (bool): Active status. Details (string): Client details. CreatedAt (string): Creation timestamp (ISO 8601). UpdatedAt (string): Last update timestamp (ISO 8601).
  • StatusCode (number): HTTP status code returned by the Harvest API.
  • ErrorMessage (string): Error message if any.

Create a Contact

Creates a new contact in Harvest via the Harvest API v2.

Input Parameters:

  • AccountId: Harvest account ID.
  • ClientId: The ID of the client the contact belongs to.
  • FirstName: The first name of the contact.

Options:

  • LastName: The last name of the contact (optional).
  • Title: The job title of the contact (optional).
  • Email: The email address of the contact (optional).
  • PhoneOffice: The office phone number (optional).
  • PhoneMobile: The mobile phone number (optional).
  • IsActive: Whether the contact should be active (optional).

Output:

  • Contact (object): The created contact object with fields: Id (integer): Contact ID. FirstName (string): First name of the contact. LastName (string): Last name of the contact. Title (string): Job title of the contact. Email (string): Email address of the contact. PhoneOffice (string): Office phone number. PhoneMobile (string): Mobile phone number. ClientId (integer): Client ID the contact belongs to. IsActive (bool): Whether the contact is active. CreatedAt (string): ISO 8601 timestamp when the contact.
  • StatusCode (number): HTTP status code returned by the Harvest API (201 for successful creation).
  • ErrorMessage (string): Error message if any.

Create a Project

Creates a new project in Harvest via the Harvest API v2. Returns a project object and a 201 Created response code if the call succeeded.

Input Parameters:

  • AccountId: Your Harvest account ID.
  • ClientId: The ID of the client to associate with the project.
  • Name: The project name.

Options:

  • Code: (Optional) Project code.
  • IsActive: Whether the project is active.
  • IsBillable: Whether the project is billable.
  • BillBy: Billing method, one of ("Project", "Tasks", "People", "None").
  • HourlyRate: Hourly rate when billing by people.
  • Budget: The budget in hours for the project when budgeting by time.
  • BudgetBy: Budget method, one of ("project_cost", "project_hours", "task_cost", "task_hours", "person_cost", "person_hours", "none").
  • NotifyWhenOverBudget: Whether the budget resets every month. Defaults to false.

Output:

  • Project (object): The complete object of the newly created project.
  • StatusCode (number): HTTP status code: 201 indicates successful creation, while other values indicate failure.
  • ErrorMessage (string): Error message: An error description is returned when the creation fails.

Create a Task

Creates a new task object in Harvest. Returns a task object and a 201 Created response code if the call succeeded.

Input Parameters:

  • AccountId: Harvest Account ID header value.
  • Name: The name of the task (required).

Options:

  • BillableByDefault: Whether default tasks should be marked billable when creating a new project. Defaults to true.
  • DefaultHourlyRate: The default hourly rate to use for this task when it is added to a project. Defaults to 0.
  • IsDefault: Whether this task should be automatically added to future projects. Defaults to false.
  • IsActive: Whether this task is active or archived. Defaults to true.

Output:

  • Task (object): The created task object returned by Harvest API.
  • StatusCode (number): Operation status code: -1 (parameter error), 201 (success), other HTTP codes for failure, 500 for exceptions.
  • ErrorMessage (string): Error message if any; empty if success.

Create a Time Entry Via Duration

Creates a new time entry using duration for the Harvest account when duration tracking is enabled.

Input Parameters:

  • AccountId: The Harvest account ID associated with the API request.
  • ProjectId: The ID of the project to associate with the time entry.
  • TaskId: The ID of the task to associate with the time entry.
  • SpentDate: The date of the time entry in 'YYYY-MM-DD' format.

Options:

  • Hours: The number of hours tracked. Defaults to 0.0, setting the entry as running.
  • Notes: Optional notes for the time entry.
  • UserId: The ID of the user to associate with the time entry. Defaults to the currently authenticated user’s ID.

Output:

  • TimeEntry (object): The created time entry object as returned by the Harvest API.
  • StatusCode (number): Operation result code: 201 (created successfully), -1 (parameter error), other HTTP codes for errors.
  • ErrorMessage (string): Error message if operation fails.

Create a Time Entry Via Start And End Time

Creates a new time entry using start and end time for the Harvest account when time tracking by interval.

Input Parameters:

  • AccountId: The Harvest account ID associated with the API request.
  • ProjectId: The ID of the project to associate with the time entry.
  • TaskId: The ID of the task to associate with the time entry.
  • SpentDate: The date of the time entry in 'YYYY-MM-DD' format.

Options:

  • StartedTime: The start time of the entry (e.g., '08:00am' or '17:30').
  • EndedTime: The end time of the entry (e.g., '09:30am' or '18:45').
  • Notes: Optional notes for the time entry.
  • UserId: The ID of the user to associate with the time entry. Defaults to the currently authenticated user’s ID.

Output:

  • TimeEntry (object): The created time entry object as returned by the Harvest API.
  • StatusCode (number): Operation result code: 201 (created successfully), -1 (parameter error), other HTTP codes for errors.
  • ErrorMessage (string): Error message if operation fails.

Create a User

Creates a new user object and sends an invitation email to the address specified in the email parameter. Returns a user object and a 201 Created response code if the call succeeded.

Input Parameters:

  • AccountId: Harvest account ID. Required.
  • FirstName: User's first name. Required.
  • LastName: User's last name. Required.
  • Email: User's email address. Required.

Options:

  • IsAdmin: Whether the user has Admin permissions
  • IsContractor: Whether the user is a contractor (optional).
  • IsProjectManager: Whether the user has Project Manager permissions.
  • HasAccessToAllFutureProjects: Whether the user has access to all future projects (optional).
  • Timezone: The user’s timezone. Defaults to the company’s timezone.
  • CostRate: The cost rate to use for this user when calculating a project’s costs vs billable amount.
  • Roles: Json string of business roles assigned to the user(optional).
  • DefaultHourlyRate: Default hourly billing rate (optional).
  • WeeklyCapacity: The number of hours per week this person is available to work in seconds. Defaults to 126000 seconds (35 hours).
  • IsActive: Whether the user is active (optional).

Output:

  • User (object): The created user object containing.
  • StatusCode (number): HTTP status code of the operation (201 for success, -1 for parameter errors, 500 for exceptions).
  • ErrorMessage (string): Error message if any occurred during the request.

Create an Estimate

Creates a new estimate in Harvest via the Harvest API v2.

Input Parameters:

  • AccountId: Harvest account ID.
  • ClientId: The ID of the client the estimate belongs to.

Options:

  • Currency: Currency of the estimate (optional).
  • Discount: This percentage is subtracted from the subtotal. Example: use 10.0 for 10.0%.
  • IssueDate: The date the estimate was issued (YYYY-MM-DD).
  • Notes: Any additional notes to include on the estimate
  • Number: The estimate number.
  • PurchaseOrder: Purchase order number (optional).
  • Subject: The estimate subject.
  • Tax: This percentage is applied to the subtotal, including line items and discounts. Example: use 10.0 for 10.0%.
  • Tax2: This percentage is applied to the subtotal, including line items and discounts. Example: use 10.0 for 10.0%.
  • LineItems: Line items(e.g., [{ "kind": "Service", "description": "Consulting service", "quantity": 10, "unit_price": 100.0, "total_price": 1000.0,"taxed": 0.1}])

Output:

  • Estimate (object): The created estimate object.
  • StatusCode (number): HTTP status code (201 for created, -1 for parameter errors, 500 for exceptions).
  • ErrorMessage (string): Error message if any.

Create an Expense

Creates a new expense in Harvest via the Harvest API v2. Returns an expense object and a 201 Created response code if the call succeeded.

Input Parameters:

  • AccountId: Harvest account ID.
  • ProjectId: The ID of the project associated with this expense. Required.
  • ExpenseCategoryFilter: The Name Or ID of the expense category associated with this expense. Required.
  • SpentDate: Date the expense occurred (YYYY-MM-DD). Required.

Options:

  • UserId: The ID of the user associated with this expense. Optional. Defaults to the currently authenticated user.
  • Units: The quantity of units for calculating total_cost. Optional. Required if using a unit-based expense category.
  • TotalCost: The total amount of the expense. Optional. Required if not using a unit-based expense category.
  • Notes: Textual notes describing the expense. Optional.
  • Billable: Whether this expense is billable. Optional. Defaults to true.

Output:

  • Expense (object): The created expense object.
  • StatusCode (number): HTTP status code: 201 for created, -1 for parameter errors, 500 for exceptions.
  • ErrorMessage (string): Error message if any.

Create an Invoice

Creates a new invoice object. Returns an invoice object and a 201 Created response code if the call succeeded.

Input Parameters:

  • AccountId: Harvest account ID.
  • ClientId: The ID of the client this invoice belongs to.

Options:

  • RetainerId: The ID of the retainer to add funds to.
  • EstimateId: The ID of the estimate associated with this invoice.
  • Number: Invoice number.
  • PurchaseOrder: Purchase order number.
  • Tax: Tax percentage, e.g., 10.0 for 10%.
  • Tax2: Second tax percentage.
  • Discount: Discount percentage.
  • Subject: The invoice subject.
  • Notes: Additional notes.
  • Currency: Currency code.
  • IssueDate: Issue date in YYYY-MM-DD format.
  • DueDate: Due date in YYYY-MM-DD format.
  • LineItems: Json str of line item objects,

Output:

  • Invoice (object): The created invoice object returned by Harvest API.
  • StatusCode (number): HTTP status code: 201 indicates creation success; -1 indicates parameter error; 500 indicates exception; other values indicate API errors.
  • ErrorMessage (string): Error message if any.

Delete a Client

Deletes a specific client in Harvest via the Harvest API v2.

Input Parameters:

  • AccountId: Harvest Account ID.
  • ClientId: The Client ID to be deleted.

Output:

  • Deleted (boolean): Indicate whether the client has successfully deleted.
  • StatusCode (number): HTTP status codes: 204 indicates successful deletion, while others indicate failure or error.
  • ErrorMessage (string): Error message if any.

Delete a Contact

Deletes a specific contact in Harvest via the Harvest API v2.

Input Parameters:

  • AccountId: Harvest account ID.
  • ContactId: The ID of the contact to delete.

Output:

  • Deleted (boolean): Indicates whether the contact was successfully deleted.
  • StatusCode (number): HTTP status code returned by the Harvest API: 204 for successful deletion, other codes for errors, -1 for parameter validation errors, 500 for exceptions.
  • ErrorMessage (string): Error message if any.

Delete a Project

Deletes a project and any time entries or expenses tracked to it. Invoices associated with the project will not be deleted.

Input Parameters:

  • AccountId: Harvest Account ID header value.
  • ProjectId: The ID of the project to delete.

Output:

  • Deleted (boolean): indicates whether the project was successfully deleted.
  • StatusCode (number): Operation status code: -1 (parameter error), 200 (success), other HTTP codes for failure.
  • ErrorMessage (string): Error message if any; empty string if operation is successful.

Delete a Task

Deletes the specified Harvest task by its ID. Deletion is only possible if the task has no time entries associated with it. Returns a 200 OK response code on success.

Input Parameters:

  • AccountId: Harvest Account ID header value.
  • TaskId: The ID of the task to delete.

Output:

  • Deleted (boolean): Indicates whether the task was successfully deleted.
  • StatusCode (number): Operation status code: -1 (parameter error), 200 (success), other HTTP codes for failure, 500 for exceptions.
  • ErrorMessage (string): Error message if any; empty if success.

Delete a Time Entry

Deletes a time entry specified by its ID for the Harvest account.

Input Parameters:

  • AccountId: The Harvest account ID associated with the API request.
  • TimeEntryId: The ID of the time entry to delete.

Output:

  • Deleted (boolean): Indicates whether the time entry was successfully deleted.
  • StatusCode (number): Operation result code: 200 (success), -1 (parameter error), other values for HTTP errors.
  • ErrorMessage (string): Error message if operation fails.

Delete a Time Entry’s External Reference

Deletes an external reference for a specific time entry in Harvest.

Input Parameters:

  • AccountId: The Harvest account ID associated with the API request.
  • TimeEntryId: The ID of the time entry whose external reference you want to delete.

Output:

  • Deleted (boolean): Indicates whether the external reference was successfully deleted.
  • StatusCode (number): Operation result code: 200 (success), -1 (parameter error), other HTTP codes for errors.
  • ErrorMessage (string): Error message if operation fails.

Delete a User

Deletes a user from the Harvest account specified by user ID. This operation cannot be undone.

Input Parameters:

  • AccountId: The Harvest account ID associated with the API request.
  • UserId: The ID of the user to delete; must be a positive integer.

Output:

  • Deleted (boolean): Indicates whether the user was successfully deleted.
  • StatusCode (number): Overall operation status code: 200 (success), -1 (parameter error), other HTTP codes for errors, 500 for exceptions.
  • ErrorMessage (string): Error message if the operation fails; empty otherwise.

Delete an Estimate

Deletes a specific estimate in Harvest via the Harvest API v2.

Input Parameters:

  • AccountId: Harvest account ID.
  • EstimateId: The ID of the estimate to delete.

Output:

  • Deleted (boolean): Indicates whether the estimate was successfully deleted.
  • StatusCode (number): HTTP status code returned by the Harvest API: 204 for successful deletion, other codes for errors, -1 for parameter validation errors, 500 for exceptions.
  • ErrorMessage (string): Error message if any.

Delete an Expense

Delete an existing expense by its ID using Harvest API.

Input Parameters:

  • AccountId: Your Harvest account ID.
  • ExpenseId: The ID of the expense to delete.

Output:

  • Deleted (boolean): Indicates whether the expense was successfully deleted.
  • StatusCode (number): HTTP status code: 204 indicates deletion success, other values indicate errors, -1 for parameter error, 500 for exception.
  • ErrorMessage (string): Error message if any.

Delete an Invoice

Deletes a single invoice in Harvest specified by the invoice ID.

Input Parameters:

  • AccountId: The Harvest account ID to identify the account.
  • InvoiceId: The ID of the invoice to delete.

Output:

  • Deleted (boolean): Indicates whether the invoice was successfully deleted.
  • StatusCode (number): Overall status code: 200 for success, -1 for parameter validation error, 500 for exception.
  • ErrorMessage (string): Error message if any; empty string if operation is successful.

Get Data of All Clients

Retrieves a list of clients in Harvest via the Harvest API v2, supporting pagination and optional filters.

Input Parameters:

  • AccountId: Harvest account ID.

Options:

  • Limit: Number of clients per page (per_page) (optional).
  • IsActive: Filter to only return active clients (optional).
  • UpdatedAt: Filter to return clients updated since this timestamp, in ISO 8601 format (optional).

Output:

  • Clients (object-array): Array of client objects.
  • StatusCode (number): HTTP status code returned by the Harvest API.
  • ErrorMessage (string): Error message if any.

Get Data of All Contacts

Retrieves data of all contacts in Harvest via Harvest API v2, with optional limit and filters is_active, updated_since.

Input Parameters:

  • AccountId: Harvest account ID.

Options:

  • Limit: Maximum number of contacts to return per page (optional).
  • IsActive: Filter contacts by active status; true returns only active contacts, false returns only inactive contacts (optional).
  • UpdatedSince: ISO 8601 timestamp; returns only contacts updated since this time (optional).

Output:

  • Contacts (object-array): List of contact objects returned by Harvest API.
  • StatusCode (number): HTTP status code returned by the Harvest API; -1 indicates parameter validation error; 500 indicates exception.
  • ErrorMessage (string): Error message if any.

Get Data of All Estimates

Retrieves data of all estimates in Harvest via Harvest API v2, with optional limit and filter updated_since.

Input Parameters:

  • AccountId: Harvest account ID.

Options:

  • Limit: Maximum number of estimates to return per page (optional).
  • UpdatedSince: ISO 8601 timestamp; returns only estimates updated since this time (optional).

Output:

  • Estimates (object-array): List of estimate objects.
  • StatusCode (number): HTTP status code returned by the Harvest API: 200 for success, -1 for parameter errors, 500 for exceptions.
  • ErrorMessage (string): Error message if any.

Get Data of All Expenses

Retrieve all expenses from Harvest API, with optional filters for date range, user, project, and client.

Input Parameters:

  • AccountId: Harvest account ID.

Options:

  • FromDate: Filter start date in YYYY-MM-DD format.
  • ToDate: Filter end date in YYYY-MM-DD format.
  • UserId: Filter by user ID.
  • ProjectId: Filter by project ID.
  • ClientId: Filter by client ID.

Output:

  • Expenses (object-array): List of expense objects returned by Harvest API.
  • StatusCode (number): Overall status code: 200 indicates success, other value indicates error, -1 indicates parameter check error, 500 indicates internal exception.
  • ErrorMessage (string): Error message if any.

Get Data of All Invoices

Retrieves a list of invoices in Harvest with pagination support.

Input Parameters:

  • AccountId: The Harvest account ID identifying the account.

Options:

  • ClientId: Only return invoices belonging to the client with this ID.
  • ProjectId: Only return invoices associated with the project with this ID.
  • IssueDateFrom: Only return invoices with an issue_date on or after this date (YYYY-MM-DD).
  • IssueDateTo: Only return invoices with an issue_date on or before this date (YYYY-MM-DD).
  • DueDateFrom: Only return invoices with a due_date on or after this date (YYYY-MM-DD).
  • DueDateTo: Only return invoices with a due_date on or before this date (YYYY-MM-DD).
  • Page: Page number to retrieve, starting from 1.
  • PerPage: Number of invoices per page, up to 100.

Output:

  • Invoices (object-array): The list of invoice objects returned from Harvest API.
  • Page (number): The current page number of results.
  • PerPage (number): Number of items per retrieved page.
  • TotalPages (number): Total number of pages available.
  • TotalEntries (number): Total number of invoice entries available.
  • StatusCode (number): HTTP status code of the GET request; -1 for parameter validation error, 500 for exception.
  • ErrorMessage (string): Error message if any occurred; empty string if operation is successful.

Get Data of All Projects

Retrieves all projects from Harvest, including data from all pages of results.

Input Parameters:

  • AccountId: Harvest Account ID header value.

Options:

  • Limit: Maximum number of projects to return. Default 100 (no limit).
  • ClientId: Filter projects by client ID. Default 0 (no filter).
  • UpdatedSince: Only return projects updated after this timestamp (RFC3339). Default "" (no filter).

Output:

  • Projects (object-array): List of project objects as returned by Harvest API.
  • StatusCode (number): Operation status code: -1 (parameter error), 200 (success), other HTTP codes for failure, 500 for exceptions.
  • ErrorMessage (string): Error message if any; empty if success.

Get Data of All Tasks

Retrieves all tasks from Harvest. This function will fetch pages of tasks until all pages have been retrieved.

Input Parameters:

  • AccountId: Harvest Account ID header value.

Options:

  • Limit: Maximum number of tasks to return. Default 100 (no limit).

Output:

  • Tasks (object-array): List of task objects as returned by Harvest API.
  • StatusCode (number): Operation status code: -1 (parameter error), 200 (success), other HTTP codes for failure, 500 for exceptions.
  • ErrorMessage (string): Error message if any; empty if success.

Get Data of All Time Entries

Retrieves all time entries for the Harvest account.

Input Parameters:

  • AccountId: The Harvest account ID associated with the API request.

Options:

  • Limit: Maximum number of time entries to retrieve per page; must be a positive integer.
  • ClientId: Only return time entries belonging to the client with the given ID
  • IsBilled: Whether to only return time entries that have been invoiced and false to return time entries that have not been invoiced.
  • IsRunning: Whether to only return running time entries and false to return non-running time entries.
  • UserId: Only return time entries belonging to the user with the given ID
  • UpdatedSince: Only return time entries that have been updated since the given date and time.
  • From: Only return time entries with a spent_date on or after the given date.
  • To: Only return time entries with a spent_date on or before the given date.

Output:

  • TimeEntries (object-array): List of time entries as returned by the Harvest API.
  • StatusCode (number): Operation result code: 200 (success), -1 (parameter error), other HTTP codes for errors.
  • ErrorMessage (string): Error message if operation fails; empty otherwise.

Get Data of All Users

Retrieves all users for the Harvest account.

Input Parameters:

  • AccountId: The Harvest account ID associated with the API request.

Options:

  • Limit: Maximum number of users to retrieve per page; must be a positive integer.
  • IsActive: If true, only return active users; if false or omitted, no active-status filter is applied.
  • UpdatedSince: Only return users updated after this ISO8601 timestamp; empty string or omitted to disable.

Output:

  • Users (object-array): List of user objects as returned by the Harvest API.
  • StatusCode (number): Overall operation status code: 200 (success), -1 (parameter error), other HTTP codes for errors, 500 for exceptions.
  • ErrorMessage (string): Error message if the operation fails; empty otherwise.

Get Data of Authenticated User

Retrieves the data of the authenticated user for the Harvest account.

Input Parameters:

  • AccountId: The Harvest account ID associated with the API request.

Output:

  • User (object): The authenticated user object returned by Harvest API.
  • StatusCode (number): Overall operation status code: 200 (success), -1 (parameter error), other HTTP codes for errors, 500 for exceptions.
  • ErrorMessage (string): Error message if the operation fails; empty otherwise.

Get Data of a Client

Retrieves a specific client by ID from Harvest via the Harvest API v2.

Input Parameters:

  • AccountId: Harvest account ID.
  • ClientId: The ID of the client you are retrieving.

Output:

  • Client (object): The retrieved client object with fields: Id (integer): Client ID. Name (string): Client name. Currency (string): ISO currency code. Active (bool): Active status. Details (string): Client details. CreatedAt (string): Creation timestamp (ISO 8601). UpdatedAt (string): Last update timestamp (ISO 8601).
  • StatusCode (number): HTTP status code returned by the Harvest API.
  • ErrorMessage (string): Error message if any.

Get Data of a Contact

Retrieves a specific contact in Harvest via the Harvest API v2.

Input Parameters:

  • AccountId: Harvest account ID.
  • ContactId: The ID of the contact to retrieve.

Output:

  • Contact (object): The contact object returned by Harvest API.
  • StatusCode (number): HTTP status code returned by the Harvest API: 200 for success, -1 for parameter validation errors, 500 for exceptions.
  • ErrorMessage (string): Error message if any.

Get Data of a Project

Retrieve data of a specific project by its ID using Harvest API.

Input Parameters:

  • AccountId: Harvest account ID.
  • ProjectId: The ID of the project to retrieve.

Output:

  • Project (object): The retrieved project object.
  • StatusCode (number): HTTP status code: 200 indicates success, other codes indicate errors, -1 for parameter error, 500 for exception.
  • ErrorMessage (string): Error message if any.

Get Data of a Task

Retrieves a specific task from Harvest by its ID.

Input Parameters:

  • AccountId: Harvest Account ID header value.
  • TaskId: The ID of the task to retrieve.

Output:

  • Task (object): The task object returned by Harvest API.
  • StatusCode (number): Operation status code: -1 (parameter error), 200 (success), other HTTP codes for failure, 500 for exceptions.
  • ErrorMessage (string): Error message if any; empty if success.

Get Data of a Time Entry

Retrieves a time entry by its ID for the Harvest account.

Input Parameters:

  • AccountId: The Harvest account ID associated with the API request.
  • TimeEntryId: The ID of the time entry to retrieve.

Output:

  • TimeEntry (object): The requested time entry object as returned by the Harvest API.
  • StatusCode (number): Operation result code: 200 (success), -1 (parameter error), other HTTP codes for errors.
  • ErrorMessage (string): Error message if operation fails.

Get Data of a User

Retrieves user data for a specified user in the Harvest account.

Input Parameters:

  • AccountId: The Harvest account ID associated with the API request.
  • UserId: The ID of the user to retrieve.

Output:

  • User (object): The user object returned by Harvest API.
  • StatusCode (number): Overall operation status code: 200 (success), -1 (parameter error), other HTTP codes for errors, 500 for exceptions.
  • ErrorMessage (string): Error message if operation fails; empty otherwise.

Get Data of an Estimate

Retrieves a specific estimate in Harvest via the Harvest API v2.

Input Parameters:

  • AccountId: Harvest account ID.
  • EstimateId: The ID of the estimate to retrieve.

Output:

  • Estimate (object): The estimate object.
  • StatusCode (number): HTTP status code returned by the Harvest API: 200 for success, -1 for parameter errors, 500 for exceptions.
  • ErrorMessage (string): Error message if any.

Get Data of an Expense

Retrieve a specific expense by its ID using Harvest API.

Input Parameters:

  • AccountId: Harvest account ID.
  • ExpenseId: The ID of the expense to retrieve.

Output:

  • Expense (object): The retrieved expense object.
  • StatusCode (number): HTTP status code: 200 indicates success, other values indicate errors, -1 for parameter error, 500 for exception.
  • ErrorMessage (string): Error message if any.

Get Data of an Invoice

Retrieves a specific invoice in Harvest by its invoice ID.

Input Parameters:

  • AccountId: The Harvest account ID identifying the account.
  • InvoiceId: The ID of the invoice to retrieve.

Output:

  • Invoice (object): The invoice object returned from Harvest API.
  • StatusCode (number): HTTP status code of the GET request; -1 for parameter error, 500 for exception.
  • ErrorMessage (string): Error message if any occurred.

Restart a Time Entry

Restarts a time entry for the Harvest account, creating a new running time entry.

Input Parameters:

  • AccountId: The Harvest account ID associated with the API request.
  • TimeEntryId: The ID of the time entry to restart.

Output:

  • TimeEntry (object): The newly created time entry object returned by the Harvest API.
  • StatusCode (number): Operation result code: 200 (success), -1 (parameter error), other HTTP codes for errors.
  • ErrorMessage (string): Error message if operation fails; empty otherwise.

Retrieve the Company for the Currently Authenticated User

Retrieves the company for the currently authenticated user via Harvest API v2.

Input Parameters:

  • AccountId: Harvest account ID.

Output:

  • Company (object): The company object with fields: Id (integer): Company ID. Name (string): Company name. BaseCurrency (string): ISO currency code for the company's base currency. WeekStartDay (string): Start day of the week. HourFormat (string): Hour format setting. Weekends (boolean): Whether weekends are considered workdays. CreatedAt (string): ISO 8601 timestamp when the company was created. UpdatedAt (string): ISO 8601 timestamp when the company was last updated.
  • StatusCode (number): HTTP status code returned by the Harvest API.
  • ErrorMessage (string): Error message if any.

Stop a Time Entry

Stops a running time entry for the Harvest account, recording the end time.

Input Parameters:

  • AccountId: The Harvest account ID associated with the API request.
  • TimeEntryId: The ID of the time entry to stop.

Output:

  • TimeEntry (object): The stopped time entry object returned by Harvest API.
  • StatusCode (number): Overall operation status code: 200 (success), -1 (parameter error), other HTTP codes for errors.
  • ErrorMessage (string): Error message if operation fails; empty otherwise.

Update a Client

Updates a specific client in Harvest via the Harvest API v2.

Input Parameters:

  • AccountId: Harvest account ID.
  • ClientId: The ID of the client to update.

Options:

  • Name: New client name (optional).
  • Currency: ISO currency code (optional).
  • Address: A textual representation of the client’s physical address. May include new line characters.
  • Active: Active status of the client (optional).

Output:

  • Client (object): The updated client object returned by the Harvest API.
  • StatusCode (number): HTTP status code returned by the Harvest API.
  • ErrorMessage (string): Error message if any.

Update a Contact

Updates a specific contact in Harvest via the Harvest API v2.

Input Parameters:

  • AccountId: Harvest account ID.
  • ContactId: The ID of the contact to update.

Options:

  • FirstName: The first name of the contact (optional).
  • LastName: The last name of the contact (optional).
  • ClientId: The ID of the client the contact belongs to (optional).
  • Title: The job title of the contact (optional).
  • Email: The email address of the contact (optional).
  • PhoneOffice: The office phone number (optional).
  • PhoneMobile: The mobile phone number (optional).
  • IsActive: Whether the contact should be active (optional).

Output:

  • Contact (object): The updated contact object returned by the Harvest API.
  • StatusCode (number): HTTP status code returned by the Harvest API: 200 for successful update, -1 for parameter errors, 500 for exceptions.
  • ErrorMessage (string): Error message if any.

Update a Project

Updates the specified Harvest project by setting the values of any passed parameters. Parameters not provided will remain unchanged.

Input Parameters:

  • AccountId: Harvest Account ID header value.
  • ProjectId: The ID of the project to update.

Options:

  • ClientId: The ID of the client (optional).
  • Name: The new project name (optional).
  • Code: The new project code (optional).
  • IsActive: Whether the project is active (optional).
  • IsBillable: Whether the project is billable (optional).
  • BillBy: The invoicing method (optional).
  • HourlyRate: Hourly rate for project billing (optional).
  • Budget: Budget amount in hours or money (optional).
  • BudgetBy: Budgeting method (optional).
  • NotifyWhenOverBudget: Notify on budget overrun (optional).
  • Notes: Project notes (optional).

Output:

  • Project (object): The updated project object returned by Harvest API.
  • StatusCode (number): Operation status code: -1 (parameter error), 200 (success), other HTTP codes for failure, 500 for exceptions.
  • ErrorMessage (string): Error message if any; empty if success.

Update a Task

Updates the specified Harvest task by setting the values of any passed parameters. Parameters not provided will remain unchanged.

Input Parameters:

  • AccountId: Harvest Account ID header value.
  • TaskId: The ID of the task to update.

Options:

  • Name: The new task name (optional).
  • BillableByDefault: Whether the task is billable by default (optional).
  • DefaultHourlyRate: The default hourly rate for the task (optional).
  • IsDefault: Whether to set the task as default (optional).
  • IsActive: Whether to set the task as active (optional).

Output:

  • Task (object): The updated task object returned by Harvest API.
  • StatusCode (number): Operation status code: -1 (parameter error), 200 (success), other HTTP codes for failure, 500 for exceptions.
  • ErrorMessage (string): Error message if any; empty if success.

Update a Time Entry

Updates specified fields of a time entry in Harvest, including ended_time, started_time, hours, and notes.

Input Parameters:

  • AccountId: The Harvest account ID associated with the API request.
  • TimeEntryId: The ID of the time entry to update.

Options:

  • EndedTime: New end time in ISO 8601 format(e.g., 3:00pm).
  • StartedTime: New start time in ISO 8601 format(e.g, 3:00pm).
  • Hours: New number of hours for the time entry; must be a non-negative number.
  • Notes: Updated notes for the time entry.

Output:

  • TimeEntry (object): The updated time entry object returned by the Harvest API.
  • StatusCode (number): Overall operation status code: 200 (success), -1 (parameter error), other HTTP codes for errors, 500 for exceptions.
  • ErrorMessage (string): Error message if the operation fails; empty otherwise.

Update a User

Updates the specific user by setting the values of provided parameters. Any parameters not provided will remain unchanged.

Input Parameters:

  • AccountId: The Harvest account ID associated with the API request.
  • UserId: ID of the user to update.

Options:

  • FirstName: The new first name of the user.
  • LastName: The new last name of the user.
  • Email: The new email address of the user.
  • Timezone: The new timezone for the user.
  • HasAccessToAllFutureProjects: Whether the user should be automatically added to future projects.
  • IsContractor: Whether the user is a contractor.
  • IsActive: Whether the user is active or archived.
  • WeeklyCapacity: The number of hours per week this person is available to work in seconds. Defaults to 126000 seconds (35 hours).
  • Roles: The role names assigned to this person.
  • IsAdmin: Whether the user has Admin permissions

Output:

  • User (object): The updated user object returned by Harvest API.
  • StatusCode (number): Overall operation status code: 200 (success), -1 (parameter error), other HTTP codes for errors, 500 for exceptions.
  • ErrorMessage (string): Error message if the operation fails, empty otherwise.

Update an Estimate

Updates a specific estimate in Harvest via the Harvest API v2.

Input Parameters:

  • AccountId: Harvest account ID.
  • EstimateId: The ID of the estimate to update.

Options:

  • ClientId: The ID of the client the estimate belongs to (optional).
  • Currency: Currency of the estimate (optional).
  • Discount: This percentage is subtracted from the subtotal. Example: use 10.0 for 10.0%.
  • IssueDate: Date the invoice was issued. Defaults to today’s date.
  • Notes: Any additional notes to include on the estimate.
  • Number: If no value is set, the number will be automatically generated
  • PurchaseOrder: The purchase order number.
  • Subject: The estimate subject.
  • Tax: This percentage is applied to the subtotal, including line items and discounts. Example: use 10.0 for 10.0%.
  • Tax2: This percentage is applied to the subtotal, including line items and discounts. Example: use 10.0 for 10.0%.
  • LineItems: String of line item objects (optional). Each with fields: Kind (string), Description (string), Quantity (integer), UnitPrice (number), Amount (number).

Output:

  • Estimate (object): The updated estimate object returned by the Harvest API..
  • StatusCode (number): HTTP status code: 200 for success, -1 for parameter errors, 500 for exceptions.
  • ErrorMessage (string): Error message if any.

Update an Expense

Update an existing expense specified by its ID using Harvest API.

Input Parameters:

  • AccountId: Harvest account ID.
  • ExpenseId: The ID of the expense to update.

Options:

  • ProjectId: (Optional) The ID of the project to associate.
  • SpentDate: (Optional) Date of the expense in YYYY-MM-DD format.
  • Amount: (Optional) New amount for the expense.
  • Notes: (Optional) Notes or description for the expense.
  • ExpenseCategoryID: The ID(Name) of the expense category this expense is being tracked against

Output:

  • Expense (object): The updated expense object returned by Harvest API.
  • StatusCode (number): HTTP status code: 200 indicates update success; -1 for parameter error; 500 for exception; other values for API errors.
  • ErrorMessage (string): Error message if any.

Update an Invoice

Updates the specific invoice by setting the values of the parameters passed. Any parameters not provided will be left unchanged.

Input Parameters:

  • AccountId: Harvest account ID.
  • InvoiceId: The ID of the invoice want to update.

Options:

  • ClientId: The ID of the client this invoice belongs to.
  • RetainerId: The ID of the retainer to add funds to.
  • EstimateId: The ID of the estimate associated with this invoice.
  • Number: Invoice number.
  • PurchaseOrder: Purchase order number.
  • Tax: Tax percentage, e.g., 10.0 for 10%.
  • Tax2: Second tax percentage.
  • Discount: Discount percentage.
  • Subject: The invoice subject.
  • Notes: Additional notes.
  • Currency: Currency code.
  • IssueDate: Issue date in YYYY-MM-DD format.
  • DueDate: Due date in YYYY-MM-DD format.
  • LineItems: List of line item objects

Output:

  • Invoice (object): The updated invoice object returned by Harvest API.
  • StatusCode (number): HTTP status code: 201 indicates creation success; -1 indicates parameter error; 500 indicates exception; other values indicate API errors.
  • ErrorMessage (string): Error message if any.

5. Example Usage

This section demonstrates how to build a simple workflow to create a new client in your Harvest account.

The workflow will consist of a Start node, a Harvest: Create a Client node, and an Answer node to display the result.

1. Add the Harvest Node

  • In the workflow canvas, click the + button to add a new node.
  • Select the "Tools" tab in the pop-up panel.
  • Find and select "Harvest" from the list of tools.
  • From the list of supported operations for Harvest, click on "Create a Client" to add the node to your canvas.

2. Configure the Node

  • Click on the newly added "Create a Client" node to open its configuration panel on the right.
  • Credentials: Find the credentials field at the top. Click the dropdown menu and select your pre-configured Harvest credentials.
  • Parameters: Fill in the required input parameters for creating a client.
    • AccountId: Enter your Harvest Account ID. This is a numeric ID you can find in your Harvest account settings.
    • Name: Provide a name for the new client, for example, "New Tech Corp".
    • Currency (Optional): You can specify an ISO currency code, such as "USD". If left blank, it will use your account's default.

3. Run and Validate

  • Once all required parameters are correctly filled, any error indicators on the node will disappear.
  • Click the "Run Test" button in the top-right corner of the canvas to execute the workflow.
  • After a successful run, you can click the log icon (top right) to view the detailed inputs and outputs of the node, confirming that the client was created and an ID was returned.

After completing these steps, your workflow is fully configured. When executed, it will automatically create a new client in your Harvest account.

6. FAQs

Q: Why am I getting a 401 Unauthorized or 403 Forbidden error?

A: This typically indicates an issue with your credentials. Please check the following:

  • Account ID: Ensure the Account ID you provided is correct and matches the account your API token belongs to.
  • API Token: Verify that your Personal Access Token is correct and has not expired or been revoked.
  • Permissions: Make sure the user associated with the API token has the necessary permissions in Harvest to perform the desired action (e.g., creating clients, managing projects).

Q: How do I find my Harvest Account ID?

A: You can find your Account ID by logging into your Harvest account. The ID is typically visible in the URL of your browser when you are logged in (e.g., https://yourcompany.harvestapp.com/). The ID is the numeric value associated with your account, which you can also find in the source code of the page or in API-related settings.

Q: Can I create a time entry for another user?

A: Yes. Most operations that involve a user, such as "Create a Time Entry", include an optional UserId parameter. If you have the necessary permissions (usually as an administrator), you can provide the ID of another user in this field to perform the action on their behalf. If left blank, the action will default to the authenticated user.

7. Official Documentation

For more detailed information about the Harvest API, including endpoints, parameters, and rate limits, please refer to the Harvest Official API Documentation.

Updated on: Nov 27, 2025
Was This Page Helpful?
Prev Hacker News
Next Help Scout
Discussion

Leave a Reply. Cancel reply

Your email address will not be published. Required fields are marked*

Product-related questions?Contact Our Support Team to Get a Quick Solution>
On this page
  • 1. Overview
  • 2. Prerequisites
  • 3. Credentials
  • 4. Supported Operations
    • Summary
    • Operation Details
  • 5. Example Usage
    • 1. Add the Harvest Node
    • 2. Configure the Node
    • 3. Run and Validate
  • 6. FAQs
  • 7. Official Documentation
loading...
No Results