Skip to main content

Greenhouse

Supported Entities and Actions

EntityActions
CandidatesList, Get
ApplicationsList, Get
JobsList, Get
OffersList, Get
UsersList, Get
DepartmentsList, Get
OfficesList, Get
Job PostsList, Get
SourcesList
Scheduled InterviewsList, Get
Application AttachmentDownload
Candidate AttachmentDownload

Candidates

Candidates List

Returns a paginated list of all candidates in the organization

Python SDK

greenhouse.candidates.list()

API

curl --location 'https://api.airbyte.ai/api/v1/connectors/instances/{your_connector_instance_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "candidates",
"action": "list"
}'

Params

Parameter NameTypeRequiredDescription
per_pageintegerNoNumber of items to return per page (max 500)
pageintegerNoPage number for pagination

Candidates Get

Get a single candidate by ID

Python SDK

greenhouse.candidates.get(
id=0
)

API

curl --location 'https://api.airbyte.ai/api/v1/connectors/instances/{your_connector_instance_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "candidates",
"action": "get",
"params": {
"id": 0
}
}'

Params

Parameter NameTypeRequiredDescription
idintegerYesCandidate ID
Response Schema

Records

Field NameTypeDescription
idinteger
first_namestring
last_namestring
companystring | null
titlestring | null
created_atstring
updated_atstring
last_activitystring
is_privateboolean
photo_urlstring | null
attachmentsarray<object>
attachments[].filenamestring
attachments[].urlstring
attachments[].type"resume" | "cover_letter" | "admin_only" | "take_home_test" | "offer_packet" | "offer_letter" | "signed_offer_letter" | "other"
attachments[].created_atstring
application_idsarray<integer>
phone_numbersarray<object>
addressesarray<object>
email_addressesarray<object>
website_addressesarray<object>
social_media_addressesarray<object>
recruiterobject | null
coordinatorobject | null
can_emailboolean
tagsarray<string>
custom_fieldsobject

Applications

Applications List

Returns a paginated list of all applications

Python SDK

greenhouse.applications.list()

API

curl --location 'https://api.airbyte.ai/api/v1/connectors/instances/{your_connector_instance_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "applications",
"action": "list"
}'

Params

Parameter NameTypeRequiredDescription
per_pageintegerNoNumber of items to return per page (max 500)
pageintegerNoPage number for pagination
created_beforestringNoFilter by applications created before this timestamp
created_afterstringNoFilter by applications created after this timestamp
last_activity_afterstringNoFilter by applications with activity after this timestamp
job_idintegerNoFilter by job ID
status"active" | "rejected" | "hired"NoFilter by application status

Applications Get

Get a single application by ID

Python SDK

greenhouse.applications.get(
id=0
)

API

curl --location 'https://api.airbyte.ai/api/v1/connectors/instances/{your_connector_instance_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "applications",
"action": "get",
"params": {
"id": 0
}
}'

Params

Parameter NameTypeRequiredDescription
idintegerYesApplication ID
Response Schema

Records

Field NameTypeDescription
idinteger
candidate_idinteger
prospectboolean
applied_atstring
rejected_atstring | null
last_activity_atstring
locationobject | null
sourceobject
credited_toobject
rejection_reasonobject | null
rejection_detailsobject | null
jobsarray<object>
job_post_idinteger | null
statusstring
current_stageobject | null
answersarray<object>
prospective_officeobject | null
prospective_departmentobject | null
prospect_detailobject
attachmentsarray<object>
attachments[].filenamestring
attachments[].urlstring
attachments[].type"resume" | "cover_letter" | "admin_only" | "take_home_test" | "offer_packet" | "offer_letter" | "signed_offer_letter" | "other"
attachments[].created_atstring
custom_fieldsobject

Jobs

Jobs List

Returns a paginated list of all jobs in the organization

Python SDK

greenhouse.jobs.list()

API

curl --location 'https://api.airbyte.ai/api/v1/connectors/instances/{your_connector_instance_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "jobs",
"action": "list"
}'

Params

Parameter NameTypeRequiredDescription
per_pageintegerNoNumber of items to return per page (max 500)
pageintegerNoPage number for pagination

Jobs Get

Get a single job by ID

Python SDK

greenhouse.jobs.get(
id=0
)

API

curl --location 'https://api.airbyte.ai/api/v1/connectors/instances/{your_connector_instance_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "jobs",
"action": "get",
"params": {
"id": 0
}
}'

Params

Parameter NameTypeRequiredDescription
idintegerYesJob ID
Response Schema

Records

Field NameTypeDescription
idinteger
namestring
requisition_idstring | null
notesstring | null
confidentialboolean
statusstring
created_atstring
opened_atstring
closed_atstring | null
updated_atstring
departmentsarray<object | null>
officesarray<object>
custom_fieldsobject
hiring_teamobject
openingsarray<object>

Offers

Offers List

Returns a paginated list of all offers

Python SDK

greenhouse.offers.list()

API

curl --location 'https://api.airbyte.ai/api/v1/connectors/instances/{your_connector_instance_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "offers",
"action": "list"
}'

