Getting Started with Greenhouse API Integration: Developer's Guide to Integration

In this article, we will discuss a quick overview of popular Greenhouse APIs, key API endpoints, common FAQs, and a step-by-step guide on how to generate your Greenhouse API keys as well as steps to authenticate. Plus, we will also share links to important documentation you will need to effectively integrate with Greenhouse.

Overview of Greenhouse API

Greenhouse is an applicant tracking software (ATS) and hiring platform that empowers organizations to foster fair and equitable hiring practices. Whether you're a developer looking to integrate Greenhouse into your company's tech stack or an HR professional seeking to streamline your hiring workflows, the Greenhouse API offers a wide range of capabilities.

Let's explore the common Greenhouse APIs, popular endpoints, and how to generate your Greenhouse API keys.

Common Greenhouse APIs

Greenhouse offers eight APIs for different integration needs. Here are the most commonly used:

1. Harvest API

⚠️ Deprecation notice: Harvest v1/v2 is deprecated and will be removed on August 31, 2026. Migrate to Harvest v3 before that date.

The Harvest API is the primary gateway to your Greenhouse data, providing full read and write access to candidates, applications, jobs, interviews, feedback, and offers. Common actions include:

  • updating candidate information
  • adding attachments to candidate profiles
  • merging candidate profiles
  • managing the application process (advancing, hiring, or rejecting them).

