← All integrations

Harvest

57 operations0 webhooks

Time tracking and invoicing software for agencies, freelancers, and project billing.

Supported operations

  • CreateWrite

    Create a client

  • DeleteDestructive

    Delete a client

  • GetRead-only

    Get a client by id

  • ListRead-only

    List clients

  • UpdateWrite

    Update a client

FAQ

Install corsair and @corsair-dev/harvest, add the Harvest plugin, and connect with OAuth. Then call methods like corsair.harvest.api.clients.create() from your app. Corsair stores tokens, and syncs data per tenant.

Yes. Harvest needs an OAuth app with scopes that match what you automate. Register the app in Harvest, configure redirect URLs, then connect through Corsair or managed OAuth in Hub.

Yes. One Corsair client can hit Harvest, GitHub, Notion, Stripe, and the rest. Trigger Harvest from a webhook, push updates to Slack, or chain actions across plugins. Same tenant context across integrations, plain TypeScript.

Teams use Corsair for time tracking and invoicing software for agencies, freelancers, and project billing. Common builds include sync jobs, admin tooling, and agents that call Harvest APIs from your backend. Local DB entities let you query synced Harvest records without hitting the API on every read.

The SDK is open source. Self-host and you pay Corsair nothing for the integration layer. Hub bills for hosted auth and execution, not per Harvest API call. Hub has a generous free tier. For hobby projects you can probably run the whole thing on free. Paid plans start to matter with more tenants or heavier traffic.

We maintain @corsair-dev/harvest in the open repo. When Harvest ships API changes, upgrade the package. Your call sites stay typed. You should not need to rewrite the integration layer each time.

No. Corsair does not read your Harvest data or hold individual access credentials. Credentials stay in your database. API calls run on your instance. We do not store Harvest data on your behalf.