Skip to main content
greenhouse icon

Greenhouse Connector

SourceAPI DocsAPI Docs (Harvest v3)API ChangelogConnector 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 (Harvest v1/v2)

key: apiToken

Deprecation Notice: this connection authenticates against the Harvest v1/v2 API, which sunsets on August 31, 2026. Use the OAuth 2.0 Client Credentials (Harvest V3) connection for the Harvest v3 API instead.

The 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

  1. Sign in to Greenhouse as a user with the required developer permissions.
  2. Navigate to Configure > Dev Center > API Credential Management.
  3. Create a Harvest API key and select which endpoints it may access:
    • API Type: Harvest
    • Partner: Custom
  4. Click Manage Permissions to continue.
  5. Copy the generated API key and store it in a secure location.
  6. Click I have stored the API key to continue.
  7. Select the actions this credential will be allowed to submit. Recommended sections for getting started:
    • Users
    • Applications
    • Jobs
    • Candidates
    • Custom Field Options
  8. Optionally configure granular permissions for each section, then click Save to complete the setup.

Configure the Connection

  1. Create a connection of type API Key (Harvest v1/v2).
  2. Enter the generated API token in the API Key field.
InputNotesExample
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

OAuth 2.0 Client Credentials (Harvest V3)

key: oauth2ClientCredentials

The Greenhouse Harvest v3 API uses the OAuth 2.0 client credentials flow for authentication. Access tokens are obtained automatically at execution time by exchanging the client ID and client secret. No browser-based authorization is required.

Prerequisites

  • A Greenhouse user with permission to manage the organization's API credentials.

Setup Steps

  1. Sign in to Greenhouse as a user with the required developer permissions.
  2. Open API Credentials and click Create new API credentials.
  3. Select Harvest V3 (OAuth) as the credential type.
  4. Select the endpoints this credential will be allowed to access. Recommended sections for getting started:
    • Applications
    • Candidates
    • Jobs
    • Users
  5. Copy the generated Client ID and Client Secret and store them in a secure location.

Configure the Connection

  1. Create a connection of type OAuth 2.0 Client Credentials (Harvest V3).
  2. Enter the Client ID from the generated credentials.
  3. Enter the Client Secret from the generated credentials.

Request Attribution

All requests act as the integration service user attached to the credentials. Harvest write endpoints attribute changes to that user for auditing purposes.

Refer to the authentication documentation for additional details.

InputNotesExample
Client ID

The client ID of your Greenhouse custom integration. Credentials can be created in Greenhouse under API Credentials by selecting Harvest V3 (OAuth).

abcdef1234567890abcdef1234567890
Client Secret

The client secret of your Greenhouse custom integration.

1234567890abcdef1234567890abcdef
Scopes

Permissions are configured on the credential in Greenhouse, not requested via OAuth scopes.

Token URL

The OAuth token URL.

https://auth.greenhouse.io/token

Triggers

New and Updated Applications

Checks for new and updated applications in Greenhouse on a configured schedule. | key: pollChangesTriggerV3

InputNotesExample
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 v3 API for new and updated applications on a configured schedule.

How It Works

  1. The trigger runs on the configured schedule (e.g., every 5 minutes)
  2. On each execution, applications with activity since the last poll are fetched from the GET /v3/applications endpoint using the last_activity_at[gte] query parameter, following the cursor-based pagination until all pages are read
  3. Records are partitioned client-side into created or updated by comparing each application's created_at and last_activity_at timestamps against the timestamp of the last successful poll
  4. Applications whose created_at is newer than the last poll time are classified as created; applications with later activity that were created before the last poll are classified as updated
  5. The trigger updates its internal state with the current timestamp after each poll so subsequent executions only surface records changed since the previous run
  6. When no records match on a given run, the trigger reports polledNoChanges so downstream flows are not invoked unnecessarily

Returned Data

The trigger returns an object containing two arrays: created for newly created applications and updated for applications with new activity since the last poll. Each array contains full Harvest v3 application objects.

Example Response
{
"data": {
"created": [
{
"id": 69306314,
"candidate_id": 57683957,
"job_id": 107761,
"job_post_id": 123,
"referrer_id": 4080,
"source_id": 2,
"recruiter_id": 92120,
"coordinator_id": null,
"stage_id": 2708728,
"stage_name": "Application Review",
"status": "in_process",
"prospect": false,
"needs_decision": false,
"rejection_reason_id": null,
"created_at": "2026-05-20T14:00:00Z",
"updated_at": "2026-05-20T14:00:00Z",
"last_activity_at": "2026-05-20T14:00:00Z"
}
],
"updated": [
{
"id": 65153308,
"candidate_id": 53883394,
"job_id": 299100,
"stage_id": 2966800,
"stage_name": "Face to Face",
"status": "in_process",
"prospect": false,
"created_at": "2026-05-10T09:00:00Z",
"updated_at": "2026-05-21T14:22:00Z",
"last_activity_at": "2026-05-21T14:22:00Z"
}
]
}
}

Fields shown are representative. The full response object includes additional properties.

Notes

  • This trigger requires the OAuth 2.0 Client Credentials (Harvest V3) connection. The deprecated API Key connection only reaches the sunsetting v1/v2 API
  • Compared to the v1 application shape, v3 returns flat ID references (referrer_id, source_id, job_id) instead of embedded objects, and uses created_at instead of applied_at
  • 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 API rate limiting documentation for rate limit details
Example Payload for New and Updated Applications
Loading…

New and Updated Applications (Harvest v1/v2)

