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/connectors/sources/{your_source_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/connectors/sources/{your_source_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/connectors/sources/{your_source_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 next_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
hitsarrayList of matching records
hits[].idstringRecord identifier
hits[].scorenumberRelevance score
hits[].dataobjectRecord data containing the searchable fields listed above
hits[].data.addressesarrayCandidate's addresses
hits[].data.application_idsarrayList of application IDs
hits[].data.applicationsarrayAn array of all applications made by candidates.
hits[].data.attachmentsarrayAttachments related to the candidate
hits[].data.can_emailbooleanIndicates if candidate can be emailed
hits[].data.companystringCompany where the candidate is associated
hits[].data.coordinatorstringCoordinator assigned to the candidate
hits[].data.created_atstringDate and time of creation
hits[].data.custom_fieldsobjectCustom fields associated with the candidate
hits[].data.educationsarrayList of candidate's educations
hits[].data.email_addressesarrayCandidate's email addresses
hits[].data.employmentsarrayList of candidate's employments
hits[].data.first_namestringCandidate's first name
hits[].data.idintegerCandidate's ID
hits[].data.is_privatebooleanIndicates if the candidate's data is private
hits[].data.keyed_custom_fieldsobjectKeyed custom fields associated with the candidate
hits[].data.last_activitystringDetails of the last activity related to the candidate
hits[].data.last_namestringCandidate's last name
hits[].data.phone_numbersarrayCandidate's phone numbers
hits[].data.photo_urlstringURL of the candidate's profile photo
hits[].data.recruiterstringRecruiter assigned to the candidate
hits[].data.social_media_addressesarrayCandidate's social media addresses
hits[].data.tagsarrayTags associated with the candidate
hits[].data.titlestringCandidate's title (e.g., Mr., Mrs., Dr.)
hits[].data.updated_atstringDate and time of last update
hits[].data.website_addressesarrayList of candidate's website addresses
next_cursorstring | nullCursor for next page of results
took_msnumberQuery execution time in milliseconds

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/connectors/sources/{your_source_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/connectors/sources/{your_source_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/connectors/sources/{your_source_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 next_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
hitsarrayList of matching records
hits[].idstringRecord identifier
hits[].scorenumberRelevance score
hits[].dataobjectRecord data containing the searchable fields listed above
hits[].data.answersarrayAnswers provided in the application.
hits[].data.applied_atstringTimestamp when the candidate applied.
hits[].data.attachmentsarrayAttachments uploaded with the application.
hits[].data.candidate_idintegerUnique identifier for the candidate.
hits[].data.credited_toobjectInformation about the employee who credited the application.
hits[].data.current_stageobjectCurrent stage of the application process.
hits[].data.idintegerUnique identifier for the application.
hits[].data.job_post_idinteger
hits[].data.jobsarrayJobs applied for by the candidate.
hits[].data.last_activity_atstringTimestamp of the last activity on the application.
hits[].data.locationstringLocation related to the application.
hits[].data.prospectbooleanStatus of the application prospect.
hits[].data.prospect_detailobjectDetails related to the application prospect.
hits[].data.prospective_departmentstringProspective department for the candidate.
hits[].data.prospective_officestringProspective office for the candidate.
hits[].data.rejected_atstringTimestamp when the application was rejected.
hits[].data.rejection_detailsobjectDetails related to the application rejection.
hits[].data.rejection_reasonobjectReason for the application rejection.
hits[].data.sourceobjectSource of the application.
hits[].data.statusstringStatus of the application.
next_cursorstring | nullCursor for next page of results
took_msnumberQuery execution time in milliseconds

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/connectors/sources/{your_source_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/connectors/sources/{your_source_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/connectors/sources/{your_source_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 next_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
hitsarrayList of matching records
hits[].idstringRecord identifier
hits[].scorenumberRelevance score
hits[].dataobjectRecord data containing the searchable fields listed above
hits[].data.closed_atstringThe date and time the job was closed
hits[].data.confidentialbooleanIndicates if the job details are confidential
hits[].data.copied_from_idintegerThe ID of the job from which this job was copied
hits[].data.created_atstringThe date and time the job was created
hits[].data.custom_fieldsobjectCustom fields related to the job
hits[].data.departmentsarrayDepartments associated with the job
hits[].data.hiring_teamobjectMembers of the hiring team for the job
hits[].data.idintegerUnique ID of the job
hits[].data.is_templatebooleanIndicates if the job is a template
hits[].data.keyed_custom_fieldsobjectKeyed custom fields related to the job
hits[].data.namestringName of the job
hits[].data.notesstringAdditional notes or comments about the job
hits[].data.officesarrayOffices associated with the job
hits[].data.opened_atstringThe date and time the job was opened
hits[].data.openingsarrayOpenings associated with the job
hits[].data.requisition_idstringID associated with the job requisition
hits[].data.statusstringCurrent status of the job
hits[].data.updated_atstringThe date and time the job was last updated
next_cursorstring | nullCursor for next page of results
took_msnumberQuery execution time in milliseconds

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/connectors/sources/{your_source_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/connectors/sources/{your_source_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/connectors/sources/{your_source_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 next_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
hitsarrayList of matching records
hits[].idstringRecord identifier
hits[].scorenumberRelevance score
hits[].dataobjectRecord data containing the searchable fields listed above
hits[].data.application_idintegerUnique identifier for the application associated with the offer
hits[].data.candidate_idintegerUnique identifier for the candidate associated with the offer
hits[].data.created_atstringTimestamp indicating when the offer was created
hits[].data.custom_fieldsobjectAdditional custom fields related to the offer
hits[].data.idintegerUnique identifier for the offer
hits[].data.job_idintegerUnique identifier for the job associated with the offer
hits[].data.keyed_custom_fieldsobjectKeyed custom fields associated with the offer
hits[].data.openingobjectDetails about the job opening
hits[].data.resolved_atstringTimestamp indicating when the offer was resolved
hits[].data.sent_atstringTimestamp indicating when the offer was sent
hits[].data.starts_atstringTimestamp indicating when the offer starts
hits[].data.statusstringStatus of the offer
hits[].data.updated_atstringTimestamp indicating when the offer was last updated
hits[].data.versionintegerVersion of the offer data
next_cursorstring | nullCursor for next page of results
took_msnumberQuery execution time in milliseconds

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/connectors/sources/{your_source_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/connectors/sources/{your_source_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/connectors/sources/{your_source_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 next_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
hitsarrayList of matching records
hits[].idstringRecord identifier
hits[].scorenumberRelevance score
hits[].dataobjectRecord data containing the searchable fields listed above
hits[].data.created_atstringThe date and time when the user account was created.
hits[].data.departmentsarrayList of departments associated with users
hits[].data.disabledbooleanIndicates whether the user account is disabled.
hits[].data.emailsarrayEmail addresses of the users
hits[].data.employee_idstringEmployee identifier for the user.
hits[].data.first_namestringThe first name of the user.
hits[].data.idintegerUnique identifier for the user.
hits[].data.last_namestringThe last name of the user.
hits[].data.linked_candidate_idsarrayIDs of candidates linked to the user.
hits[].data.namestringThe full name of the user.
hits[].data.officesarrayList of office locations where users are based
hits[].data.primary_email_addressstringThe primary email address of the user.
hits[].data.site_adminbooleanIndicates whether the user is a site administrator.
hits[].data.updated_atstringThe date and time when the user account was last updated.
next_cursorstring | nullCursor for next page of results
took_msnumberQuery execution time in milliseconds

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/connectors/sources/{your_source_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/connectors/sources/{your_source_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/connectors/sources/{your_source_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 next_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
hitsarrayList of matching records
hits[].idstringRecord identifier
hits[].scorenumberRelevance score
hits[].dataobjectRecord data containing the searchable fields listed above
hits[].data.child_department_external_idsarrayExternal IDs of child departments associated with this department.
hits[].data.child_idsarrayUnique IDs of child departments associated with this department.
hits[].data.external_idstringExternal ID of this department.
hits[].data.idintegerUnique ID of this department.
hits[].data.namestringName of the department.
hits[].data.parent_department_external_idstringExternal ID of the parent department of this department.
hits[].data.parent_idintegerUnique ID of the parent department of this department.
next_cursorstring | nullCursor for next page of results
took_msnumberQuery execution time in milliseconds

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/connectors/sources/{your_source_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/connectors/sources/{your_source_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/connectors/sources/{your_source_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 next_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
hitsarrayList of matching records
hits[].idstringRecord identifier
hits[].scorenumberRelevance score
hits[].dataobjectRecord data containing the searchable fields listed above
hits[].data.child_idsarrayIDs of child offices associated with this office
hits[].data.child_office_external_idsarrayExternal IDs of child offices associated with this office
hits[].data.external_idstringUnique identifier for this office in the external system
hits[].data.idintegerUnique identifier for this office in the API system
hits[].data.locationobjectLocation details of this office
hits[].data.namestringName of the office
hits[].data.parent_idintegerID of the parent office, if this office is a branch office
hits[].data.parent_office_external_idstringExternal ID of the parent office in the external system
hits[].data.primary_contact_user_idintegerUser ID of the primary contact person for this office
next_cursorstring | nullCursor for next page of results
took_msnumberQuery execution time in milliseconds

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/connectors/sources/{your_source_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/connectors/sources/{your_source_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/connectors/sources/{your_source_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 next_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
hitsarrayList of matching records
hits[].idstringRecord identifier
hits[].scorenumberRelevance score
hits[].dataobjectRecord data containing the searchable fields listed above
hits[].data.activebooleanFlag indicating if the job post is active or not.
hits[].data.contentstringContent or description of the job post.
hits[].data.created_atstringDate and time when the job post was created.
hits[].data.demographic_question_set_idintegerID of the demographic question set associated with the job post.
hits[].data.externalbooleanFlag indicating if the job post is external or not.
hits[].data.first_published_atstringDate and time when the job post was first published.
hits[].data.idintegerUnique identifier of the job post.
hits[].data.internalbooleanFlag indicating if the job post is internal or not.
hits[].data.internal_contentstringInternal content or description of the job post.
hits[].data.job_idintegerID of the job associated with the job post.
hits[].data.livebooleanFlag indicating if the job post is live or not.
hits[].data.locationobjectDetails about the job post location.
hits[].data.questionsarrayList of questions related to the job post.
hits[].data.titlestringTitle or headline of the job post.
hits[].data.updated_atstringDate and time when the job post was last updated.
next_cursorstring | nullCursor for next page of results
took_msnumberQuery execution time in milliseconds

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/connectors/sources/{your_source_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/connectors/sources/{your_source_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 next_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
hitsarrayList of matching records
hits[].idstringRecord identifier
hits[].scorenumberRelevance score
hits[].dataobjectRecord data containing the searchable fields listed above
hits[].data.idintegerThe unique identifier for the source.
hits[].data.namestringThe name of the source.
hits[].data.typeobjectType of the data source
next_cursorstring | nullCursor for next page of results
took_msnumberQuery execution time in milliseconds

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/connectors/sources/{your_source_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/connectors/sources/{your_source_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/connectors/sources/{your_source_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/connectors/sources/{your_source_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')