Harvest
Connect & Ingest data from Harvest
Harvest is a time tracking and invoicing tool used by teams and freelancers to log hours, manage projects, track expenses, and send invoices. The Sling Harvest connector extracts data from the Harvest REST API v2, supporting users, clients, projects, tasks, time entries, invoices, estimates, expenses, roles, and assignments.
CLI Pro Required: APIs require a CLI Pro token or Platform Plan.
Setup
The following credentials are accepted:
Secrets:
api_key(required) -> Your Harvest Personal Access Tokenaccount_id(required) -> Your Harvest Account ID
Inputs (optional):
anchor_date-> Starting date for first sync of incremental endpoints (ISO 8601 format, e.g.,2024-01-01T00:00:00Z). Defaults to 1 year ago.
Getting Your Credentials
Log in to Harvest
Go to Developer Tools
Click Create New Personal Access Token
Give the token a name (e.g., "Sling Integration")
Copy both the Token and Account ID
Important: The Personal Access Token grants full access to your Harvest account data. Keep it secure and use a dedicated account for production workloads.
Using sling conns
sling connsHere are examples of setting a connection named HARVEST. We must provide the type=api property:
Environment Variable
See here to learn more about the .env.sling file.
Sling Env File YAML
See here to learn more about the sling env.yaml file.
Replication
Here's an example replication configuration to sync Harvest data to a PostgreSQL database:
Incremental sync for all supported endpoints:
Endpoints
users
All users in the account
Yes
β
clients
All clients
Yes
β
contacts
All client contacts
Yes
β
projects
All projects
Yes
β
tasks
All tasks
Yes
β
roles
All roles
Yes
β
company
Company settings (single record)
No
β
time_entries
All time entries
Yes
β
invoices
All invoices
Yes
β
invoice_messages
Messages for each invoice
No
invoices
invoice_payments
Payments for each invoice
No
invoices
invoice_item_categories
Invoice line item categories
Yes
β
estimates
All estimates
Yes
β
estimate_messages
Messages for each estimate
No
estimates
estimate_item_categories
Estimate line item categories
Yes
β
expenses
All expenses
Yes
β
expense_categories
Expense categories
Yes
β
user_assignments
User-to-project assignments
Yes
β
task_assignments
Task-to-project assignments
Yes
β
user_billable_rates
Billable rates for each user
No
users
user_cost_rates
Cost rates for each user
No
users
The connector uses a queue-based architecture for child endpoints. The invoices endpoint populates invoice IDs into a queue consumed by invoice_messages and invoice_payments. Similarly, estimates feeds estimate_messages, and users feeds user_billable_rates and user_cost_rates.
To discover available endpoints:
Incremental Sync
Most endpoints support incremental sync using the updated_since parameter:
First run: Fetches all records updated within the last year (or since
anchor_dateif provided)Subsequent runs: Only fetches records modified after the last sync timestamp
Update key:
updated_at
Child endpoints (invoice_messages, invoice_payments, estimate_messages, user_billable_rates, user_cost_rates) and the company endpoint always run in full-refresh mode since they don't support time-based filtering.
Rate Limiting
The Harvest API enforces a rate limit of 100 requests per 15 seconds. The connector automatically:
Uses conservative rate limiting (5 requests/second with concurrency of 3)
Retries with exponential backoff on 429 (rate limit) responses, up to 5 attempts
Common Use Cases
Sync All Harvest Data
Track Time Entries and Projects Incrementally
Export Invoices and Expenses
If you are facing issues connecting, please reach out to us at [email protected], on discord or open a Github Issue here.
Last updated
Was this helpful?