Checks for new and updated applications in Greenhouse on a configured schedule. | key: pollChangesTrigger

InputNotesExample
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

  1. The trigger runs on the configured schedule (e.g., every 5 minutes)
  2. On each execution, applications updated since the last poll are fetched from the GET /v1/applications endpoint using the last_activity_after query parameter, with full pagination
  3. Records are partitioned client-side into created or updated by comparing each application's applied_at and last_activity_at timestamps against the timestamp of the last successful poll
  4. Applications whose applied_at is 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
  5. The trigger updates its internal state with the current timestamp after each poll so subsequent executions only surface records changed since the previous run
  6. When no records match on a given run, the trigger reports polledNoChanges so 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 (Harvest v1/v2)
Loading…

Webhook

Receive and validate webhook requests from Greenhouse for webhooks you configure. | key: webhook

InputNotesExample
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)
EventDescription
new_candidate_applicationA new candidate application is submitted
new_prospect_applicationA new prospect application is created
delete_applicationAn application is deleted
application_updatedAn application is updated
offer_createdAn offer is created for a candidate
offer_approvedAn offer is approved
offer_updatedAn offer is updated
offer_deletedAn offer is deleted
delete_candidateA candidate is deleted
hire_candidateA candidate is hired
unhire_candidateA candidate hire is reversed
merge_candidateTwo candidate records are merged
candidate_stage_changeA candidate moves to a different interview stage
reject_candidateA candidate is rejected
unreject_candidateA candidate rejection is reversed
update_candidateA candidate record is updated
candidate_anonymizedA candidate record is anonymized
interview_deletedAn interview is deleted
scorecard_deletedA scorecard is deleted
job_createdA new job is created
job_deletedA job is deleted
job_updatedA job is updated
job_approvedA job is approved
job_post_createdA job post is created
job_post_updatedA job post is updated
job_post_deletedA job post is deleted
department_deletedA department is deleted
office_deletedAn 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 Signature header from Greenhouse contains the value in the format sha256 [hash].
Example Payload for Webhook
Loading…

Data Sources

Fetch Applications

Fetches an array of applications. | key: applicationsV3 | type: picklist

InputNotesExample
Connection

The Greenhouse connection to use.

Example Payload for Fetch Applications
Loading…

Fetch Applications (Harvest v1/v2)

Fetches an array of applications. | key: applications | type: picklist

InputNotesExample
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 (Harvest v1/v2)
Loading…

Fetch Candidate Names

Fetches an array of candidate names. | key: candidatesV3 | type: picklist

InputNotesExample
Connection

The Greenhouse connection to use.

Example Payload for Fetch Candidate Names
Loading…

Fetch Candidate Names (Harvest v1/v2)

Fetches an array of candidate names. | key: candidates | type: picklist

InputNotesExample
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 (Harvest v1/v2)
Loading…

Fetch Custom Fields

Fetches an array of custom field names. | key: customFieldsV3 | type: picklist

InputNotesExample
Connection

The Greenhouse connection to use.

Field Type
Example Payload for Fetch Custom Fields
Loading…

Fetch Custom Fields (Harvest v1/v2)

Fetches an array of custom field names. | key: customFields | type: picklist

InputNotesExample
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 (Harvest v1/v2)
Loading…

Fetch Departments

Fetches an array of department names. | key: departmentsV3 | type: picklist

InputNotesExample
Connection

The Greenhouse connection to use.

Example Payload for Fetch Departments
Loading…

Fetch Departments (Harvest v1/v2)

Fetches an array of department names. | key: departments | type: picklist

InputNotesExample
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 (Harvest v1/v2)
Loading…

Fetch Jobs

Fetches an array of job names. | key: jobsV3 | type: picklist

InputNotesExample
Connection

The Greenhouse connection to use.

Example Payload for Fetch Jobs
Loading…

Fetch Jobs (Harvest v1/v2)

Fetches an array of job names. | key: jobs | type: picklist

InputNotesExample
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 (Harvest v1/v2)
Loading…

Fetch Offices

Fetches an array of office names. | key: officesV3 | type: picklist

InputNotesExample
Connection

The Greenhouse connection to use.

Example Payload for Fetch Offices
Loading…

Fetch Offices (Harvest v1/v2)

Fetches an array of office names. | key: offices | type: picklist

InputNotesExample
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 (Harvest v1/v2)
Loading…

Fetch Rejection Reasons

Fetches an array of rejection reasons. | key: rejectionReasonsV3 | type: picklist

InputNotesExample
Connection

The Greenhouse connection to use.

Example Payload for Fetch Rejection Reasons
Loading…

Fetch User Names

Fetches an array of user names. | key: usersV3 | type: picklist

InputNotesExample
Connection

The Greenhouse connection to use.

Example Payload for Fetch User Names
Loading…

Fetch User Names (Harvest v1/v2)

Fetches an array of user names. | key: users | type: picklist

InputNotesExample
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 (Harvest v1/v2)
Loading…

Actions

Activate User

Activates an existing user. | key: activateUserV3

InputNotesExample
Connection

The Greenhouse connection to use.

User ID

The numeric Greenhouse user ID.

92120
Example Payload for Activate User
Loading…

Create Attachment

Uploads or links an attachment to an application. | key: createAttachmentV3

InputNotesExample
Application ID

The ID of the application that will receive this attachment.

1003961
Attachment Type

Classification of the document. Determines access defaults and display grouping in Greenhouse.

Connection

The Greenhouse connection to use.

File Content (Base64)

Base64-encoded bytes of the file to upload. Provide this OR File URL — not both and not neither.