Params

Parameter NameTypeRequiredDescription
per_pageintegerNoNumber of items to return per page (max 500)
pageintegerNoPage number for pagination
created_beforestringNoFilter by offers created before this timestamp
created_afterstringNoFilter by offers created after this timestamp
resolved_afterstringNoFilter by offers resolved after this timestamp

Offers Get

Get a single offer by ID

Python SDK

greenhouse.offers.get(
id=0
)

API

curl --location 'https://api.airbyte.ai/api/v1/connectors/instances/{your_connector_instance_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "offers",
"action": "get",
"params": {
"id": 0
}
}'

Params

Parameter NameTypeRequiredDescription
idintegerYesOffer ID
Response Schema

Records

Field NameTypeDescription
idinteger
versioninteger
application_idinteger
job_idinteger
candidate_idinteger
openingobject | null
created_atstring
updated_atstring
sent_atstring | null
resolved_atstring | null
starts_atstring | null
statusstring
custom_fieldsobject

Users

Users List

Returns a paginated list of all users

Python SDK

greenhouse.users.list()

API

curl --location 'https://api.airbyte.ai/api/v1/connectors/instances/{your_connector_instance_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "users",
"action": "list"
}'

Params

Parameter NameTypeRequiredDescription
per_pageintegerNoNumber of items to return per page (max 500)
pageintegerNoPage number for pagination
created_beforestringNoFilter by users created before this timestamp
created_afterstringNoFilter by users created after this timestamp
updated_beforestringNoFilter by users updated before this timestamp
updated_afterstringNoFilter by users updated after this timestamp

Users Get

Get a single user by ID

Python SDK

greenhouse.users.get(
id=0
)

API

curl --location 'https://api.airbyte.ai/api/v1/connectors/instances/{your_connector_instance_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "users",
"action": "get",
"params": {
"id": 0
}
}'

Params

Parameter NameTypeRequiredDescription
idintegerYesUser ID
Response Schema

Records

Field NameTypeDescription
idinteger
namestring
first_namestring
last_namestring
primary_email_addressstring
updated_atstring
created_atstring
disabledboolean
site_adminboolean
emailsarray<string>
employee_idstring | null
linked_candidate_idsarray<integer>
officesarray<object>
departmentsarray<object>

Departments

Departments List

Returns a paginated list of all departments

Python SDK

greenhouse.departments.list()

API

curl --location 'https://api.airbyte.ai/api/v1/connectors/instances/{your_connector_instance_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "departments",
"action": "list"
}'

Params

Parameter NameTypeRequiredDescription
per_pageintegerNoNumber of items to return per page (max 500)
pageintegerNoPage number for pagination

Departments Get

Get a single department by ID

Python SDK

greenhouse.departments.get(
id=0
)

API

curl --location 'https://api.airbyte.ai/api/v1/connectors/instances/{your_connector_instance_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "departments",
"action": "get",
"params": {
"id": 0
}
}'

Params

Parameter NameTypeRequiredDescription
idintegerYesDepartment ID
Response Schema

Records

Field NameTypeDescription
idinteger
namestring
parent_idinteger | null
parent_department_external_idstring | null
child_idsarray<integer>
child_department_external_idsarray<string>
external_idstring | null

Offices

Offices List

Returns a paginated list of all offices

Python SDK

greenhouse.offices.list()

API

curl --location 'https://api.airbyte.ai/api/v1/connectors/instances/{your_connector_instance_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "offices",
"action": "list"
}'

Params

Parameter NameTypeRequiredDescription
per_pageintegerNoNumber of items to return per page (max 500)
pageintegerNoPage number for pagination

Offices Get

Get a single office by ID

Python SDK

greenhouse.offices.get(
id=0
)

API

curl --location 'https://api.airbyte.ai/api/v1/connectors/instances/{your_connector_instance_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "offices",
"action": "get",
"params": {
"id": 0
}
}'

Params

Parameter NameTypeRequiredDescription
idintegerYesOffice ID
Response Schema

Records

Field NameTypeDescription
idinteger
namestring
locationobject | null
primary_contact_user_idinteger | null
parent_idinteger | null
parent_office_external_idstring | null
child_idsarray<integer>
child_office_external_idsarray<string>
external_idstring | null

Job Posts

Job Posts List

Returns a paginated list of all job posts

Python SDK

greenhouse.job_posts.list()

API

curl --location 'https://api.airbyte.ai/api/v1/connectors/instances/{your_connector_instance_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "job_posts",
"action": "list"
}'

Params

Parameter NameTypeRequiredDescription
per_pageintegerNoNumber of items to return per page (max 500)
pageintegerNoPage number for pagination
livebooleanNoFilter by live status
activebooleanNoFilter by active status

Job Posts Get

Get a single job post by ID

Python SDK

greenhouse.job_posts.get(
id=0
)

API

curl --location 'https://api.airbyte.ai/api/v1/connectors/instances/{your_connector_instance_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "job_posts",
"action": "get",
"params": {
"id": 0
}
}'

