Skip to main content

Greenhouse full reference

This is the full reference documentation for the Greenhouse agent connector.

Supported entities and actions

The Greenhouse connector supports the following entities and actions.

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

Candidates

Candidates List

Returns a paginated list of all candidates in the organization

Python SDK

await greenhouse.candidates.list()

API

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

Parameters

Parameter NameTypeRequiredDescription
per_pageintegerNoNumber of items to return per page (max 500)
pageintegerNoPage number for pagination
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

Candidates Get

Get a single candidate by ID

Python SDK

await greenhouse.candidates.get(
id=0
)

API

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

Parameters

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

Search and filter candidates records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.

Python SDK

await greenhouse.candidates.search(
query={"filter": {"eq": {"addresses": []}}}
)

API

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "candidates",
"action": "search",
"params": {
"query": {"filter": {"eq": {"addresses": []}}}
}
}'

Parameters

Parameter NameTypeRequiredDescription
queryobjectYesFilter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or
query.filterobjectNoFilter conditions
query.sortarrayNoSort conditions
limitintegerNoMaximum results to return (default 1000)
cursorstringNoPagination cursor from previous response's meta.cursor
fieldsarrayNoField paths to include in results

Searchable Fields

Field NameTypeDescription
addressesarrayCandidate's addresses
application_idsarrayList of application IDs
applicationsarrayAn array of all applications made by candidates.
attachmentsarrayAttachments related to the candidate
can_emailbooleanIndicates if candidate can be emailed
companystringCompany where the candidate is associated
coordinatorstringCoordinator assigned to the candidate
created_atstringDate and time of creation
custom_fieldsobjectCustom fields associated with the candidate
educationsarrayList of candidate's educations
email_addressesarrayCandidate's email addresses
employmentsarrayList of candidate's employments
first_namestringCandidate's first name
idintegerCandidate's ID
is_privatebooleanIndicates if the candidate's data is private
keyed_custom_fieldsobjectKeyed custom fields associated with the candidate
last_activitystringDetails of the last activity related to the candidate
last_namestringCandidate's last name
phone_numbersarrayCandidate's phone numbers
photo_urlstringURL of the candidate's profile photo
recruiterstringRecruiter assigned to the candidate
social_media_addressesarrayCandidate's social media addresses
tagsarrayTags associated with the candidate
titlestringCandidate's title (e.g., Mr., Mrs., Dr.)
updated_atstringDate and time of last update
website_addressesarrayList of candidate's website addresses
Response Schema
Field NameTypeDescription
dataarrayList of matching records
metaobjectPagination metadata
meta.has_morebooleanWhether additional pages are available
meta.cursorstring | nullCursor for next page of results
meta.took_msnumber | nullQuery execution time in milliseconds
data[].addressesarrayCandidate's addresses
data[].application_idsarrayList of application IDs
data[].applicationsarrayAn array of all applications made by candidates.
data[].attachmentsarrayAttachments related to the candidate
data[].can_emailbooleanIndicates if candidate can be emailed
data[].companystringCompany where the candidate is associated
data[].coordinatorstringCoordinator assigned to the candidate
data[].created_atstringDate and time of creation
data[].custom_fieldsobjectCustom fields associated with the candidate
data[].educationsarrayList of candidate's educations
data[].email_addressesarrayCandidate's email addresses
data[].employmentsarrayList of candidate's employments
data[].first_namestringCandidate's first name
data[].idintegerCandidate's ID
data[].is_privatebooleanIndicates if the candidate's data is private
data[].keyed_custom_fieldsobjectKeyed custom fields associated with the candidate
data[].last_activitystringDetails of the last activity related to the candidate
data[].last_namestringCandidate's last name
data[].phone_numbersarrayCandidate's phone numbers
data[].photo_urlstringURL of the candidate's profile photo
data[].recruiterstringRecruiter assigned to the candidate
data[].social_media_addressesarrayCandidate's social media addresses
data[].tagsarrayTags associated with the candidate
data[].titlestringCandidate's title (e.g., Mr., Mrs., Dr.)
data[].updated_atstringDate and time of last update
data[].website_addressesarrayList of candidate's website addresses