JVBERi0xLjQKJ...
Filename

Name of the file including its extension (e.g. resume.pdf). Certain blocked extensions are rejected by the API.

jane_doe_resume.pdf
File URL

Publicly accessible URL from which Greenhouse will download the file. Provide this OR File Content — not both and not neither.

https://cdn.example.com/resumes/jane_doe.pdf
Visibility

Access level for the attachment within Greenhouse. When omitted, the default is inferred from the attachment type.

Example Payload for Create Attachment
Loading…

Create Candidate

Creates a new candidate, optionally with an application. | key: createCandidateV3

InputNotesExample
Addresses

The JSON array of postal addresses for the candidate. Passing an empty array will clear all. Format: JSON array of objects.

[
  {
    "value": "123 Main St, New York, NY 10001",
    "type": "home"
  }
]
Application

Optional JSON object to create an application alongside the candidate. For a job applicant, include 'job_id' (integer). For a prospect, include 'prospect: true'. Recruiter, coordinator, source, and stage IDs live here in v3 (not on the top-level candidate). Omit to create a candidate without an application.

{
  "job_id": 215725,
  "recruiter_id": 92120
}
Can Email

Whether the candidate consented to receive email communication. Defaults to true when omitted.

false
Company

The company name associated with the candidate.

Acme Corporation
Connection

The Greenhouse connection to use.

Custom Fields

JSON array of custom field values. Each item must include either name_key (string) or custom_field_id (integer), plus a value.

[{"name_key": "salary_expectation", "value": "80000"}]
Email Addresses

The JSON array of email addresses for the candidate. Passing an empty array will clear all. Format: JSON array of objects.

[
  {
    "value": "john.doe+work@example.com",
    "type": "work"
  },
  {
    "value": "john.doe@example.com",
    "type": "personal"
  }
]
First Name

The candidate's legal first name.

John
Last Name

The candidate's legal last name.

Doe
Linked User IDs

Array of Greenhouse user IDs to link to this candidate. Replaces all existing linked users when provided.

92120
Phone Numbers

The JSON array of phone numbers for the candidate. Passing an empty array will clear all. Format: JSON array of objects.

[
  {
    "value": "555-1212",
    "type": "mobile"
  }
]
Preferred Name

Preferred or chosen name the candidate goes by, when different from their legal first name.

Jay
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.

[
  {
    "value": "linkedin.com/in/johndoe"
  },
  {
    "value": "@johndoe"
  }
]
Tags

The tags to assign to the candidate as an array of strings. Passing an empty array will clear all.

["Senior", "Remote"]
Time Zone

Rails-style timezone identifier. Example values: "Eastern Time (US & Canada)", "Pacific Time (US & Canada)", "UTC".

Eastern Time (US & Canada)
Title

The job title associated with the candidate.

Software Engineer
Website Addresses

The JSON array of website addresses for the candidate. Passing an empty array will clear all. Format: JSON array of objects.

[
  {
    "value": "johndoe.example.com",
    "type": "personal"
  }
]
Example Payload for Create Candidate
Loading…

Create Candidate (Harvest v1/v2)

Creates a new candidate. | key: createCandidate

InputNotesExample
Addresses

The JSON array of postal addresses for the candidate. Passing an empty array will clear all. Format: JSON array of objects.

[
  {
    "value": "123 Main St, New York, NY 10001",
    "type": "home"
  }
]
Applications

The JSON array of application objects to create with the candidate. At least one is required. Format: JSON array of objects.

[
  {
    "job_id": 215725
  },
  {
    "job_id": 185289
  }
]
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.

[
  {
    "id": 12345,
    "value": "Custom Value"
  }
]
Educations

The JSON array of education records for the candidate. Format: JSON array of objects.

[
  {
    "school_id": 459,
    "discipline_id": 940,
    "degree_id": 1230,
    "start_date": "2001-09-15T00:00:00.000Z",
    "end_date": "2004-05-15T00:00:00.000Z"
  }
]
Email Addresses

The JSON array of email addresses for the candidate. Passing an empty array will clear all. Format: JSON array of objects.

[
  {
    "value": "john.doe+work@example.com",
    "type": "work"
  },
  {
    "value": "john.doe@example.com",
    "type": "personal"
  }
]
Employments

The JSON array of employment records for the candidate. Format: JSON array of objects.

[
  {
    "company_name": "Acme Corporation",
    "title": "Software Engineer",
    "start_date": "2012-08-15T00:00:00.000Z",
    "end_date": "2016-05-15T00:00:00.000Z"
  }
]
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.

[
  {
    "value": "555-1212",
    "type": "mobile"
  }
]
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.

[
  {
    "value": "linkedin.com/in/johndoe"
  },
  {
    "value": "@johndoe"
  }
]
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.

[
  {
    "value": "johndoe.example.com",
    "type": "personal"
  }
]
Example Payload for Create Candidate (Harvest v1/v2)
Loading…

Create Job

Creates a new job from an existing template. | key: createJobV3

InputNotesExample
Connection

The Greenhouse connection to use.

Custom Fields

JSON array of custom field values. Each item must include either name_key (string) or custom_field_id (integer), plus a value.

[{"name_key": "target_salary", "value": {"amount": 120000, "currency_code": "USD"}}]
Department ID

The Greenhouse department ID to assign to this job. In v3 each job has a single department (not an array). If omitted, inherits from the template.

123
External Department ID

Partner external identifier for the department. Mutually exclusive with Department ID — provide one or the other, never both.

ext-dept-42
External Office IDs