Harvest v3 endpoints (base: https://harvest.greenhouse.io):

  • GET /v3/applications — list candidate applications
  • PATCH /v3/applications/{id} — update a candidate application
  • GET /v3/candidates — list candidates
  • POST /v3/candidates — create a candidate

Authentication (Harvest v3): Bearer token (JWT) obtained from https://auth.greenhouse.io/token, or OAuth2 (client credentials or authorization code flow). The v1/v2 pattern of HTTP Basic Auth with an API key does not apply to v3.

Pagination (Harvest v3): Cursor-based. Pass the cursor value from the previous response header to retrieve the next page. Returns up to 500 results per page via the per_page parameter.

Harvest v3 API reference →

Job Board API

Through the Greenhouse Job Board API, you gain access to a JSON representation of your company's offices, departments, and published job listings. Use it to build custom career pages and department-specific job listing sites.

Key endpoints:

  • GET /boards/{board_token}/jobs - list active job postings
  • POST /boards/{board_token}/jobs/{id} - submit a candidate application

Authentication: GET endpoints require no authentication - job board data is publicly accessible. The POST endpoint (application submission) requires HTTP Basic Auth with a Base64-encoded Job Board API key.

Job Board API documentation →

Assessment API

Primarily used for Greenhouse API to create and conduct customized tests across coding, interviews, personality tests, etc. to check the suitability of the candidate for a particular role. You can leverage tests from third party candidate testing platforms as well and update status for the same after the completion by candidate. 

Example endpoints:

  • GET https://www.testing-partner.com/api/list_tests — list available tests for a candidate
  • GET https://www.testing-partner.com/api/test_status?partner_interview_id=12345 — check the status of a take-home test

Authentication: HTTP Basic Authentication over HTTPS

Ingestion API

The Ingestion API allows sourcing partners to push candidate leads into Greenhouse and retrieve job and application status information.

Key endpoints:

  • GET https://api.greenhouse.io/v1/partner/candidates — retrieve data for a particular candidate
  • POST https://api.greenhouse.io/v1/partner/candidates — create one or more candidates
  • GET https://api.greenhouse.io/v1/partner/jobs — retrieve jobs visible to current user

Authentication: OAuth 2.0 and Basic Auth

Audit Log API

The Audit Log API provides a structured, queryable record of system activity in your Greenhouse account — useful for compliance auditing, security monitoring, and integration debugging.

Authentication: HTTP Basic Authentication over HTTPS

Onboarding API

The Greenhouse Onboarding API allows you to retrieve and update employee data and company information for onboarding workflows. This API uses GraphQL (not REST). Supports GET, PUT, POST, PATCH, and DELETE operations.

Authentication: HTTP Basic Authentication over HTTPS

Integrate with Greenhouse API 10X faster. Learn more

How to get a Greenhouse API token?

To make requests to Greenhouse's API, you would need an API Key. Here are the steps for generating an API key in Greenhouse:

Step 1: Go to the Greenhouse website and log in to your Greenhouse account using your credentials.

Step 2: Click on the "Configure" tab at the top of the Greenhouse interface.

Step 3: From the sidebar menu under "Configure," select "Dev Center."

Step 4: In the Dev Center, find the "API Credential Management" section.

Step 5: Click on "Create New API Key."

Step 6: Configure your API Key

  1. Select the API type you want to use.
  2. Give your API key a description that helps you identify its purpose or the application it will be used for.
  3. Specify the permissions you want to grant to this API key by clicking on “Manage Permissions”. Greenhouse provides granular control over the data and functionality that can be accessed with this key. You can restrict access to specific parts of the Greenhouse API to enhance security.

Step 7: After configuring the API key, click "Create" or a similar button to generate the API token. The greenhouse will display the API token on the screen. This is a long string of characters and numbers.

Step 8: Copy the API token and store it securely. Treat it as sensitive information, and do not expose it in publicly accessible code or repositories.

Important: Be aware that you won't have the ability to copy this API Key again, so ensure you store it securely.

Once you have obtained the API token, you can use it in the headers of your HTTP requests to authenticate and interact with the Greenhouse API. Make sure to follow Greenhouse's API documentation and guidelines for using the API token, and use it according to your specific integration needs.

Always prioritize the security of your API token to protect your Greenhouse account and data. If the API token is compromised, revoke it and generate a new one through the same process. 

Now, let’s jump in on how to authenticate for using the Greenhouse API.

How to authenticate Greenhouse API?

Harvest API v3 (current)

To authenticate with the Greenhouse API, follow these steps:

Step 1: Harvest v3 uses Bearer token authentication. Obtain a JWT access token by making a POST request to https://auth.greenhouse.io/token using OAuth2 client credentials. Pass the token in the Authorization header:

Authorization: Bearer YOUR_JWT_ACCESS_TOKEN

Step 2: Harvest v3 also supports the full OAuth2 authorization code flow for partner integrations that connect to multiple Greenhouse accounts. Scopes are granular — for example, harvest:applications:list to read applications, harvest:candidates:create to create candidates.

Harvest API v1/v2 (deprecated - removed August 31, 2026)

The legacy Harvest v1/v2 used HTTP Basic Auth. The API key was passed as the username with the password left blank. In practice, most HTTP clients handle this when you set the username to your API key and leave the password empty:

curl -u "YOUR_API_KEY:" https://harvest.greenhouse.io/v1/applications

If you are currently using v1/v2 Basic Auth, you must migrate to Harvest v3 token-based auth before August 31, 2026. Refer to the Harvest v3 migration guide for the updated auth flow.

Auth for Job Board API

GET endpoints require no authentication. The POST endpoint (submitting applications) requires HTTP Basic Auth with a Base64-encoded Job Board API key as the username.

Auth for Ingestion and Assessment APIs

Both use HTTP Basic Authentication over HTTPS. These APIs are designed for Greenhouse technology partners and require enrollment in the Greenhouse Partner Program.

Common FAQs on Greenhouse API

Check out some of the top FAQs for Greenhouse API to scale your integration process:

1. Is there pagination support for large datasets?

Yes, many API endpoints that provide a collection of results support pagination.
When results are paginated, the response will include a Link response header (as per RFC-5988) containing the following details:

  • "next": This corresponds to the URL leading to the next page.
  • "prev": This corresponds to the URL leading to the previous page.
  • "last": This corresponds to the URL leading to the last page.

When this header is not present, it means there is only a single page of results, which is the first page.

2. Are there rate limits for API requests?

Yes, Greenhouse imposes rate limits on API requests to ensure fair usage, as indicated in the `X-RateLimit-Limit` header (per 10 seconds).
If this limit is exceeded, the API will respond with an HTTP 429 error. To monitor your remaining allowed requests before throttling occurs, examine the `X-RateLimit-Limit` and `X-RateLimit-Remaining` headers. 

3. Does Greenhouse have a sandbox?

Yes, Greenhouse provides a sandbox that enables you to conduct testing and simulations effectively.

The sandbox is created as a blank canvas where you can manually input fictitious data, such as mock job listings, candidate profiles, or organizational information.

Refer here for more info.

4. What are the challenges of building Greenhouse API integration?

Building Greenhouse API integration on your own can be challenging, especially for a team with limited engineering resources. For example,

  • It can take around 4 weeks to up to 3 months to fully plan, build and deploy Greenhouse integration. And ongoing maintenance and monitoring of the API can take ~10 hours each week — all the time that could be invested into improving your core product features. To calculate the cost yourself, click here
  • The data models of Greenhouse API may not match the data models from other ATS applications (if you are building multiple ATS integrations). In that case, you need to spend additional bandwidth decoding and understanding nuances of Greenhouse API which again is not very productive use of in-house engineering resources.
  • You need to design and implement workflows to serve specific use cases of your customers using Greenhouse APIs.
  • The API is updated frequently, so you need to always keep an eye out for the changes to make sure your user experience is not diminished.
  • Handle integration issues manually as and when they arise.

5. When should I consider integrating with Greenhouse API?

Here are some of the common Greenhouse API use cases that would help you evaluate your integration need:

  • Access job listings from 1000+ job boards with recommendations based on historical trends
  • Create scorecard of key attributes for fair and consistent evaluation
  • Automate surveys for candidate experience and enable candidate to self schedule interviews
  • Access 40+ reports and dashboard snapshots
  • Automated tasks and reminders for smooth onboarding
  • Structured process for paperwork
  • Easy reports to understand onboarding trends

Ready to build?

If you want to quickly implement your Greenhouse API integration but don’t want to deal with authentication, authorization, rate limiting or integration maintenance, consider choosing a unified API like Knit.

Knit helps you integrate with 30+ ATS and HR applications, including Greenhouse, with just a single unified API. It brings down your integration building time from 3 months to a few hours.

Plus, Knit takes care of all the authentication, monitoring, and error handling that comes with building Greenhouse integration, thus saving you an additional 10 hours each week.

Ready to scale? Book a quick call with one of our experts or get your Knit API keys today. (Getting started is completely free)

#1 in Ease of Integrations

Trusted by businesses to streamline and simplify integrations seamlessly with GetKnit.