Applications

Applications List

Returns a paginated list of all applications

Python SDK

await greenhouse.applications.list()

API

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

Parameters

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

Applications Get

Get a single application by ID

Python SDK

await greenhouse.applications.get(
id=0
)

API

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

Parameters

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

Search and filter applications records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.

Python SDK

await greenhouse.applications.search(
query={"filter": {"eq": {"answers": []}}}
)

API

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "applications",
"action": "search",
"params": {
"query": {"filter": {"eq": {"answers": []}}}
}
}'

Parameters

Parameter NameTypeRequiredDescription
queryobjectYesFilter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or
query.filterobjectNoFilter conditions
query.sortarrayNoSort conditions
limitintegerNoMaximum results to return (default 1000)
cursorstringNoPagination cursor from previous response's meta.cursor
fieldsarrayNoField paths to include in results

Searchable Fields

Field NameTypeDescription
answersarrayAnswers provided in the application.
applied_atstringTimestamp when the candidate applied.
attachmentsarrayAttachments uploaded with the application.
candidate_idintegerUnique identifier for the candidate.
credited_toobjectInformation about the employee who credited the application.
current_stageobjectCurrent stage of the application process.
idintegerUnique identifier for the application.
job_post_idinteger
jobsarrayJobs applied for by the candidate.
last_activity_atstringTimestamp of the last activity on the application.
locationstringLocation related to the application.
prospectbooleanStatus of the application prospect.
prospect_detailobjectDetails related to the application prospect.
prospective_departmentstringProspective department for the candidate.
prospective_officestringProspective office for the candidate.
rejected_atstringTimestamp when the application was rejected.
rejection_detailsobjectDetails related to the application rejection.
rejection_reasonobjectReason for the application rejection.
sourceobjectSource of the application.
statusstringStatus of the application.
Response Schema
Field NameTypeDescription
dataarrayList of matching records
metaobjectPagination metadata
meta.has_morebooleanWhether additional pages are available
meta.cursorstring | nullCursor for next page of results
meta.took_msnumber | nullQuery execution time in milliseconds
data[].answersarrayAnswers provided in the application.
data[].applied_atstringTimestamp when the candidate applied.
data[].attachmentsarrayAttachments uploaded with the application.
data[].candidate_idintegerUnique identifier for the candidate.
data[].credited_toobjectInformation about the employee who credited the application.
data[].current_stageobjectCurrent stage of the application process.
data[].idintegerUnique identifier for the application.
data[].job_post_idinteger
data[].jobsarrayJobs applied for by the candidate.
data[].last_activity_atstringTimestamp of the last activity on the application.
data[].locationstringLocation related to the application.
data[].prospectbooleanStatus of the application prospect.
data[].prospect_detailobjectDetails related to the application prospect.
data[].prospective_departmentstringProspective department for the candidate.
data[].prospective_officestringProspective office for the candidate.
data[].rejected_atstringTimestamp when the application was rejected.
data[].rejection_detailsobjectDetails related to the application rejection.
data[].rejection_reasonobjectReason for the application rejection.
data[].sourceobjectSource of the application.
data[].statusstringStatus of the application.

Jobs

Jobs List

Returns a paginated list of all jobs in the organization

Python SDK

await greenhouse.jobs.list()

API

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

Parameters

Parameter NameTypeRequiredDescription
per_pageintegerNoNumber of items to return per page (max 500)
pageintegerNoPage number for pagination
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>

Jobs Get

Get a single job by ID

Python SDK

await greenhouse.jobs.get(
id=0
)

API

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

Parameters

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>

Search and filter jobs records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.

Python SDK

await greenhouse.jobs.search(
query={"filter": {"eq": {"closed_at": "<str>"}}}
)

API

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "jobs",
"action": "search",
"params": {
"query": {"filter": {"eq": {"closed_at": "<str>"}}}
}
}'

Parameters

Parameter NameTypeRequiredDescription
queryobjectYesFilter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or
query.filterobjectNoFilter conditions
query.sortarrayNoSort conditions
limitintegerNoMaximum results to return (default 1000)
cursorstringNoPagination cursor from previous response's meta.cursor
fieldsarrayNoField paths to include in results