Partner external identifiers for offices. Mutually exclusive with Office IDs — provide one or the other, never both.

ext-office-1
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
Notes

The free-form notes attached to the hiring plan.

Looking for candidates with 5+ years experience
Number of Openings

The number of openings to create for this job. The total open openings across the job cannot exceed 100.

3
Office IDs

Greenhouse office IDs to assign to the new job. In v3 this is an integer array. If omitted, inherits from the template. Mutually exclusive with External Office IDs.

50891
Opening IDs

Partner identifiers for each opening created, positionally paired with the openings. Must match the Number of Openings count when provided.

OP-2026-001
Requisition ID

Partner-supplied external identifier for this job. Free-form string; non-unique across the organization.

REQ-2026-001
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
Example Payload for Create Job
Loading…

Create Job (Harvest v1/v2)

Creates a new job. | key: createJob

InputNotesExample
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 (Harvest v1/v2)
Loading…

Create User

Creates a new user in Greenhouse. | key: createUserV3

InputNotesExample
Connection

The Greenhouse connection to use.

Custom Fields

JSON array of custom field values. Each item must include either name_key (string) or custom_field_id (integer), plus a value.

[{"name_key": "t_shirt_size", "value": "L"}]
Department IDs

Greenhouse department IDs to assign to this user. Replaces all current assignments. Mutually exclusive with External Department IDs.

650
Employee ID

External employee identifier (e.g. HRIS or payroll ID, max 255 characters). Must be unique within the organization.

12345
External Department IDs

External department identifiers (from your HRIS). Replaces all current assignments. Mutually exclusive with Department IDs.

ext-dept-engineering
External Office IDs

External office identifiers (from your HRIS). Replaces all current assignments. Mutually exclusive with Office IDs.

ext-office-boston
First Name

The user's first name (max 255 characters).

John
Interviewer Tag IDs

IDs of interviewer tags to apply to this user. For edit operations, replaces all current tags.

42
Job Title

Free-form job title displayed on the user's Greenhouse profile (max 255 characters).

Senior Recruiter
Last Name

The user's last name (max 255 characters).

Doe
Office IDs

Greenhouse office IDs to assign to this user. Replaces all current assignments. Mutually exclusive with External Office IDs.

50891
Primary Email

Primary email address for the new user — used as the sign-in identifier and for Greenhouse invitation mail. Must be unique within the organization.

john.doe@example.com
Send Email Invite

When true, Greenhouse sends the new user an invitation email to set a password and sign in. Defaults to false.

false
Example Payload for Create User
Loading…

Create User (Harvest v1/v2)

Creates a new user. | key: createUser

InputNotesExample
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.

[
  {
    "id": 12345,
    "value": "Custom Value"
  }
]
Department IDs

The department identifiers associated with a user. Must be a valid set of department IDs. Passing an empty array does nothing.

["123"]
Email

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 (Harvest v1/v2)
Loading…

Deactivate User

Deactivates an existing user. | key: deactivateUserV3

InputNotesExample
Connection

The Greenhouse connection to use.

User ID

The numeric Greenhouse user ID.

92120
Example Payload for Deactivate User
Loading…

Delete Application

Permanently deletes an application by ID. | key: deleteApplicationV3

InputNotesExample
Application ID

The unique identifier for the application.

69306314
Connection

The Greenhouse connection to use.

Example Payload for Delete Application
Loading…

Delete Application (Harvest v1/v2)

Deletes an application by ID. | key: deleteApplication

InputNotesExample
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 (Harvest v1/v2)
Loading…

Delete Attachment

Permanently deletes an attachment from its application. | key: deleteAttachmentV3

InputNotesExample
Attachment ID

The unique numeric identifier of the attachment to delete.

4949394
Connection

The Greenhouse connection to use.

Example Payload for Delete Attachment
Loading…

Delete Candidate

Permanently deletes a candidate and all associated records. | key: deleteCandidateV3

InputNotesExample
Candidate ID

The unique identifier for the candidate.

53883394
Connection

The Greenhouse connection to use.

Example Payload for Delete Candidate
Loading…

Delete Candidate (Harvest v1/v2)

Deletes a candidate by ID. | key: deleteCandidate

InputNotesExample
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 (Harvest v1/v2)
Loading…

Disable User (Harvest v1/v2)

Disables an existing user. | key: disableUser

InputNotesExample
Connection

The Greenhouse connection to use.

Email

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 (Harvest v1/v2)
Loading…

Edit Application

Updates an application by ID. | key: editApplicationV3

InputNotesExample
Application ID

The unique identifier for the application.

69306314
Connection

The Greenhouse connection to use.

Coordinator ID

The numeric Greenhouse user ID of the assigned coordinator.

92121
Custom Fields

JSON array of custom field values. Each item must include either name_key (string) or custom_field_id (integer), plus a value.

[{"name_key": "salary_expectation", "value": "80000"}]
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
Recruiter ID

The numeric Greenhouse user ID of the assigned recruiter.

92120
Referrer ID

The numeric ID of the referrer.

4080
Rejected At

The rejection date for this application. Format: ISO-8601 date.

2026-06-01
Source ID

The unique identifier for the source of the application.

2
Example Payload for Edit Application
Loading…

Edit Application (Harvest v1/v2)

Updates an application by ID. | key: editApplication

InputNotesExample
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.

[
  {
    "id": 12345,
    "value": "Custom Value"
  }
]
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.

{
  "type": "id",
  "value": 123
}
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 (Harvest v1/v2)
Loading…

Edit Candidate

