Harvest
Time tracking and invoicing software for teams and businesses. Track billable hours, manage projects, analyze profitability, and generate invoices.
Data Model
- Clients own projects. Create client first, then projects.
- Projects belong to clients. Assign users and tasks to projects.
- Tasks are project-level work types. Assign tasks to projects via task assignments.
- Time Entries record hours against project+task. Create, update, start/stop timer.
- Expenses are project-level costs with expense_category_id.
- Contacts belong to clients. Users are team members with project/task assignments.
Gotchas
- Configurable defaults: project_id, task_id, client_id can be set as defaults to avoid passing every request.
- Rate limit: 100 requests per 15 seconds (400/minute). Use exponential backoff on 429.
- Timer state: Only one running timer per user. Stop before starting another.