Searchable Fields

Field NameTypeDescription
closed_atstringThe date and time the job was closed
confidentialbooleanIndicates if the job details are confidential
copied_from_idintegerThe ID of the job from which this job was copied
created_atstringThe date and time the job was created
custom_fieldsobjectCustom fields related to the job
departmentsarrayDepartments associated with the job
hiring_teamobjectMembers of the hiring team for the job
idintegerUnique ID of the job
is_templatebooleanIndicates if the job is a template
keyed_custom_fieldsobjectKeyed custom fields related to the job
namestringName of the job
notesstringAdditional notes or comments about the job
officesarrayOffices associated with the job
opened_atstringThe date and time the job was opened
openingsarrayOpenings associated with the job
requisition_idstringID associated with the job requisition
statusstringCurrent status of the job
updated_atstringThe date and time the job was last updated
Response Schema
Field NameTypeDescription
dataarrayList of matching records
metaobjectPagination metadata
meta.has_morebooleanWhether additional pages are available
meta.cursorstring | nullCursor for next page of results
meta.took_msnumber | nullQuery execution time in milliseconds
data[].closed_atstringThe date and time the job was closed
data[].confidentialbooleanIndicates if the job details are confidential
data[].copied_from_idintegerThe ID of the job from which this job was copied
data[].created_atstringThe date and time the job was created
data[].custom_fieldsobjectCustom fields related to the job
data[].departmentsarrayDepartments associated with the job
data[].hiring_teamobjectMembers of the hiring team for the job
data[].idintegerUnique ID of the job
data[].is_templatebooleanIndicates if the job is a template
data[].keyed_custom_fieldsobjectKeyed custom fields related to the job
data[].namestringName of the job
data[].notesstringAdditional notes or comments about the job
data[].officesarrayOffices associated with the job
data[].opened_atstringThe date and time the job was opened
data[].openingsarrayOpenings associated with the job
data[].requisition_idstringID associated with the job requisition
data[].statusstringCurrent status of the job
data[].updated_atstringThe date and time the job was last updated

Offers

Offers List

Returns a paginated list of all offers

Python SDK

await greenhouse.offers.list()

API

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

Parameters

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

Offers Get

Get a single offer by ID

Python SDK

await greenhouse.offers.get(
id=0
)

API

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

Parameters

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

Search and filter offers records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.

Python SDK

await greenhouse.offers.search(
query={"filter": {"eq": {"application_id": 0}}}
)

API

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "offers",
"action": "search",
"params": {
"query": {"filter": {"eq": {"application_id": 0}}}
}
}'

Parameters

Parameter NameTypeRequiredDescription
queryobjectYesFilter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or
query.filterobjectNoFilter conditions
query.sortarrayNoSort conditions
limitintegerNoMaximum results to return (default 1000)
cursorstringNoPagination cursor from previous response's meta.cursor
fieldsarrayNoField paths to include in results

Searchable Fields

Field NameTypeDescription
application_idintegerUnique identifier for the application associated with the offer
candidate_idintegerUnique identifier for the candidate associated with the offer
created_atstringTimestamp indicating when the offer was created
custom_fieldsobjectAdditional custom fields related to the offer
idintegerUnique identifier for the offer
job_idintegerUnique identifier for the job associated with the offer
keyed_custom_fieldsobjectKeyed custom fields associated with the offer
openingobjectDetails about the job opening
resolved_atstringTimestamp indicating when the offer was resolved
sent_atstringTimestamp indicating when the offer was sent
starts_atstringTimestamp indicating when the offer starts
statusstringStatus of the offer
updated_atstringTimestamp indicating when the offer was last updated
versionintegerVersion of the offer data
Response Schema
Field NameTypeDescription
dataarrayList of matching records
metaobjectPagination metadata
meta.has_morebooleanWhether additional pages are available
meta.cursorstring | nullCursor for next page of results
meta.took_msnumber | nullQuery execution time in milliseconds
data[].application_idintegerUnique identifier for the application associated with the offer
data[].candidate_idintegerUnique identifier for the candidate associated with the offer
data[].created_atstringTimestamp indicating when the offer was created
data[].custom_fieldsobjectAdditional custom fields related to the offer
data[].idintegerUnique identifier for the offer
data[].job_idintegerUnique identifier for the job associated with the offer
data[].keyed_custom_fieldsobjectKeyed custom fields associated with the offer
data[].openingobjectDetails about the job opening
data[].resolved_atstringTimestamp indicating when the offer was resolved
data[].sent_atstringTimestamp indicating when the offer was sent
data[].starts_atstringTimestamp indicating when the offer starts
data[].statusstringStatus of the offer
data[].updated_atstringTimestamp indicating when the offer was last updated
data[].versionintegerVersion of the offer data