Updates an existing candidate. | key: editCandidateV3

InputNotesExample
Addresses

The JSON array of postal addresses for the candidate. Passing an empty array will clear all. Format: JSON array of objects.

[
  {
    "value": "123 Main St, New York, NY 10001",
    "type": "home"
  }
]
Candidate ID

The unique identifier for the candidate.

53883394
Can Email

Whether the candidate consented to receive email communication. Defaults to true when omitted.

false
Company

The company name associated with the candidate.

Acme Corporation
Connection

The Greenhouse connection to use.

Custom Fields

JSON array of custom field values. Each item must include either name_key (string) or custom_field_id (integer), plus a value.

[{"name_key": "salary_expectation", "value": "80000"}]
Email Addresses

The JSON array of email addresses for the candidate. Passing an empty array will clear all. Format: JSON array of objects.

[
  {
    "value": "john.doe+work@example.com",
    "type": "work"
  },
  {
    "value": "john.doe@example.com",
    "type": "personal"
  }
]
First Name

The candidate's legal first name. If provided, cannot be blank.

John
Is Private

When true, the candidate will be marked as private.

false
Last Name

The candidate's legal last name. If provided, cannot be blank.

Doe
Linked User IDs

Array of Greenhouse user IDs to link to this candidate. Replaces all existing linked users when provided.

92120
Phone Numbers

The JSON array of phone numbers for the candidate. Passing an empty array will clear all. Format: JSON array of objects.

[
  {
    "value": "555-1212",
    "type": "mobile"
  }
]
Preferred Name

Preferred or chosen name the candidate goes by, when different from their legal first name.

Jay
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.

[
  {
    "value": "linkedin.com/in/johndoe"
  },
  {
    "value": "@johndoe"
  }
]
Tags

The tags to assign to the candidate as an array of strings. Passing an empty array will clear all.

["Senior", "Remote"]
Time Zone

Rails-style timezone identifier. Example values: "Eastern Time (US & Canada)", "Pacific Time (US & Canada)", "UTC".

Eastern Time (US & Canada)
Title

The job title associated with the candidate.

Software Engineer
Website Addresses

The JSON array of website addresses for the candidate. Passing an empty array will clear all. Format: JSON array of objects.

[
  {
    "value": "johndoe.example.com",
    "type": "personal"
  }
]
Example Payload for Edit Candidate
Loading…

Edit Candidate (Harvest v1/v2)

Updates an existing candidate. | key: editCandidate

InputNotesExample
Addresses

The JSON array of postal addresses for the candidate. Passing an empty array will clear all. Format: JSON array of objects.

[
  {
    "value": "123 Main St, New York, NY 10001",
    "type": "home"
  }
]
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

{
  "id": 453636,
  "first_name": "Jane",
  "last_name": "Smith",
  "name": "Jane Smith",
  "employee_id": "12345"
}
Custom Fields

The JSON array of hashes containing new custom field values. Passing an empty array does nothing. Format: JSON array of objects.

[
  {
    "id": 12345,
    "value": "Custom Value"
  }
]
Email Addresses

The JSON array of email addresses for the candidate. Passing an empty array will clear all. Format: JSON array of objects.

[
  {
    "value": "john.doe+work@example.com",
    "type": "work"
  },
  {
    "value": "john.doe@example.com",
    "type": "personal"
  }
]
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.

[
  {
    "value": "555-1212",
    "type": "mobile"
  }
]
Recruiter

An object representing the candidate's new recruiter

{
  "id": 92120,
  "first_name": "Jane",
  "last_name": "Smith",
  "name": "Jane Smith",
  "employee_id": "67890"
}
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.

[
  {
    "value": "linkedin.com/in/johndoe"
  },
  {
    "value": "@johndoe"
  }
]
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.

[
  {
    "value": "johndoe.example.com",
    "type": "personal"
  }
]
Example Payload for Edit Candidate (Harvest v1/v2)
Loading…

Edit Job

Updates an existing job by ID. | key: editJobV3

InputNotesExample
Anywhere

When true, marks the job as remote-anywhere and clears office assignments. Cannot be combined with office_ids.

false
Connection

The Greenhouse connection to use.

Custom Fields

JSON array of custom field values. IMPORTANT: this is a WHOLESALE REPLACEMENT — the supplied array entirely replaces the existing custom field collection. Each item must include either name_key (string) or custom_field_id (integer), plus a value.

[{"name_key": "target_salary", "value": {"amount": 130000, "currency_code": "USD"}}]
Department ID

The Greenhouse department ID to assign. In v3 each job has a single department. Pass null to clear.

123
External Department ID

Partner external identifier for the department. Mutually exclusive with Department ID — provide one or the other, never both.

ext-dept-42
External Office IDs

Partner external identifiers for offices — wholesale replacement. Mutually exclusive with Office IDs.

ext-office-1
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 numeric ID of the job.

107761
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
Notes

The free-form notes attached to the hiring plan.

Looking for candidates with 5+ years experience
Office IDs

Greenhouse office IDs to assign to this job. IMPORTANT: this is a WHOLESALE REPLACEMENT — the supplied list entirely replaces the existing office set. Send the complete desired list, not a delta.

50891
Requisition ID

Partner-supplied external identifier. Pass null to clear. Free-form string; non-unique across the organization.

REQ-2026-001
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
Example Payload for Edit Job
Loading…

Edit Job (Harvest v1/v2)

Updates a job by ID. | key: editJob

InputNotesExample
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.

[
  {
    "id": 12345,
    "value": "Custom Value"
  }
]
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 (Harvest v1/v2)
Loading…

