Greenhouse Component
Manage candidates, applications, and job postings in Greenhouse.
Component key: greenhouse · · Changelog ↓Description
Greenhouse is a recruiting and applicant tracking system platform. This component enables managing candidates, applications, and job postings in Greenhouse.
API Documentation
This component was built using the Greenhouse Harvest API.
Connections
API Key
key: apiTokenThe Greenhouse Harvest API uses Basic Auth over HTTPS for authentication. The username is the Greenhouse API token and the password should be blank. Unauthenticated requests will return an HTTP 401 response.
Prerequisites
- A Greenhouse user with the Can manage ALL organization's API Credentials permission granted in the Developer permission section.
Setup Steps
- Sign in to Greenhouse as a user with the required developer permissions.
- Navigate to Configure > Dev Center > API Credential Management.
- Create a Harvest API key and select which endpoints it may access:
- API Type: Harvest
- Partner: Custom
- Click Manage Permissions to continue.
- Copy the generated API key and store it in a secure location.
- Click I have stored the API key to continue.
- Select the actions this credential will be allowed to submit. Recommended sections for getting started:
- Users
- Applications
- Jobs
- Candidates
- Custom Field Options
- Optionally configure granular permissions for each section, then click Save to complete the setup.
Configure the Connection
- Create a connection of type API Key.
- Enter the generated API token in the API Key field.
| Input | Notes | Example |
|---|---|---|
| API Key | The API key for the Greenhouse user. API keys can be generated in Greenhouse by navigating to Configure > Dev Center > API Credential Management. | a7183e1b7e9ab09b8a5cfa87d1934c3c |
Triggers
New and Updated Applications
Checks for new and updated applications in Greenhouse on a configured schedule. | key: pollChangesTrigger
| Input | Notes | Example |
|---|---|---|
| Connection | The Greenhouse connection to use. | |
| Show New Records | When true, newly created applications are included in the trigger output. | true |
| Show Updated Records | When true, applications with new activity since the last poll are included in the trigger output. | true |
This trigger polls the Greenhouse Harvest API for new and updated applications on a configured schedule.
How It Works
- The trigger runs on the configured schedule (e.g., every 5 minutes)
- On each execution, applications updated since the last poll are fetched from the
GET /v1/applicationsendpoint using thelast_activity_afterquery parameter, with full pagination - Records are partitioned client-side into created or updated by comparing each application's
applied_atandlast_activity_attimestamps against the timestamp of the last successful poll - Applications whose
applied_atis newer than the last poll time are classified as created; applications with later activity that were applied before the last poll are classified as updated - The trigger updates its internal state with the current timestamp after each poll so subsequent executions only surface records changed since the previous run
- When no records match on a given run, the trigger reports
polledNoChangesso downstream flows are not invoked unnecessarily
Returned Data
The trigger returns an object containing two arrays — created for newly submitted applications and updated for applications with new activity since the last poll. Each array contains full Greenhouse application objects.
Example Response
{
"data": {
"created": [
{
"id": 69306314,
"candidate_id": 57683957,
"prospect": false,
"applied_at": "2024-08-21T12:00:00Z",
"last_activity_at": "2024-08-21T12:00:00Z",
"status": "active",
"current_stage": {
"id": 767358,
"name": "Application Review"
},
"jobs": [
{
"id": 107761,
"name": "UX Designer - Boston"
}
]
}
],
"updated": [
{
"id": 65153308,
"candidate_id": 53883394,
"prospect": false,
"applied_at": "2024-08-10T09:00:00Z",
"last_activity_at": "2024-08-21T14:22:00Z",
"status": "active",
"current_stage": {
"id": 2966800,
"name": "Face to Face"
},
"jobs": [
{
"id": 299100,
"name": "Data Scientist - BK"
}
]
}
]
}
}
Fields shown are representative. The full response object includes additional properties.
Notes
- This trigger uses the Greenhouse Harvest v1 API. The Harvest v1/v2 APIs are deprecated and will be removed on August 31, 2026 — migration to Harvest v3 will be required before that date
- On the very first execution, the trigger has no prior poll timestamp and uses the current time as its baseline, so no historical applications are emitted on the initial run — only changes that occur after the trigger is enabled will be surfaced
- Refer to the List Applications endpoint documentation for the full set of fields returned on each application and to the Harvest API documentation for rate limit details
Example Payload for New and Updated Applications⤓
Webhook
Receive and validate webhook requests from Greenhouse for webhooks you configure. | key: webhook
| Input | Notes | Example |
|---|---|---|
| Enabled Events | The list of webhook event names to accept in the integration. When empty, all events are accepted. | |
| Secret Key | The shared secret used to sign and verify the webhook payload signature. | 3T2eTfOvJbAIRoBpXsXPmq0gn8CmF5Q7 |
A Greenhouse webhook can be configured to send information to a flow's webhook URL when certain events occur (a candidate is hired, an application is created, an offer is approved, etc.).
How It Works
This trigger receives webhook requests from Greenhouse and validates the request signature using HMAC-SHA256. Each incoming request must include a Signature header containing a SHA-256 hash of the request body. If the signature does not match, the request is rejected.
When Enabled Events are configured, the trigger only processes requests whose action field matches one of the specified event types. All other events are rejected. If no enabled events are configured, all events are accepted.
Configuration
- Secret Key: The secret key used to verify webhook signatures. This must match the secret key configured in the Greenhouse webhook settings.
- Enabled Events: An optional list of event action types to accept. If left empty, all events are accepted.
Event Types
Available Events (28)
| Event | Description |
|---|---|
new_candidate_application | A new candidate application is submitted |
new_prospect_application | A new prospect application is created |
delete_application | An application is deleted |
application_updated | An application is updated |
offer_created | An offer is created for a candidate |
offer_approved | An offer is approved |
offer_updated | An offer is updated |
offer_deleted | An offer is deleted |
delete_candidate | A candidate is deleted |
hire_candidate | A candidate is hired |
unhire_candidate | A candidate hire is reversed |
merge_candidate | Two candidate records are merged |
candidate_stage_change | A candidate moves to a different interview stage |
reject_candidate | A candidate is rejected |
unreject_candidate | A candidate rejection is reversed |
update_candidate | A candidate record is updated |
candidate_anonymized | A candidate record is anonymized |
interview_deleted | An interview is deleted |
scorecard_deleted | A scorecard is deleted |
job_created | A new job is created |
job_deleted | A job is deleted |
job_updated | A job is updated |
job_approved | A job is approved |
job_post_created | A job post is created |
job_post_updated | A job post is updated |
job_post_deleted | A job post is deleted |
department_deleted | A department is deleted |
office_deleted | An office is deleted |
Refer to the Greenhouse webhook documentation for the complete and up-to-date list of events.
Returned Data
Example Payload
{
"action": "new_candidate_application",
"payload": {
"application": {
"id": 46194062,
"candidate_id": 34172063,
"prospect": false,
"applied_at": "2024-01-15T10:30:00Z",
"current_stage": {
"id": 6813488,
"name": "Application Review"
},
"jobs": [
{
"id": 371417,
"name": "Software Engineer"
}
]
}
}
}
Notes
- The Secret Key must match the secret key configured in the Greenhouse webhook settings. Navigate to Configure > Dev Center > Webhooks in Greenhouse to locate or create webhook configurations.
- Signature verification uses HMAC-SHA256. The
Signatureheader from Greenhouse contains the value in the formatsha256 [hash].
Example Payload for Webhook⤓
Data Sources
Fetch Applications
Fetches an array of applications. | key: applications | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The Greenhouse connection to use. | |
| API Version | The version of the Greenhouse Harvest API to use. Defaults to "v1". | v1 |
Example Payload for Fetch Applications⤓
Fetch Candidate Names
Fetches an array of candidate names. | key: candidates | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The Greenhouse connection to use. | |
| API Version | The version of the Greenhouse Harvest API to use. Defaults to "v1". | v1 |
Example Payload for Fetch Candidate Names⤓
Fetch Custom Fields
Fetches an array of custom field names. | key: customFields | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The Greenhouse connection to use. | |
| Field Type | ||
| API Version | The version of the Greenhouse Harvest API to use. Defaults to "v1". | v1 |
Example Payload for Fetch Custom Fields⤓
Fetch Departments
Fetches an array of department names. | key: departments | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The Greenhouse connection to use. | |
| API Version | The version of the Greenhouse Harvest API to use. Defaults to "v1". | v1 |
Example Payload for Fetch Departments⤓
Fetch Jobs
Fetches an array of job names. | key: jobs | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The Greenhouse connection to use. | |
| API Version | The version of the Greenhouse Harvest API to use. Defaults to "v1". | v1 |
Example Payload for Fetch Jobs⤓
Fetch Offices
Fetches an array of office names. | key: offices | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The Greenhouse connection to use. | |
| API Version | The version of the Greenhouse Harvest API to use. Defaults to "v1". | v1 |
Example Payload for Fetch Offices⤓
Fetch User Names
Fetches an array of user names. | key: users | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The Greenhouse connection to use. | |
| API Version | The version of the Greenhouse Harvest API to use. Defaults to "v1". | v1 |
Example Payload for Fetch User Names⤓
Actions
Create Candidate
Creates a new candidate. | key: createCandidate
| Input | Notes | Example |
|---|---|---|
| Addresses | The JSON array of postal addresses for the candidate. Passing an empty array will clear all. Format: JSON array of objects. | |
| Applications | The JSON array of application objects to create with the candidate. At least one is required. Format: JSON array of objects. | |
| Company | The company name associated with the candidate. | Acme Corporation |
| Connection | The Greenhouse connection to use. | |
| Custom Fields | The JSON array of hashes containing new custom field values. Passing an empty array does nothing. Format: JSON array of objects. | |
| Educations | The JSON array of education records for the candidate. Format: JSON array of objects. | |
| Email Addresses | The JSON array of email addresses for the candidate. Passing an empty array will clear all. Format: JSON array of objects. | |
| Employments | The JSON array of employment records for the candidate. Format: JSON array of objects. | |
| First Name | The candidate's first name | John |
| Last Name | The candidate's last name | Doe |
| Phone Numbers | The JSON array of phone numbers for the candidate. Passing an empty array will clear all. Format: JSON array of objects. | |
| Social Media Addresses | The JSON array of social media addresses for the candidate. Passing an empty array will clear all. Format: JSON array of objects. | |
| Tags | The tags to assign to the candidate as an array of strings. Passing an empty array will clear all. | ["Senior", "Remote"] |
| Title | The job title associated with the candidate. | Software Engineer |
| On Behalf Of User ID | The unique identifier of the user issuing this request. Required for auditing purposes. | 92120 |
| API Version | The version of the Greenhouse Harvest API to use. Defaults to "v1". | v1 |
| Website Addresses | The JSON array of website addresses for the candidate. Passing an empty array will clear all. Format: JSON array of objects. |
Example Payload for Create Candidate⤓
Create Job
Creates a new job. | key: createJob
| Input | Notes | Example |
|---|---|---|
| Connection | The Greenhouse connection to use. | |
| Department ID | The department of the new job. This should be a department id from the Departments endpoint. If this element is omitted, the new job will receive the department of the template job. If this element is included but blank, it will create the job with no departments. If the organization requires jobs to have a department, this case will return a 422 response. | 123 |
| External Department ID | The external system department identifier. May be used instead of Department ID and represents the ID of the department in an external system. | EXTERNAL_ID_1234 |
| External Office IDs | The external system office identifiers. May be used instead of Office IDs and represents the ID of the office in an external system. If this is used, Office IDs must be blank and vice versa. | ["abc13425", "13432"] |
| Job Name | The internal name of the new job. When omitted, the name of the new job will be "Copy Of (the template job's name)". | Software Engineer - Backend |
| Job Post Name | The display name for the new job post. When omitted, the job post names from the base job are copied. | Senior Software Engineer - Remote |
| Number of Openings | The number of openings that will be created for this job. | 3 |
| Office IDs | The offices of the new job. These should be office ids from the Offices endpoint. If this element is omitted, the new job will receive the offices of the template job. If this element is included but blank, it will create the job with no offices. If the organization requires jobs to have an office, this case will return a 422 response. | ["234", "345"] |
| Opening IDs | The opening identifiers for the job. Must be a valid set of opening IDs. | ["123", "124", "125"] |
| Requisition ID | The requisition identifier to filter jobs by. When included, only jobs that match the given requisition_id are returned. | abc-123 |
| Template Job ID | The unique identifier for the job used as a template. The new job will inherit most settings from this template job. The On-Behalf-Of user must have access to this job. | 127817 |
| On Behalf Of User ID | The unique identifier of the user issuing this request. Required for auditing purposes. | 92120 |
| API Version | The version of the Greenhouse Harvest API to use. Defaults to "v1". | v1 |
Example Payload for Create Job⤓
Create User
Creates a new user. | key: createUser
| Input | Notes | Example |
|---|---|---|
| Connection | The Greenhouse connection to use. | |
| Custom Fields | The JSON array of hashes containing new custom field values. Passing an empty array does nothing. Format: JSON array of objects. | |
| Department IDs | The department identifiers associated with a user. Must be a valid set of department IDs. Passing an empty array does nothing. | ["123"] |
The email address of the user. Must be a valid email address. | john.doe@example.com | |
| Employee ID | The external employee identifier for the user. | 12345 |
| External Department IDs | The external system department identifiers. May be used instead of Department IDs and represents the ID of the department in an external system. If this is used, Department IDs must be blank and vice versa. | ["EXTERNAL_ID_1234"] |
| External Office IDs | The external system office identifiers. May be used instead of Office IDs and represents the ID of the office in an external system. If this is used, Office IDs must be blank and vice versa. | ["abc13425", "13432"] |
| First Name | The given (first) name of the user. | John |
| Last Name | The family (last) name of the user. | Doe |
| Office IDs | The office identifiers associated with a user. Must be a valid set of office IDs. Passing an empty array does nothing. | ["234", "345"] |
| Send Email Invite | When true, an email is sent to the user alerting them of any new job permissions that have been assigned to them. Emails are never sent when permissions are removed. | false |
| On Behalf Of User ID | The unique identifier of the user issuing this request. Required for auditing purposes. | 92120 |
| API Version | The version of the Greenhouse Harvest API to use. Defaults to "v1". | v1 |
Example Payload for Create User⤓
Delete Application
Deletes an application by ID. | key: deleteApplication
| Input | Notes | Example |
|---|---|---|
| Application ID | The unique identifier for the application. | 69102626 |
| Connection | The Greenhouse connection to use. | |
| On Behalf Of User ID | The unique identifier of the user issuing this request. Required for auditing purposes. | 92120 |
| API Version | The version of the Greenhouse Harvest API to use. Defaults to "v1". | v1 |
Example Payload for Delete Application⤓
Delete Candidate
Deletes a candidate by ID. | key: deleteCandidate
| Input | Notes | Example |
|---|---|---|
| Candidate ID | ID of the candidate to delete. | 53883394 |
| Connection | The Greenhouse connection to use. | |
| On Behalf Of User ID | The unique identifier of the user issuing this request. Required for auditing purposes. | 92120 |
| API Version | The version of the Greenhouse Harvest API to use. Defaults to "v1". | v1 |
Example Payload for Delete Candidate⤓
Disable User
Disables an existing user. | key: disableUser
| Input | Notes | Example |
|---|---|---|
| Connection | The Greenhouse connection to use. | |
The email address of the user. Must be a valid email address. | john.doe@example.com | |
| On Behalf Of User ID | The unique identifier of the user issuing this request. Required for auditing purposes. | 92120 |
| API Version | The version of the Greenhouse Harvest API to use. Defaults to "v1". | v1 |
Example Payload for Disable User⤓
Edit Application
Updates an application by ID. | key: editApplication
| Input | Notes | Example |
|---|---|---|
| Application ID | The unique identifier for the application. | 69102626 |
| Connection | The Greenhouse connection to use. | |
| Custom Fields | The JSON array of hashes containing new custom field values. Passing an empty array does nothing. Format: JSON array of objects. | |
| Prospect Pool ID | The unique identifier for the prospect pool for the application. | 123 |
| Prospect Stage ID | The unique identifier for the prospect pool stage for the application. | 456 |
| Referrer | The JSON object representing the referrer that brought the candidate to apply. Format: JSON object with type and value. | |
| Source ID | The unique identifier for the source of the application. | 2 |
| On Behalf Of User ID | The unique identifier of the user issuing this request. Required for auditing purposes. | 92120 |
| API Version | The version of the Greenhouse Harvest API to use. Defaults to "v1". | v1 |
Example Payload for Edit Application⤓
Edit Candidate
Updates an existing candidate. | key: editCandidate
| Input | Notes | Example |
|---|---|---|
| Addresses | The JSON array of postal addresses for the candidate. Passing an empty array will clear all. Format: JSON array of objects. | |
| Candidate ID | The unique identifier for the candidate. | 53883394 |
| Company | The company name associated with the candidate. | Acme Corporation |
| Connection | The Greenhouse connection to use. | |
| Coordinator | An object representing the candidate's new coordinator | |
| Custom Fields | The JSON array of hashes containing new custom field values. Passing an empty array does nothing. Format: JSON array of objects. | |
| Email Addresses | The JSON array of email addresses for the candidate. Passing an empty array will clear all. Format: JSON array of objects. | |
| First Name | The candidate's first name | John |
| Is Private | When true, the candidate will be marked as private. | false |
| Last Name | The candidate's last name | Doe |
| Phone Numbers | The JSON array of phone numbers for the candidate. Passing an empty array will clear all. Format: JSON array of objects. | |
| Recruiter | An object representing the candidate's new recruiter | |
| Social Media Addresses | The JSON array of social media addresses for the candidate. Passing an empty array will clear all. Format: JSON array of objects. | |
| Tags | The tags to assign to the candidate as an array of strings. Passing an empty array will clear all. | ["Senior", "Remote"] |
| Title | The job title associated with the candidate. | Software Engineer |
| On Behalf Of User ID | The unique identifier of the user issuing this request. Required for auditing purposes. | 92120 |
| API Version | The version of the Greenhouse Harvest API to use. Defaults to "v1". | v1 |
| Website Addresses | The JSON array of website addresses for the candidate. Passing an empty array will clear all. Format: JSON array of objects. |
Example Payload for Edit Candidate⤓
Edit Job
Updates a job by ID. | key: editJob
| Input | Notes | Example |
|---|---|---|
| Anywhere | When true, indicates the job can be done from anywhere (remote position). | false |
| Connection | The Greenhouse connection to use. | |
| Custom Fields | The JSON array of hashes containing new custom field values. Passing an empty array does nothing. Format: JSON array of objects. | |
| Department ID | The unique identifier for the department. When included, only jobs in this specific department are returned. | 123 |
| External Department ID | The external system department identifier. May be used instead of Department ID and represents the ID of the department in an external system. | EXTERNAL_ID_1234 |
| External Office IDs | The external system office identifiers. May be used instead of Office IDs and represents the ID of the office in an external system. If this is used, Office IDs must be blank and vice versa. | ["abc13425", "13432"] |
| How to Sell This Job | The recruiter-facing description of the desirable aspects of the job. | Competitive salary, flexible hours, and great company culture |
| Job ID | The unique identifier for the job to filter by. When supplied, only candidates that have applied to this job (or are prospects for it) are returned. | 127817 |
| Job Name | The job's name | Software Engineer - Backend |
| Notes | The free-form notes attached to the hiring plan. | Looking for candidates with 5+ years experience |
| Office IDs | Replace the current offices for this job with new offices. If the organization requires at least one office, trying to set this to blank will return an error. | ["234", "345"] |
| Requisition ID | The requisition identifier to filter jobs by. When included, only jobs that match the given requisition_id are returned. | abc-123 |
| Team and Responsibilities | The description of the team the candidate would join and the responsibilities of the role. | Join our engineering team to build scalable web applications |
| On Behalf Of User ID | The unique identifier of the user issuing this request. Required for auditing purposes. | 92120 |
| API Version | The version of the Greenhouse Harvest API to use. Defaults to "v1". | v1 |
Example Payload for Edit Job⤓
Edit User
Updates an existing user. | key: editUser
| Input | Notes | Example |
|---|---|---|
| Connection | The Greenhouse connection to use. | |
| Custom Fields | Array of hashes containing new custom field values. Passing an empty array does nothing. | |
| Department IDs | Replace the current departments for this user with new departments. An empty array will remove all departments on this user. | ["123"] |
The user element must contain one of ‘employee_id’, 'email’, or 'user_id’, but not more than one. If included, this cannot be blank, nor can it match any other email for a user in this organization. | john.doe@example.com | |
| Employee ID | The user’s external employee id. If included, this cannot be blank, nor can it match any other employee-id for a user in this organization. | 12345 |
| External Department IDs | This may be used instead of department_ids and represents the ID of the department in an external system. If used, department_ids must be blank and vice versa. | ["EXTERNAL_ID_1234"] |
| External Office IDs | This may be used instead of office_ids and represents the ID of the office in an external system. If this is used, office_ids must be blank and vice versa. | ["abc13425", "13432"] |
| First Name | The user’s new first name. If included, this cannot be blank. | John |
| Last Name | The user’s new last name. If included, this cannot be blank. | Doe |
| Office IDs | Replace the current offices for this user with new offices. An empty array will remove all offices on this user. | ["234", "345"] |
| On Behalf Of User ID | The unique identifier of the user issuing this request. Required for auditing purposes. | 92120 |
| API Version | The version of the Greenhouse Harvest API to use. Defaults to "v1". | v1 |
Example Payload for Edit User⤓
Enable User
Enables an existing user. | key: enableUser
| Input | Notes | Example |
|---|---|---|
| Connection | The Greenhouse connection to use. | |
The email address of the user. Must be a valid email address. | john.doe@example.com | |
| On Behalf Of User ID | The unique identifier of the user issuing this request. Required for auditing purposes. | 92120 |
| API Version | The version of the Greenhouse Harvest API to use. Defaults to "v1". | v1 |
Example Payload for Enable User⤓
Get Application
Retrieves an application by ID. | key: getApplication
| Input | Notes | Example |
|---|---|---|
| Application ID | The unique identifier for the application. | 69102626 |
| Connection | The Greenhouse connection to use. | |
| API Version | The version of the Greenhouse Harvest API to use. Defaults to "v1". | v1 |
Example Payload for Get Application⤓
Get Candidate
Retrieves a candidate by ID. | key: getCandidate
| Input | Notes | Example |
|---|---|---|
| Candidate ID | The unique identifier for the candidate. | 53883394 |
| Connection | The Greenhouse connection to use. | |
| API Version | The version of the Greenhouse Harvest API to use. Defaults to "v1". | v1 |
Example Payload for Get Candidate⤓
Get Job
Retrieves a job by ID. | key: getJob
| Input | Notes | Example |
|---|---|---|
| Connection | The Greenhouse connection to use. | |
| Job ID | The unique identifier for the job to filter by. When supplied, only candidates that have applied to this job (or are prospects for it) are returned. | 127817 |
| API Version | The version of the Greenhouse Harvest API to use. Defaults to "v1". | v1 |
Example Payload for Get Job⤓
Get User
Retrieves a user by ID. | key: getUser
| Input | Notes | Example |
|---|---|---|
| Connection | The Greenhouse connection to use. | |
| On Behalf Of User ID | ID of the user to get. | 92120 |
| API Version | The version of the Greenhouse Harvest API to use. Defaults to "v1". | v1 |
Example Payload for Get User⤓
List Applications
Retrieves a list of applications. | key: listApplications
| Input | Notes | Example |
|---|---|---|
| Connection | The Greenhouse connection to use. | |
| Created After | The lower bound timestamp filter — only records created at or after this value are returned. Format: ISO-8601. | 2024-01-01T00:00:00Z |
| Created Before | The upper bound timestamp filter — only records created before this value are returned. Format: ISO-8601. | 2024-01-15T10:30:00Z |
| Job ID | The unique identifier for the job to filter by. When supplied, only candidates that have applied to this job (or are prospects for it) are returned. | 127817 |
| Last Activity After | The lower bound activity timestamp filter — only applications whose 'last_activity_at' is at or after this value are returned. Format: ISO-8601. | 2024-01-01T00:00:00Z |
| Page | The 1-based page number to return. Each page contains up to the configured page size. | 1 |
| Page Size | The maximum number of results to return per page. Must be an integer between 1 and 500. | 100 |
| Status | The status to filter applications by. Accepted values are active, converted, hired, and rejected. If anything else is used, an empty response will be returned rather than an error. | active |
| API Version | The version of the Greenhouse Harvest API to use. Defaults to "v1". | v1 |
Example Payload for List Applications⤓
List Candidates
Retrieves a list of candidates. | key: listCandidates
| Input | Notes | Example |
|---|---|---|
| Candidate IDs | The comma-separated list of candidate IDs to return (e.g. '123,456,789'). When combined with Job ID, only candidates with an application on the job are returned. A maximum of 50 candidates can be returned this way. | 123,456,789 |
| Connection | The Greenhouse connection to use. | |
| Created After | The lower bound timestamp filter — only records created at or after this value are returned. Format: ISO-8601. | 2024-01-01T00:00:00Z |
| Created Before | The upper bound timestamp filter — only records created before this value are returned. Format: ISO-8601. | 2024-01-15T10:30:00Z |
If supplied, only return candidates who have a matching e-mail address. If supplied with job_id, only return a candidate with a matching e-mail with an application on the job. If email and candidate_ids are included, candidate_ids will be ignored. | john.doe@example.com | |
| Job ID | The unique identifier for the job to filter by. When supplied, only candidates that have applied to this job (or are prospects for it) are returned. | 127817 |
| Page | The 1-based page number to return. Each page contains up to the configured page size. | 1 |
| Page Size | The maximum number of results to return per page. Must be an integer between 1 and 500. | 100 |
| Updated After | The lower bound timestamp filter — only records updated at or after this value are returned. Format: ISO-8601. | 2024-01-01T00:00:00Z |
| Updated Before | The upper bound timestamp filter — only records updated before this value are returned. Format: ISO-8601. | 2024-01-15T10:30:00Z |
| API Version | The version of the Greenhouse Harvest API to use. Defaults to "v1". | v1 |
Example Payload for List Candidates⤓
List Jobs
Retrieves a list of jobs. | key: listJobs
| Input | Notes | Example |
|---|---|---|
| Connection | The Greenhouse connection to use. | |
| Created After | The lower bound timestamp filter — only records created at or after this value are returned. Format: ISO-8601. | 2024-01-01T00:00:00Z |
| Created Before | The upper bound timestamp filter — only records created before this value are returned. Format: ISO-8601. | 2024-01-15T10:30:00Z |
| Custom Fields | The JSON array of hashes containing new custom field values. Passing an empty array does nothing. Format: JSON array of objects. | |
| Department ID | The unique identifier for the department. When included, only jobs in this specific department are returned. | 123 |
| External Department ID | The external system department identifier. May be used instead of Department ID and represents the ID of the department in an external system. | EXTERNAL_ID_1234 |
| External Office ID | The external system office identifier. May be used instead of Office ID and represents the ID of the office in an external system. | abc13425 |
| Office ID | The unique identifier for the office. When included, only jobs in this specific office are returned. | 234 |
| Opening ID | The unique identifier for an opening. When included, only jobs that contain at least one opening with this ID are returned. | 123 |
| Page | The 1-based page number to return. Each page contains up to the configured page size. | 1 |
| Page Size | The maximum number of results to return per page. Must be an integer between 1 and 500. | 100 |
| Requisition ID | The requisition identifier to filter jobs by. When included, only jobs that match the given requisition_id are returned. | abc-123 |
| Status | One of 'open', 'closed', or 'draft'. If included, will only return jobs with that status. | active |
| Updated After | The lower bound timestamp filter — only records updated at or after this value are returned. Format: ISO-8601. | 2024-01-01T00:00:00Z |
| Updated Before | The upper bound timestamp filter — only records updated before this value are returned. Format: ISO-8601. | 2024-01-15T10:30:00Z |
| API Version | The version of the Greenhouse Harvest API to use. Defaults to "v1". | v1 |
Example Payload for List Jobs⤓
List Users
Retrieves a list of users. | key: listUsers
| Input | Notes | Example |
|---|---|---|
| Connection | The Greenhouse connection to use. | |
| Created After | The lower bound timestamp filter — only records created at or after this value are returned. Format: ISO-8601. | 2024-01-01T00:00:00Z |
| Created Before | The upper bound timestamp filter — only records created before this value are returned. Format: ISO-8601. | 2024-01-15T10:30:00Z |
The email address of the user. Must be a valid email address. | john.doe@example.com | |
| Employee ID | The external employee identifier for the user. | 12345 |
| Page | The 1-based page number to return. Each page contains up to the configured page size. | 1 |
| Page Size | The maximum number of results to return per page. Must be an integer between 1 and 500. | 100 |
| Updated After | The lower bound timestamp filter — only records updated at or after this value are returned. Format: ISO-8601. | 2024-01-01T00:00:00Z |
| Updated Before | The upper bound timestamp filter — only records updated before this value are returned. Format: ISO-8601. | 2024-01-15T10:30:00Z |
| Include User Attributes | When true, includes user attributes in the response. | false |
| API Version | The version of the Greenhouse Harvest API to use. Defaults to "v1". | v1 |
Example Payload for List Users⤓
Raw Request
Sends a raw HTTP request to Greenhouse. | key: rawRequest
| Input | Notes | Example |
|---|---|---|
| Connection | The Greenhouse connection to use. | |
| Data | The HTTP body payload to send to the URL. | {"exampleKey": "Example Data"} |
| File Data | File Data to be sent as a multipart form upload. | [{key: "example.txt", value: "My File Contents"}] |
| File Data File Names | File names to apply to the file data inputs. Keys must match the file data keys above. | |
| Form Data | The Form Data to be sent as a multipart form upload. | [{"key": "Example Key", "value": new Buffer("Hello World")}] |
| Header | A list of headers to send with the request. | User-Agent: curl/7.64.1 |
| Max Retry Count | The maximum number of retries to attempt. Specify 0 for no retries. | 0 |
| Method | The HTTP method to use. | |
| Query Parameter | A list of query parameters to send with the request. This is the portion at the end of the URL similar to ?key1=value1&key2=value2. | |
| Response Type | The type of data you expect in the response. You can request json, text, or binary data. | json |
| Retry On All Errors | If true, retries on all erroneous responses regardless of type. This is helpful when retrying after HTTP 429 or other 3xx or 4xx errors. Otherwise, only retries on HTTP 5xx and network errors. | false |
| Retry Delay (ms) | The delay in milliseconds between retries. This is used when 'Use Exponential Backoff' is disabled. | 0 |
| Timeout | The maximum time that a client will await a response to its request | 2000 |
| URL | Input the path only (/jobs), The base URL is already included (https://harvest.greenhouse.io/{version}). For example, to connect to https://harvest.greenhouse.io/v1/jobs, only /jobs is entered in this field. | /jobs |
| Use Exponential Backoff | Specifies whether to use a pre-defined exponential backoff strategy for retries. When enabled, 'Retry Delay (ms)' is ignored. | false |
| API Version | The version of the Greenhouse Harvest API to use. Defaults to "v1". | v1 |
Example Payload for Raw Request⤓
Changelog
2026-05-26
- Added the New and Updated Applications polling trigger using the Harvest API's
last_activity_afterfilter. The trigger walks all paginated results and partitions them into created and updated buckets based on each application'screated_atandlast_activity_attimestamps - Changed the Secret Key trigger input to a masked password field to prevent the value from being exposed in plaintext within the configuration UI
2026-04-30
Updated spectral version
2026-04-07
Added trigger documentation and global debug support across all actions for improved troubleshooting
2026-03-31
Various modernizations and documentation updates
2026-03-13
Removed the Debug Request input from all action inputs. Debug logging is now controlled internally and no longer appears as a configurable field in actions.
2026-02-26
Added inline data sources for offices, departments, applications, users, candidates, jobs, and templates to enable dynamic dropdown selection