1
0
mirror of synced 2025-12-19 18:14:56 -05:00
Files
airbyte/docs/ai-agents/connectors/greenhouse/REFERENCE.md
devin-ai-integration[bot] b2afd6e91e docs: update terminology - Platform and AI agents (#70910)
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: ian.alton@airbyte.io <ian.alton@airbyte.io>
Co-authored-by: octavia-bot[bot] <108746235+octavia-bot[bot]@users.noreply.github.com>
2025-12-13 22:26:24 +00:00

24 KiB

Greenhouse

Supported Entities and Actions

Entity Actions
Candidates List, Get
Applications List, Get
Jobs List, Get
Offers List, Get
Users List, Get
Departments List, Get
Offices List, Get
Job Posts List, Get
Sources List
Scheduled Interviews List, Get
Application Attachment Download
Candidate Attachment Download

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 Name Type Required Description
per_page integer No Number of items to return per page (max 500)
page integer No Page 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 Name Type Required Description
id integer Yes Candidate ID
Response Schema

Records

Field Name Type Description
id integer
first_name string
last_name string
company string | null
title string | null
created_at string
updated_at string
last_activity string
is_private boolean
photo_url string | null
attachments array<object>
attachments[].filename string
attachments[].url string
attachments[].type "resume" | "cover_letter" | "admin_only" | "take_home_test" | "offer_packet" | "offer_letter" | "signed_offer_letter" | "other"
attachments[].created_at string
application_ids array<integer>
phone_numbers array<object>
addresses array<object>
email_addresses array<object>
website_addresses array<object>
social_media_addresses array<object>
recruiter object | null
coordinator object | null
can_email boolean
tags array<string>
custom_fields object

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 Name Type Required Description
per_page integer No Number of items to return per page (max 500)
page integer No Page number for pagination
created_before string No Filter by applications created before this timestamp
created_after string No Filter by applications created after this timestamp
last_activity_after string No Filter by applications with activity after this timestamp
job_id integer No Filter by job ID
status "active" | "rejected" | "hired" No Filter 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 Name Type Required Description
id integer Yes Application ID
Response Schema

Records

Field Name Type Description
id integer
candidate_id integer
prospect boolean
applied_at string
rejected_at string | null
last_activity_at string
location object | null
source object
credited_to object
rejection_reason object | null
rejection_details object | null
jobs array<object>
job_post_id integer | null
status string
current_stage object | null
answers array<object>
prospective_office object | null
prospective_department object | null
prospect_detail object
attachments array<object>
attachments[].filename string
attachments[].url string
attachments[].type "resume" | "cover_letter" | "admin_only" | "take_home_test" | "offer_packet" | "offer_letter" | "signed_offer_letter" | "other"
attachments[].created_at string
custom_fields object

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 Name Type Required Description
per_page integer No Number of items to return per page (max 500)
page integer No Page 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 Name Type Required Description
id integer Yes Job ID
Response Schema

Records

Field Name Type Description
id integer
name string
requisition_id string | null
notes string | null
confidential boolean
status string
created_at string
opened_at string
closed_at string | null
updated_at string
departments array<object | null>
offices array<object>
custom_fields object
hiring_team object
openings array<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 Name Type Required Description
per_page integer No Number of items to return per page (max 500)
page integer No Page number for pagination
created_before string No Filter by offers created before this timestamp
created_after string No Filter by offers created after this timestamp
resolved_after string No Filter 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 Name Type Required Description
id integer Yes Offer ID
Response Schema

Records

Field Name Type Description
id integer
version integer
application_id integer
job_id integer
candidate_id integer
opening object | null
created_at string
updated_at string
sent_at string | null
resolved_at string | null
starts_at string | null
status string
custom_fields object

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 Name Type Required Description
per_page integer No Number of items to return per page (max 500)
page integer No Page number for pagination
created_before string No Filter by users created before this timestamp
created_after string No Filter by users created after this timestamp
updated_before string No Filter by users updated before this timestamp
updated_after string No Filter 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 Name Type Required Description
id integer Yes User ID
Response Schema

Records

Field Name Type Description
id integer
name string
first_name string
last_name string
primary_email_address string
updated_at string
created_at string
disabled boolean
site_admin boolean
emails array<string>
employee_id string | null
linked_candidate_ids array<integer>
offices array<object>
departments array<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 Name Type Required Description
per_page integer No Number of items to return per page (max 500)
page integer No Page 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 Name Type Required Description
id integer Yes Department ID
Response Schema

Records

Field Name Type Description
id integer
name string
parent_id integer | null
parent_department_external_id string | null
child_ids array<integer>
child_department_external_ids array<string>
external_id string | 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 Name Type Required Description
per_page integer No Number of items to return per page (max 500)
page integer No Page 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 Name Type Required Description
id integer Yes Office ID
Response Schema

Records

Field Name Type Description
id integer
name string
location object | null
primary_contact_user_id integer | null
parent_id integer | null
parent_office_external_id string | null
child_ids array<integer>
child_office_external_ids array<string>
external_id string | 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 Name Type Required Description
per_page integer No Number of items to return per page (max 500)
page integer No Page number for pagination
live boolean No Filter by live status
active boolean No Filter 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 Name Type Required Description
id integer Yes Job Post ID
Response Schema

Records

Field Name Type Description
id integer
title string
location object | null
internal boolean
external boolean
active boolean
live boolean
first_published_at string | null
job_id integer
content string | null
internal_content string | null
updated_at string
created_at string
demographic_question_set_id integer | null
questions array<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 Name Type Required Description
per_page integer No Number of items to return per page (max 500)
page integer No Page 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 Name Type Required Description
per_page integer No Number of items to return per page (max 500)
page integer No Page number for pagination
created_before string No Filter by interviews created before this timestamp
created_after string No Filter by interviews created after this timestamp
updated_before string No Filter by interviews updated before this timestamp
updated_after string No Filter by interviews updated after this timestamp
starts_after string No Filter by interviews starting after this timestamp
ends_before string No Filter 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 Name Type Required Description
id integer Yes Scheduled Interview ID
Response Schema

Records

Field Name Type Description
id integer
application_id integer
external_event_id string | null
created_at string
updated_at string
start object | null
end object | null
location string | null
video_conferencing_url string | null
status string
interview object | null
organizer object | null
interviewers array<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 Name Type Required Description
id integer Yes Application ID
attachment_index integer Yes Index of the attachment to download (0-based)
range_header string No Optional 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 Name Type Required Description
id integer Yes Candidate ID
attachment_index integer Yes Index of the attachment to download (0-based)
range_header string No Optional Range header for partial downloads (e.g., 'bytes=0-99')

Authentication

The Greenhouse connector supports the following authentication methods:

Harvest API Key Authentication

Field Name Type Required Description
api_key str Yes Your 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"
}'