Edit User

Updates an existing user in Greenhouse. | key: editUserV3

InputNotesExample
Connection

The Greenhouse connection to use.

Custom Fields

JSON array of custom field values. Each item must include either name_key (string) or custom_field_id (integer), plus a value.

[{"name_key": "t_shirt_size", "value": "L"}]
Department IDs

Greenhouse department IDs to assign to this user. Replaces all current assignments. Mutually exclusive with External Department IDs.

650
Employee ID

External employee identifier (e.g. HRIS or payroll ID, max 255 characters). Must be unique within the organization.

12345
External Department IDs

External department identifiers (from your HRIS). Replaces all current assignments. Mutually exclusive with Department IDs.

ext-dept-engineering
External Office IDs

External office identifiers (from your HRIS). Replaces all current assignments. Mutually exclusive with Office IDs.

ext-office-boston
First Name

The user's first name (max 255 characters). If provided, cannot be blank.

John
Interviewer Tag IDs

IDs of interviewer tags to apply to this user. For edit operations, replaces all current tags.

42
Job Title

Free-form job title displayed on the user's Greenhouse profile (max 255 characters).

Senior Recruiter
Last Name

The user's last name (max 255 characters). If provided, cannot be blank.

Doe
Office IDs

Greenhouse office IDs to assign to this user. Replaces all current assignments. Mutually exclusive with External Office IDs.

50891
Primary Email

New primary email — must already be a verified email address on the user's account.

john.doe@example.com
User ID

The numeric Greenhouse user ID.

92120
Example Payload for Edit User
Loading…

Edit User (Harvest v1/v2)

Updates an existing user. | key: editUser

InputNotesExample
Connection

The Greenhouse connection to use.

Custom Fields

Array of hashes containing new custom field values. Passing an empty array does nothing.

[
  {
    "id": 12345,
    "value": "Custom Value"
  }
]
Department IDs

Replace the current departments for this user with new departments. An empty array will remove all departments on this user.

["123"]
Email

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 (Harvest v1/v2)
Loading…

Enable User (Harvest v1/v2)

Enables an existing user. | key: enableUser

InputNotesExample
Connection

The Greenhouse connection to use.

Email

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 (Harvest v1/v2)
Loading…

Get Application

Retrieves a single application by ID. | key: getApplicationV3

InputNotesExample
Application ID

The unique identifier for the application.

69306314
Connection

The Greenhouse connection to use.

Example Payload for Get Application
Loading…

Get Application (Harvest v1/v2)

Retrieves an application by ID. | key: getApplication

InputNotesExample
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 (Harvest v1/v2)
Loading…

Get Candidate

Retrieves a single candidate by ID. | key: getCandidateV3

InputNotesExample
Candidate ID

The unique identifier for the candidate.

53883394
Connection

The Greenhouse connection to use.

Example Payload for Get Candidate
Loading…

Get Candidate (Harvest v1/v2)

Retrieves a candidate by ID. | key: getCandidate

InputNotesExample
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 (Harvest v1/v2)
Loading…

Get Job

Retrieves a single job by ID. | key: getJobV3

InputNotesExample
Connection

The Greenhouse connection to use.

Job ID

The numeric ID of the job.

107761
Example Payload for Get Job
Loading…

Get Job (Harvest v1/v2)

Retrieves a job by ID. | key: getJob

InputNotesExample
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 (Harvest v1/v2)
Loading…

Get User

Retrieves a single user by ID. | key: getUserV3

InputNotesExample
Connection

The Greenhouse connection to use.

User ID

The numeric Greenhouse user ID.

92120
Example Payload for Get User
Loading…

Get User (Harvest v1/v2)

Retrieves a user by ID. | key: getUser

InputNotesExample
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 (Harvest v1/v2)
Loading…

List Applications

Retrieves a list of applications. | key: listApplicationsV3

InputNotesExample
Candidate IDs

Comma-separated list of candidate IDs to filter by. Maximum 50 items.

57683957,57683958
Connection

The Greenhouse connection to use.

Created At or After

The lower bound timestamp filter — sent as created_at[gte]. Format: ISO-8601.

2026-01-01T00:00:00Z
Created At or Before

The upper bound timestamp filter — sent as created_at[lte]. Format: ISO-8601.

2026-01-15T10:30:00Z
Cursor

The opaque pagination cursor from a previous response's Link header. When provided, it is sent as the only query parameter — the API rejects cursor requests that carry additional filters.

eyJwYWdlIjoyfQ
Fetch All

When true, fetches all pages of results by following the response Link headers. Page Size and Cursor are ignored.

false
Application IDs

Comma-separated list of specific application IDs to fetch. Maximum 50 items.

69306314,69306315
Job IDs

Comma-separated list of current job (hiring plan) IDs to filter by. Maximum 50 items.

123456,123457
Job Post IDs

Comma-separated list of job post IDs to filter by. Maximum 50 items.

234567,234568
Last Activity At or After

The lower bound timestamp filter — sent as last_activity_at[gte]. Format: ISO-8601.

2026-01-01T00:00:00Z
Last Activity At or Before

The upper bound timestamp filter — sent as last_activity_at[lte]. Format: ISO-8601.

2026-01-15T10:30:00Z
Page Size

The maximum number of results to return per page. Must be an integer between 1 and 500. Defaults to 100.

100
Prospect

When true, returns only prospect applications. When false, returns only candidate applications. Omit to return both.

false
Prospective Job IDs

Comma-separated list of prospective job placement IDs to filter by. Maximum 50 items.