Users

Users List

Returns a paginated list of all users

Python SDK

await greenhouse.users.list()

API

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

Parameters

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

Users Get

Get a single user by ID

Python SDK

await greenhouse.users.get(
id=0
)

API

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

Parameters

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>

Search and filter users records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.

Python SDK

await greenhouse.users.search(
query={"filter": {"eq": {"created_at": "<str>"}}}
)

API

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "users",
"action": "search",
"params": {
"query": {"filter": {"eq": {"created_at": "<str>"}}}
}
}'

Parameters

Parameter NameTypeRequiredDescription
queryobjectYesFilter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or
query.filterobjectNoFilter conditions
query.sortarrayNoSort conditions
limitintegerNoMaximum results to return (default 1000)
cursorstringNoPagination cursor from previous response's meta.cursor
fieldsarrayNoField paths to include in results

Searchable Fields

Field NameTypeDescription
created_atstringThe date and time when the user account was created.
departmentsarrayList of departments associated with users
disabledbooleanIndicates whether the user account is disabled.
emailsarrayEmail addresses of the users
employee_idstringEmployee identifier for the user.
first_namestringThe first name of the user.
idintegerUnique identifier for the user.
last_namestringThe last name of the user.
linked_candidate_idsarrayIDs of candidates linked to the user.
namestringThe full name of the user.
officesarrayList of office locations where users are based
primary_email_addressstringThe primary email address of the user.
site_adminbooleanIndicates whether the user is a site administrator.
updated_atstringThe date and time when the user account was last updated.
Response Schema
Field NameTypeDescription
dataarrayList of matching records
metaobjectPagination metadata
meta.has_morebooleanWhether additional pages are available
meta.cursorstring | nullCursor for next page of results
meta.took_msnumber | nullQuery execution time in milliseconds
data[].created_atstringThe date and time when the user account was created.
data[].departmentsarrayList of departments associated with users
data[].disabledbooleanIndicates whether the user account is disabled.
data[].emailsarrayEmail addresses of the users
data[].employee_idstringEmployee identifier for the user.
data[].first_namestringThe first name of the user.
data[].idintegerUnique identifier for the user.
data[].last_namestringThe last name of the user.
data[].linked_candidate_idsarrayIDs of candidates linked to the user.
data[].namestringThe full name of the user.
data[].officesarrayList of office locations where users are based
data[].primary_email_addressstringThe primary email address of the user.
data[].site_adminbooleanIndicates whether the user is a site administrator.
data[].updated_atstringThe date and time when the user account was last updated.

Departments

Departments List

Returns a paginated list of all departments

Python SDK

await greenhouse.departments.list()

API

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

Parameters

Parameter NameTypeRequiredDescription
per_pageintegerNoNumber of items to return per page (max 500)
pageintegerNoPage number for pagination
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

Departments Get

Get a single department by ID

Python SDK

await greenhouse.departments.get(
id=0
)

API

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

Parameters

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

Search and filter departments records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.

Python SDK

await greenhouse.departments.search(
query={"filter": {"eq": {"child_department_external_ids": []}}}
)

API

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "departments",
"action": "search",
"params": {
"query": {"filter": {"eq": {"child_department_external_ids": []}}}
}
}'

Parameters

Parameter NameTypeRequiredDescription
queryobjectYesFilter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or
query.filterobjectNoFilter conditions
query.sortarrayNoSort conditions
limitintegerNoMaximum results to return (default 1000)
cursorstringNoPagination cursor from previous response's meta.cursor
fieldsarrayNoField paths to include in results

