Something went wrong!
Hang in there while we get back on track
Harvest Integration
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
- 1 Sign in to Harvest ID at https://id.getharvest.com/
- 2 Click 'Developers' in the top navigation
- 3 Create a new Personal Access Token
- 4 Copy both the Access Token and Account ID
- 5 Add to shell config: echo 'export HARVEST_ACCESS_TOKEN="YOUR_TOKEN"' >> ~/.zshrc
- 6 Add to shell config: echo 'export HARVEST_ACCOUNT_ID="YOUR_ID"' >> ~/.zshrc
- 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
Documentation
Have Feedback?
Help us improve this skill by sharing your ideas and suggestions.
Request Improvements