123456,123457
Referrer IDs

Comma-separated list of referrer IDs to filter by. Maximum 50 items.

4080,4081
Source IDs

Comma-separated list of source IDs to filter by. Maximum 50 items.

2,3
Stage IDs

Comma-separated list of interview stage IDs to filter by. Maximum 50 items.

1109787,1109788
Stage Name

Filter by interview stage name. Match is exact and case-sensitive.

Application Review
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
Updated At or After

The lower bound timestamp filter — sent as updated_at[gte]. Format: ISO-8601.

2026-01-01T00:00:00Z
Updated At or Before

The upper bound timestamp filter — sent as updated_at[lte]. Format: ISO-8601.

2026-01-15T10:30:00Z
Example Payload for List Applications
Loading…

List Applications (Harvest v1/v2)

Retrieves a list of applications. | key: listApplications

InputNotesExample
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 (Harvest v1/v2)
Loading…

List Attachments

Retrieves a list of attachments. | key: listAttachmentsV3

InputNotesExample
Application IDs

Comma-separated list of application IDs to filter by. Maximum 50 items.

1003961,1003962
Attachment IDs

Comma-separated list of specific attachment IDs to fetch. Maximum 50 items.

4949394,4949395
Attachment Type

Return only attachments of this type. When omitted, all types are included.

Candidate IDs

Comma-separated list of candidate IDs — returns only attachments whose application belongs to one of these candidates. Maximum 50 items.

123,456,789
Connection

The Greenhouse connection to use.

Created At or After

The lower bound timestamp filter — sent as created_at[gte]. Format: ISO-8601.

2026-01-01T00:00:00Z
Created At or Before

The upper bound timestamp filter — sent as created_at[lte]. Format: ISO-8601.

2026-01-15T10:30:00Z
Cursor

The opaque pagination cursor from a previous response's Link header. When provided, it is sent as the only query parameter — the API rejects cursor requests that carry additional filters.

eyJwYWdlIjoyfQ
Fetch All

When true, fetches all pages of results by following the response Link headers. Page Size and Cursor are ignored.

false
Page Size

The maximum number of results to return per page. Must be an integer between 1 and 500. Defaults to 100.

100
Updated At or After

The lower bound timestamp filter — sent as updated_at[gte]. Format: ISO-8601.

2026-01-01T00:00:00Z
Updated At or Before

The upper bound timestamp filter — sent as updated_at[lte]. Format: ISO-8601.

2026-01-15T10:30:00Z
Example Payload for List Attachments
Loading…

List Candidates

Retrieves a list of candidates. | key: listCandidatesV3

InputNotesExample
Candidate IDs

The comma-separated list of candidate IDs to return (e.g. '123,456,789'). A maximum of 50 candidates can be returned this way.

123,456,789
Connection

The Greenhouse connection to use.

Created At or After

The lower bound timestamp filter — sent as created_at[gte]. Format: ISO-8601.

2026-01-01T00:00:00Z
Created At or Before

The upper bound timestamp filter — sent as created_at[lte]. Format: ISO-8601.

2026-01-15T10:30:00Z
Cursor

The opaque pagination cursor from a previous response's Link header. When provided, it is sent as the only query parameter — the API rejects cursor requests that carry additional filters.

eyJwYWdlIjoyfQ
Email

Return only candidates who have this email address on their profile (exact match).

john.doe@example.com
Fetch All

When true, fetches all pages of results by following the response Link headers. Page Size and Cursor are ignored.

false
Include Private Candidates

When true (default), private candidates are included in results. Set to false to return only non-private candidates.

true
Page Size

The maximum number of results to return per page. Must be an integer between 1 and 500. Defaults to 100.

100
Tag

Filter by candidate tag name (exact match).

Senior
Updated At or After

The lower bound timestamp filter — sent as updated_at[gte]. Format: ISO-8601.

2026-01-01T00:00:00Z
Updated At or Before

The upper bound timestamp filter — sent as updated_at[lte]. Format: ISO-8601.

2026-01-15T10:30:00Z
Example Payload for List Candidates
Loading…

List Candidates (Harvest v1/v2)

Retrieves a list of candidates. | key: listCandidates

InputNotesExample
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
Email

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 (Harvest v1/v2)
Loading…

List Jobs

Retrieves a list of jobs. | key: listJobsV3

InputNotesExample
Confidential

Filter legacy confidential jobs. When true, returns only confidential jobs.

false
Connection

The Greenhouse connection to use.

Created At or After

The lower bound timestamp filter — sent as created_at[gte]. Format: ISO-8601.

2026-01-01T00:00:00Z
Created At or Before

The upper bound timestamp filter — sent as created_at[lte]. Format: ISO-8601.

2026-01-15T10:30:00Z
Cursor

The opaque pagination cursor from a previous response's Link header. When provided, it is sent as the only query parameter — the API rejects cursor requests that carry additional filters.

eyJwYWdlIjoyfQ
Department ID

The Greenhouse department ID. In v3 each job has a single department (not an array).

123
Fetch All

When true, fetches all pages of results by following the response Link headers. Page Size and Cursor are ignored.

false
Job IDs

Comma-separated list of specific job IDs to fetch. Maximum 50 items.

107761,107762
Office ID

Filter by office ID. Returns jobs that include this office in their office_ids array.

234
Page Size

The maximum number of results to return per page. Must be an integer between 1 and 500. Defaults to 100.

100
Requisition ID

Filter by external requisition identifier. Non-unique — may match multiple jobs across the organization.

abc-123
Status