Searchable Fields

Field NameTypeDescription
child_department_external_idsarrayExternal IDs of child departments associated with this department.
child_idsarrayUnique IDs of child departments associated with this department.
external_idstringExternal ID of this department.
idintegerUnique ID of this department.
namestringName of the department.
parent_department_external_idstringExternal ID of the parent department of this department.
parent_idintegerUnique ID of the parent department of this department.
Response Schema
Field NameTypeDescription
dataarrayList of matching records
metaobjectPagination metadata
meta.has_morebooleanWhether additional pages are available
meta.cursorstring | nullCursor for next page of results
meta.took_msnumber | nullQuery execution time in milliseconds
data[].child_department_external_idsarrayExternal IDs of child departments associated with this department.
data[].child_idsarrayUnique IDs of child departments associated with this department.
data[].external_idstringExternal ID of this department.
data[].idintegerUnique ID of this department.
data[].namestringName of the department.
data[].parent_department_external_idstringExternal ID of the parent department of this department.
data[].parent_idintegerUnique ID of the parent department of this department.

Offices

Offices List

Returns a paginated list of all offices

Python SDK

await greenhouse.offices.list()

API

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

Parameters

Parameter NameTypeRequiredDescription
per_pageintegerNoNumber of items to return per page (max 500)
pageintegerNoPage number for pagination
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

Offices Get

Get a single office by ID

Python SDK

await greenhouse.offices.get(
id=0
)

API

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

Parameters

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

Search and filter offices records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.

Python SDK

await greenhouse.offices.search(
query={"filter": {"eq": {"child_ids": []}}}
)

API

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "offices",
"action": "search",
"params": {
"query": {"filter": {"eq": {"child_ids": []}}}
}
}'

Parameters

Parameter NameTypeRequiredDescription
queryobjectYesFilter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or
query.filterobjectNoFilter conditions
query.sortarrayNoSort conditions
limitintegerNoMaximum results to return (default 1000)
cursorstringNoPagination cursor from previous response's meta.cursor
fieldsarrayNoField paths to include in results

Searchable Fields

Field NameTypeDescription
child_idsarrayIDs of child offices associated with this office
child_office_external_idsarrayExternal IDs of child offices associated with this office
external_idstringUnique identifier for this office in the external system
idintegerUnique identifier for this office in the API system
locationobjectLocation details of this office
namestringName of the office
parent_idintegerID of the parent office, if this office is a branch office
parent_office_external_idstringExternal ID of the parent office in the external system
primary_contact_user_idintegerUser ID of the primary contact person for this office
Response Schema
Field NameTypeDescription
dataarrayList of matching records
metaobjectPagination metadata
meta.has_morebooleanWhether additional pages are available
meta.cursorstring | nullCursor for next page of results
meta.took_msnumber | nullQuery execution time in milliseconds
data[].child_idsarrayIDs of child offices associated with this office
data[].child_office_external_idsarrayExternal IDs of child offices associated with this office
data[].external_idstringUnique identifier for this office in the external system
data[].idintegerUnique identifier for this office in the API system
data[].locationobjectLocation details of this office
data[].namestringName of the office
data[].parent_idintegerID of the parent office, if this office is a branch office
data[].parent_office_external_idstringExternal ID of the parent office in the external system
data[].primary_contact_user_idintegerUser ID of the primary contact person for this office

Job Posts

Job Posts List

Returns a paginated list of all job posts

Python SDK

await greenhouse.job_posts.list()

API

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

Parameters

Parameter NameTypeRequiredDescription
per_pageintegerNoNumber of items to return per page (max 500)
pageintegerNoPage number for pagination
livebooleanNoFilter by live status
activebooleanNoFilter by active status
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>

Job Posts Get

Get a single job post by ID

Python SDK

await greenhouse.job_posts.get(
id=0
)

API

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

Parameters

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>

Search and filter job posts records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.

Python SDK

await greenhouse.job_posts.search(
query={"filter": {"eq": {"active": True}}}
)