Params

Parameter NameTypeRequiredDescription
idintegerYesJob Post ID
Response Schema

Records

Field NameTypeDescription
idinteger
titlestring
locationobject | null
internalboolean
externalboolean
activeboolean
liveboolean
first_published_atstring | null
job_idinteger
contentstring | null
internal_contentstring | null
updated_atstring
created_atstring
demographic_question_set_idinteger | null
questionsarray<object>

Sources

Sources List

Returns a paginated list of all sources

Python SDK

greenhouse.sources.list()

API

curl --location 'https://api.airbyte.ai/api/v1/connectors/instances/{your_connector_instance_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "sources",
"action": "list"
}'

Params

Parameter NameTypeRequiredDescription
per_pageintegerNoNumber of items to return per page (max 500)
pageintegerNoPage number for pagination

Scheduled Interviews

Scheduled Interviews List

Returns a paginated list of all scheduled interviews

Python SDK

greenhouse.scheduled_interviews.list()

API

curl --location 'https://api.airbyte.ai/api/v1/connectors/instances/{your_connector_instance_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "scheduled_interviews",
"action": "list"
}'

Params

Parameter NameTypeRequiredDescription
per_pageintegerNoNumber of items to return per page (max 500)
pageintegerNoPage number for pagination
created_beforestringNoFilter by interviews created before this timestamp
created_afterstringNoFilter by interviews created after this timestamp
updated_beforestringNoFilter by interviews updated before this timestamp
updated_afterstringNoFilter by interviews updated after this timestamp
starts_afterstringNoFilter by interviews starting after this timestamp
ends_beforestringNoFilter by interviews ending before this timestamp

Scheduled Interviews Get

Get a single scheduled interview by ID

Python SDK

greenhouse.scheduled_interviews.get(
id=0
)

API

curl --location 'https://api.airbyte.ai/api/v1/connectors/instances/{your_connector_instance_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "scheduled_interviews",
"action": "get",
"params": {
"id": 0
}
}'

Params

Parameter NameTypeRequiredDescription
idintegerYesScheduled Interview ID
Response Schema

Records

Field NameTypeDescription
idinteger
application_idinteger
external_event_idstring | null
created_atstring
updated_atstring
startobject | null
endobject | null
locationstring | null
video_conferencing_urlstring | null
statusstring
interviewobject | null
organizerobject | null
interviewersarray<object>

Application Attachment

Application Attachment Download

Downloads an attachment (resume, cover letter, etc.) for an application by index. The attachment URL is a temporary signed AWS S3 URL that expires within 7 days. Files should be downloaded immediately after retrieval.

Python SDK

async for chunk in greenhouse.application_attachment.download(    id=0,    attachment_index=0):# Process each chunk (e.g., write to file)
file.write(chunk)

Note: Download operations return an async iterator of bytes chunks for memory-efficient streaming. Use async for to process chunks as they arrive.

API

curl --location 'https://api.airbyte.ai/api/v1/connectors/instances/{your_connector_instance_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "application_attachment",
"action": "download",
"params": {
"id": 0,
"attachment_index": 0
}
}'

Params

Parameter NameTypeRequiredDescription
idintegerYesApplication ID
attachment_indexintegerYesIndex of the attachment to download (0-based)
range_headerstringNoOptional Range header for partial downloads (e.g., 'bytes=0-99')

Candidate Attachment

Candidate Attachment Download

Downloads an attachment (resume, cover letter, etc.) for a candidate by index. The attachment URL is a temporary signed AWS S3 URL that expires within 7 days. Files should be downloaded immediately after retrieval.

Python SDK

async for chunk in greenhouse.candidate_attachment.download(    id=0,    attachment_index=0):# Process each chunk (e.g., write to file)
file.write(chunk)

Note: Download operations return an async iterator of bytes chunks for memory-efficient streaming. Use async for to process chunks as they arrive.

API

curl --location 'https://api.airbyte.ai/api/v1/connectors/instances/{your_connector_instance_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "candidate_attachment",
"action": "download",
"params": {
"id": 0,
"attachment_index": 0
}
}'

Params

Parameter NameTypeRequiredDescription
idintegerYesCandidate ID
attachment_indexintegerYesIndex of the attachment to download (0-based)
range_headerstringNoOptional Range header for partial downloads (e.g., 'bytes=0-99')

Authentication

The Greenhouse connector supports the following authentication methods:

Harvest API Key Authentication

Field NameTypeRequiredDescription
api_keystrYesYour Greenhouse Harvest API Key from the Dev Center

Example

Python SDK

GreenhouseConnector(
auth_config=GreenhouseAuthConfig(
api_key="<Your Greenhouse Harvest API Key from the Dev Center>"
)
)

API

curl --location 'https://api.airbyte.ai/api/v1/connectors/instances' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"connector_definition_id": "59f1e50a-331f-4f09-b3e8-2e8d4d355f44",
"auth_config": {
"api_key": "<Your Greenhouse Harvest API Key from the Dev Center>"
},
"name": "My Greenhouse Connector"
}'