Filter by job lifecycle status. One of: open, draft, or closed.

open
Updated At or After

The lower bound timestamp filter — sent as updated_at[gte]. Format: ISO-8601.

2026-01-01T00:00:00Z
Updated At or Before

The upper bound timestamp filter — sent as updated_at[lte]. Format: ISO-8601.

2026-01-15T10:30:00Z
Example Payload for List Jobs
Loading…

List Jobs (Harvest v1/v2)

Retrieves a list of jobs. | key: listJobs

InputNotesExample
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.

[
  {
    "id": 12345,
    "value": "Custom Value"
  }
]
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 (Harvest v1/v2)
Loading…

List Users

Retrieves a list of users. | key: listUsersV3

InputNotesExample
Connection

The Greenhouse connection to use.

Created At or After

The lower bound timestamp filter — sent as created_at[gte]. Format: ISO-8601.

2026-01-01T00:00:00Z
Created At or Before

The upper bound timestamp filter — sent as created_at[lte]. Format: ISO-8601.

2026-01-15T10:30:00Z
Cursor

The opaque pagination cursor from a previous response's Link header. When provided, it is sent as the only query parameter — the API rejects cursor requests that carry additional filters.

eyJwYWdlIjoyfQ
Deactivated

When set, filters users by activation state. Omit to return both active and deactivated users.

false
Department IDs

Comma-separated list of Greenhouse department IDs to filter by. Maximum 50 items.

650,651
Fetch All

When true, fetches all pages of results by following the response Link headers. Page Size and Cursor are ignored.

false
User IDs

Comma-separated list of specific user IDs to fetch. Maximum 50 items.

92120,92121
Office IDs

Comma-separated list of Greenhouse office IDs to filter by. Maximum 50 items.

50891,50892
Page Size

The maximum number of results to return per page. Must be an integer between 1 and 500. Defaults to 100.

100
Primary Email

Exact-match filter on the user's primary email address.

john.doe@example.com
Show Service Accounts

When true, includes integration and service-account users in results. Defaults to false.

false
Updated At or After

The lower bound timestamp filter — sent as updated_at[gte]. Format: ISO-8601.

2026-01-01T00:00:00Z
Updated At or Before

The upper bound timestamp filter — sent as updated_at[lte]. Format: ISO-8601.

2026-01-15T10:30:00Z
Example Payload for List Users
Loading…

List Users (Harvest v1/v2)

Retrieves a list of users. | key: listUsers

InputNotesExample
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
Email

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 (Harvest v1/v2)
Loading…

Raw Request

Sends a raw HTTP request to Greenhouse. | key: rawRequestV3

InputNotesExample
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/v3). For example, to connect to https://harvest.greenhouse.io/v3/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
Example Payload for Raw Request
Loading…

Raw Request (Harvest v1/v2)

Sends a raw HTTP request to Greenhouse. | key: rawRequest

InputNotesExample
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 (Harvest v1/v2)
Loading…

Reject Application

Rejects an application with a specified rejection reason. | key: rejectApplicationV3

InputNotesExample
Application ID

The unique identifier for the application.

69306314
Connection

The Greenhouse connection to use.

Custom Fields

JSON array of custom field values. Each item must include either name_key (string) or custom_field_id (integer), plus a value.

[{"name_key": "salary_expectation", "value": "80000"}]
Email From User ID

The numeric Greenhouse user ID to send the rejection email on behalf of.

92120
Email Template ID

The numeric ID of the email template to use for the rejection message.

9876
Rejection Notes

Additional context about the rejection decision.

Candidate did not meet the technical requirements.
Rejection Reason ID

The numeric ID of the rejection reason. Required by the Harvest v3 reject endpoint.

14
Send Email At

Schedule the rejection email for a future timestamp. Format: ISO-8601 date-time.

2026-06-10T09:00:00Z
Example Payload for Reject Application
Loading…

Unreject Application

Reverses the rejection of an application. | key: unrejectApplicationV3

InputNotesExample
Application ID

The unique identifier for the application.

69306314
Connection

The Greenhouse connection to use.

Example Payload for Unreject Application
Loading…

Changelog

2026-06-12

  • Added full Harvest v3 API support alongside the existing v1/v2 surface; the v1/v2 API sunsets on August 31, 2026, so existing actions keep working unchanged until then and their labels now carry a (Harvest v1/v2) suffix
  • Added the OAuth 2.0 Client Credentials (Harvest V3) connection for the Harvest v3 API
  • Added 25 v3 actions with clean labels: List/Get/Edit/Delete Application, the new Reject Application and Unreject Application (v3 moves rejection out of application edits), List/Get/Create/Edit/Delete Candidate, the new List/Create/Delete Attachment actions (v3 moves candidate attachments to a dedicated resource), List/Get/Create/Edit Job, List/Get/Create/Edit User, Activate User and Deactivate User (replacing v1 enable/disable), and a v3 Raw Request
  • Added the v3 New and Updated Applications polling trigger using the last_activity_at[gte] filter with cursor-based pagination; the v1 trigger remains available as deprecated
  • Added v3 data sources for applications, candidates, custom fields, departments, jobs, offices, users, and the new Fetch Rejection Reasons powering the Reject Application dropdown
  • Changed the API Key connection label to API Key (Harvest v1/v2) — it only reaches the sunsetting v1/v2 API
  • Added the deprecated v1 New and Updated Applications polling trigger using the Harvest API's last_activity_after filter, walking all paginated results and partitioning them into created and updated buckets based on each application's created_at and last_activity_at timestamps
  • 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