Harvest Integration

Pro v1.0.0

Track time, manage projects, and access Harvest time tracking data programmatically

Requires Claude Code CLI

This skill integrates with Harvest through Claude Code. Install Claude Code and add this skill to use it.

Available Actions

List Time Entries

Retrieve time entries with optional date filtering

Parameters

Name Type Required Description
from string Optional Start date (YYYY-MM-DD format)
to string Optional End date (YYYY-MM-DD format)

Returns

object Paginated list of time entries with details

Try saying...

  • "Show me my time entries for this week"
  • "List all time entries from December 1st to December 15th"
  • "Get my recent time logs"

Create Time Entry

Log time for a specific project and task

Parameters

Name Type Required Description
project_id integer Required The project ID to log time against
task_id integer Required The task ID to log time against
spent_date string Required Date the time was spent (YYYY-MM-DD)
hours integer Required Number of hours to log
notes string Optional Description of work performed

Returns

object Created time entry details

Try saying...

  • "Log 3.5 hours on project 12345 for task 67890 on December 15th"
  • "Create a time entry for 2 hours of development work"
  • "Record 4 hours spent on bug fixing yesterday"

Start Timer

Start a running timer for a project and task

Parameters

Name Type Required Description
project_id integer Required The project ID to track time for
task_id integer Required The task ID to track time for
notes string Optional Description of what you're working on

Returns

object Started time entry with running timer

Try saying...

  • "Start a timer for project 12345 and task 67890"
  • "Begin tracking time on development task"
  • "Start the clock for client work"

Stop Timer

Stop a running timer

Parameters

Name Type Required Description
entry_id integer Required The ID of the running time entry

Returns

object Stopped time entry with total hours

Try saying...

  • "Stop the timer for entry 98765"
  • "Stop my current timer"
  • "End time tracking for this task"

Update Time Entry

Update hours or notes for an existing time entry

Parameters

Name Type Required Description
entry_id integer Required The time entry ID to update
hours integer Optional Updated hours
notes string Optional Updated notes

Returns

object Updated time entry details

Try saying...

  • "Update time entry 98765 to 4 hours"
  • "Change the notes on entry 98765 to 'Updated description'"
  • "Correct the time logged for entry 98765"

Delete Time Entry

Remove a time entry from Harvest

Parameters

Name Type Required Description
entry_id integer Required The time entry ID to delete

Returns

object Success confirmation

Try saying...

  • "Delete time entry 98765"
  • "Remove the time entry for yesterday"
  • "Delete that incorrect time log"

List Projects

Retrieve all projects in your Harvest account

Parameters

Name Type Required Description
is_active boolean Optional Filter by active/inactive status

Returns

object Paginated list of projects

Try saying...

  • "Show me all active projects"
  • "List all projects"
  • "Get project list"

Get Project

Retrieve detailed information about a specific project

Parameters

Name Type Required Description
project_id integer Required The project ID to retrieve

Returns

object Project details including name, client, budget, and assignments

Try saying...

  • "Get details for project 12345"
  • "Show me project information"
  • "What are the details of this project?"

List Tasks

Retrieve all tasks available in Harvest

Returns

object Paginated list of tasks

Try saying...

  • "Show me all available tasks"
  • "List tasks"
  • "What tasks can I log time to?"

Get Current User

Retrieve information about the currently authenticated user

Returns

object Current user details including permissions and settings

Try saying...

  • "Who am I logged in as?"
  • "Show my user information"
  • "Get my account details"

List Clients

Retrieve all clients in your Harvest account

Returns

object Paginated list of clients

Try saying...

  • "Show me all clients"
  • "List clients"
  • "Get client list"

Getting Started

API Key Easy Setup
  1. 1 Sign in to Harvest ID at https://id.getharvest.com/
  2. 2 Click 'Developers' in the top navigation
  3. 3 Create a new Personal Access Token
  4. 4 Copy both the Access Token and Account ID
  5. 5 Add to shell config: echo 'export HARVEST_ACCESS_TOKEN="YOUR_TOKEN"' >> ~/.zshrc
  6. 6 Add to shell config: echo 'export HARVEST_ACCOUNT_ID="YOUR_ID"' >> ~/.zshrc
  7. 7 Restart terminal or run: source ~/.zshrc

Verify Setup

python scripts/client.py get-current-user

Success: Returns current user information

Security & Access

Access Scope

Full read/write access to all Harvest data including time entries, projects, tasks, clients, invoices, and reports for the specified account

  • Personal Access Token grants full access to your Harvest account
  • Token can create, update, and delete time entries, projects, and other data
  • Never share your access token or commit it to version control
  • Tokens can be revoked at any time from the Harvest ID Developers page
  • Consider creating a dedicated user account for API integrations if limited access is needed

Limitations

  • Personal Access Tokens grant full access to the account
  • Some endpoints require Administrator or Manager permissions
  • Deleting resources is only possible if they have no associated time entries

Get This Skill

Requires Pro subscription ($9/month)

Quick Reference

Type
REST API
Auth
API Key
Setup
Easy Setup
Tools Required
Bash
Python Dependencies
requests>=2.28.0

Have Feedback?

Help us improve this skill by sharing your ideas and suggestions.

Request Improvements