API

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "job_posts",
"action": "search",
"params": {
"query": {"filter": {"eq": {"active": True}}}
}
}'

Parameters

Parameter NameTypeRequiredDescription
queryobjectYesFilter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or
query.filterobjectNoFilter conditions
query.sortarrayNoSort conditions
limitintegerNoMaximum results to return (default 1000)
cursorstringNoPagination cursor from previous response's meta.cursor
fieldsarrayNoField paths to include in results

Searchable Fields

Field NameTypeDescription
activebooleanFlag indicating if the job post is active or not.
contentstringContent or description of the job post.
created_atstringDate and time when the job post was created.
demographic_question_set_idintegerID of the demographic question set associated with the job post.
externalbooleanFlag indicating if the job post is external or not.
first_published_atstringDate and time when the job post was first published.
idintegerUnique identifier of the job post.
internalbooleanFlag indicating if the job post is internal or not.
internal_contentstringInternal content or description of the job post.
job_idintegerID of the job associated with the job post.
livebooleanFlag indicating if the job post is live or not.
locationobjectDetails about the job post location.
questionsarrayList of questions related to the job post.
titlestringTitle or headline of the job post.
updated_atstringDate and time when the job post was last updated.
Response Schema
Field NameTypeDescription
dataarrayList of matching records
metaobjectPagination metadata
meta.has_morebooleanWhether additional pages are available
meta.cursorstring | nullCursor for next page of results
meta.took_msnumber | nullQuery execution time in milliseconds
data[].activebooleanFlag indicating if the job post is active or not.
data[].contentstringContent or description of the job post.
data[].created_atstringDate and time when the job post was created.
data[].demographic_question_set_idintegerID of the demographic question set associated with the job post.
data[].externalbooleanFlag indicating if the job post is external or not.
data[].first_published_atstringDate and time when the job post was first published.
data[].idintegerUnique identifier of the job post.
data[].internalbooleanFlag indicating if the job post is internal or not.
data[].internal_contentstringInternal content or description of the job post.
data[].job_idintegerID of the job associated with the job post.
data[].livebooleanFlag indicating if the job post is live or not.
data[].locationobjectDetails about the job post location.
data[].questionsarrayList of questions related to the job post.
data[].titlestringTitle or headline of the job post.
data[].updated_atstringDate and time when the job post was last updated.

Sources

Sources List

Returns a paginated list of all sources

Python SDK

await greenhouse.sources.list()

API

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

Parameters

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

Records

Field NameTypeDescription
idinteger
namestring
typeobject | null

Search and filter sources records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.

Python SDK

await greenhouse.sources.search(
query={"filter": {"eq": {"id": 0}}}
)

API

curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your_auth_token}' \
--data '{
"entity": "sources",
"action": "search",
"params": {
"query": {"filter": {"eq": {"id": 0}}}
}
}'

Parameters

Parameter NameTypeRequiredDescription
queryobjectYesFilter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or
query.filterobjectNoFilter conditions
query.sortarrayNoSort conditions
limitintegerNoMaximum results to return (default 1000)
cursorstringNoPagination cursor from previous response's meta.cursor
fieldsarrayNoField paths to include in results

Searchable Fields

Field NameTypeDescription
idintegerThe unique identifier for the source.
namestringThe name of the source.
typeobjectType of the data source
Response Schema
Field NameTypeDescription
dataarrayList of matching records
metaobjectPagination metadata
meta.has_morebooleanWhether additional pages are available
meta.cursorstring | nullCursor for next page of results
meta.took_msnumber | nullQuery execution time in milliseconds
data[].idintegerThe unique identifier for the source.
data[].namestringThe name of the source.
data[].typeobjectType of the data source

Scheduled Interviews

Scheduled Interviews List

Returns a paginated list of all scheduled interviews

Python SDK

await greenhouse.scheduled_interviews.list()

API

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

Parameters

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

Scheduled Interviews Get

Get a single scheduled interview by ID

Python SDK

await greenhouse.scheduled_interviews.get(
id=0
)

API

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

Parameters

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/integrations/connectors/{your_connector_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
}
}'

Parameters

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/integrations/connectors/{your_connector_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
}
}'

Parameters

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')