The Greenhouse connector lets your AI agent act in each user's Greenhouse account. Each user signs in to Greenhouse once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 90 tools.
- Tools
- 90
- What they doRead · write · destructive
- 46 · 32 · 1246 read32 write12 destructive
- Users sign in with
- OAuth
- OAuth app
- Your own Greenhouse app
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Greenhouse connection
In AgentKit > Connections, create a Greenhouse connection and copy its redirect URI. The name you give it is the
connection_nameyour code passes. See Configure connections.Register an OAuth app
Greenhouse connections use your own OAuth app. Register one with Greenhouse and add the redirect URI you copied.
Then enter the app's Client ID and Client Secret on the Greenhouse connection.
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'greenhouse'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Greenhouse:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'greenhouse_application_stages_list',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "greenhouse"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Greenhouse:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="greenhouse_application_stages_list",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolgreenhouse_application_stages_listList the stage history rows of Greenhouse applications, one row per interview stage an application has occupied.Read-onlyList Application Stages
List the stage history rows of Greenhouse applications, one row per interview stage an application has occupied. Returns stage rows with application_id, job_interview_stage_id, entered_at and exited_at. Use this for time-in-stage or the current stage of an application (current true). Use greenhouse_job_interview_stages_list for a job's stage definitions.
Inputs
application_idsstring- Return only rows for these application ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
currentboolean- When true, return only the application's current stage entry (the one with exited_at null); when false, only past stage entries. Omit to include the full stage history. Example: true
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: application_id, created_at, current, days_in_stage, entered_at, exited_at, id, job_interview_stage_id, updated_at. Example: id,application_id,created_at
idsstring- Return only application stages with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
job_interview_stage_idsstring- Return only stage entries where the application visited one of these interview stage ids. These are hiring plan interview stage ids (look up the stages on a job via greenhouse_job_interview_stages_list (filtered by job_ids)); each row represents an application's visit to a stage, not the stage definition itself. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_applications_listList Greenhouse applications, filtered by candidate, job, job post, source, referrer, stage, status, or created/updated time.Read-onlyList Applications
List Greenhouse applications, filtered by candidate, job, job post, source, referrer, stage, status, or created/updated time. Returns applications with candidate_id, job_id, current stage_id and stage_name, status, source, recruiter, coordinator and rejection data, newest first. Use this to see where candidates are in the pipeline. Use greenhouse_application_stages_list for an application's stage history.
Inputs
candidate_idsstring- Return only rows for these candidate ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
custom_field_option_idinteger- Return only applications whose application custom field value matches this single-select or multi-select option id. Example: 4012345002
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: agency_note_id, answers, candidate_id, coordinator_id, created_at, custom_fields, id, job_id, job_interview_stage_id, job_post_id, last_activity_at, location_address, needs_decision, prospect, prospective_job_ids, recruiter_id, referrer_id, rejected_at, rejection_reason_id, source_id, stage_id, stage_name, status, updated_at. Example: id,agency_note_id,answers
idsstring- Return only applications with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
job_idsstring- Return only applications attached to these job (hiring plan) ids. This is the application's current job, not any prospective placement — use prospective_job_ids for that. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
job_interview_stage_idsstring- Return only applications whose current job interview stage matches one of these stage IDs. These are job interview stage definition IDs (IDs from greenhouse_job_interview_stages_list). Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
job_post_idsstring- Return only rows for these job post ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
last_activity_at_afterstring- Filter by last-activity timestamp on the application: return records on or after this value, given as an ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
last_activity_at_beforestring- Filter by last-activity timestamp on the application: return records on or before this value, given as an ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
prospectboolean- When true, return only prospect applications; when false, only non-prospect (candidate) applications. Omit to include both. Example: true
prospective_job_idsstring- Return only applications that have a prospective placement on one of these job (hiring plan) ids. Prospective jobs are jobs a candidate is being considered for before being moved onto them; use job_ids to filter by the application's current job. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
referrer_idsstring- Return only applications attributed to these referrer ids. A referrer is the Greenhouse Referrer record (see greenhouse_referrers_list) — not a user id. Look up the referrer id for a user via that endpoint first. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
source_idsstring- Return only rows for these source ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
stage_idsstring- Return only applications whose current stage matches one of these stage IDs. These are application-stage IDs — the same value returned as stage_id on each application — not job interview stage definition IDs (IDs from greenhouse_job_interview_stages_list will not match). Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
stage_namestring- Filter applications by current stage name (exact match, case sensitive). Useful when you want to slice by stage without first looking up its id. Example: Phone Screen
statusstring- Filter by the application's lifecycle status. active returns applications still in process; rejected and hired filter by terminal state. One of: rejected, hired, converted, active. Example: rejectedone of
rejectedhiredconvertedactive updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_attachments_listList files attached to Greenhouse applications, such as resumes, cover letters and offer letters, filtered by candidate, application, or type.Read-onlyList Attachments
List files attached to Greenhouse applications, such as resumes, cover letters and offer letters, filtered by candidate, application, or type. Returns attachments with id, application_id, candidate_id, type, filename and a short-lived download url. Use this to find a candidate's resume or documents. Use greenhouse_attachment_create to add a file.
Inputs
application_idsstring- Return only rows for these application ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
candidate_idsstring- Return only attachments whose application belongs to one of these candidates (people). Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: application_id, candidate_id, created_at, filename, id, type, updated_at, url. Example: id,application_id,candidate_id
idsstring- Return only attachments with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
typestring- Filter by attachment type. resume, cover_letter, take_home_test are candidate-supplied documents; offer_packet, offer_letter, signed_offer_letter are offer documents; midfunnel_agreement and automated_agreement are e-signed documents; form_attachment is generated by Greenhouse forms; other is the free-form bucket. One of: resume, cover_letter, take_home_test, offer_packet, offer_letter, signed_offer_letter, other, form_attachment, midfunnel_agreement, automated_agreement. Example: resumeone of
resumecover_lettertake_home_testoffer_packetoffer_lettersigned_offer_letterotherform_attachmentmidfunnel_agreementautomated_agreement updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_candidate_educations_listList education entries on Greenhouse candidate profiles, filtered by candidate, latest entry, or start/end date.Read-onlyList Candidate Educations
List education entries on Greenhouse candidate profiles, filtered by candidate, latest entry, or start/end date. Returns educations with candidate_id, school, degree and discipline option ids, and start and end dates. Use this to read a candidate's education. Use greenhouse_candidate_employments_list for work history.
Inputs
candidate_idsstring- Return only rows for these candidate ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
end_at_afterstring- Filter by education end date: return records on or after this value, given as an ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
end_at_beforestring- Filter by education end date: return records on or before this value, given as an ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: candidate_id, created_at, degree_custom_field_option_id, discipline_custom_field_option_id, end_at, end_date_month, end_date_year, id, latest, school_name_custom_field_option_id, start_at, start_date_month, start_date_year, updated_at. Example: id,candidate_id,created_at
idsstring- Return only candidate educations with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
latestboolean- When true, return only each candidate's most recent education entry; when false, exclude the most recent. Omit to include the full education history. Example: true
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
start_at_afterstring- Filter by education start date: return records on or after this value, given as an ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
start_at_beforestring- Filter by education start date: return records on or before this value, given as an ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_candidate_employments_listList work history entries on Greenhouse candidate profiles, filtered by candidate or latest entry.Read-onlyList Candidate Employments
List work history entries on Greenhouse candidate profiles, filtered by candidate or latest entry. Returns employments with candidate_id, company_name, title, start_date and end_date. Use this to read a candidate's work history. Use greenhouse_candidate_educations_list for education.
Inputs
candidate_idsstring- Return only rows for these candidate ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: candidate_id, company_name, created_at, end_date, id, latest, start_date, title, updated_at. Example: id,candidate_id,company_name
idsstring- Return only candidate employments with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
latestboolean- When true, return only each candidate's most recent employment entry; when false, exclude the most recent. Omit to include the full work history. Example: true
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_candidates_listList Greenhouse candidates and prospects, optionally filtered by ids, email, tag, custom field option, or created/updated time.Read-onlyList Candidates
List Greenhouse candidates and prospects, optionally filtered by ids, email, tag, custom field option, or created/updated time. Returns candidate profiles (id, names, company, title, emails, phones, tags, custom fields, last activity), newest first, up to per_page (max 500). Use this to find a candidate or fetch one by id via ids. Use greenhouse_applications_list for a candidate's job applications.
Inputs
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
custom_field_option_idinteger- Return only candidates whose custom field value matches this single-select or multi-select option id. Example: 4012345002
emailstring- Return only candidates with this email address on their profile. Matches against any of the candidate's email addresses, case-insensitively. Example: jane.doe@example.com
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: addresses, can_email, company, created_at, custom_fields, email_addresses, first_name, id, last_activity_at, last_name, linked_user_ids, phone_numbers, preferred_name, private, social_media_addresses, tags, time_zone, title, updated_at, website_addresses. Example: id,addresses,can_email
idsstring- Return only candidates with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
last_activity_at_afterstring- Filter by last-activity timestamp on the candidate's applications: return records on or after this value, given as an ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
last_activity_at_beforestring- Filter by last-activity timestamp on the candidate's applications: return records on or before this value, given as an ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
privateboolean- Include private candidates the caller has access to. Defaults to true; set false to exclude private candidates. Example: true
tagstring- Filter by candidate tag name (exact match). Use the greenhouse_candidate_tags_list endpoint to discover available tag names for your organization. Example: referral
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_close_reasons_listList the organization's Greenhouse close reasons for openings.Read-onlyList Close Reasons
List the organization's Greenhouse close reasons for openings. Returns close reasons with id and name. Use this to find a close_reason_id for greenhouse_application_hire or greenhouse_opening_update.
Inputs
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: created_at, id, name, updated_at. Example: id,created_at,name
idsstring- Return only close reasons with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_custom_field_options_listList the options of Greenhouse single-select and multi-select custom fields, filtered by custom field id or name_key.Read-onlyList Custom Field Options
List the options of Greenhouse single-select and multi-select custom fields, filtered by custom field id or name_key. Returns options with id, custom_field_id, name and sort_order. Use this to find option ids for custom_fields values and for school, degree and discipline ids. Use greenhouse_custom_fields_list for the fields.
Inputs
activeboolean- Filter by selectability. true returns options currently usable in the UI; false returns archived (soft-deleted) options. Omit to return both. Example: true
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
custom_field_idsstring- Return only rows for these custom field ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
custom_field_keystring- Filter options to a single custom field by its name_key (e.g. school_name, degree, discipline, cost_center). Use this when you know the field's stable key but not its id — these are the V3 replacement for V1's /schools, /degrees, and /disciplines endpoints. Example: school_name
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: active, created_at, custom_field_id, external_id, id, name, sort_order, updated_at. Example: id,active,created_at
idsstring- Return only custom field options with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_custom_fields_listList Greenhouse custom field definitions, filtered by the resource they attach to (field_type), name, name_key, or active status.Read-onlyList Custom Fields
List Greenhouse custom field definitions, filtered by the resource they attach to (field_type), name, name_key, or active status. Returns custom fields with id, name, name_key, field_type, value_type and required flag. Use this to learn which custom_fields entries a create or update tool accepts. Use greenhouse_custom_field_options_list for select options.
Inputs
activeboolean- Filter by archival status. Defaults to returning both active and archived; set true for live fields only, false for archived only. Example: true
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
field_typestring- Filter by the resource the field attaches to (e.g. job, offer, candidate, application, opening, user_attribute). Replaces the V1 path segment /v1/custom_fields/{field_type}. One of: job, opening, standard, offer, compensation_frequency, candidate, referral_question, application, rejection_question, form, agency_question, user_attribute. Example: jobone of
jobopeningstandardoffercompensation_frequencycandidatereferral_questionapplicationrejection_questionformagency_questionuser_attribute fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: active, api_only, application_type, created_at, default_value, description, expose_in_job_board_api, field_type, id, internal_type, name, name_key, placeholder, private, require_approval, required, sort_order, template_token_string, trigger_new_version, updated_at, updated_by_id, use_for_job_approvals, use_for_offer_approvals, value_type. Example: id,active,api_only
idsstring- Return only custom fields with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
namestring- Filter to fields whose human-readable name exactly matches this value (case-insensitive). Example: Desired Salary
name_keystring- Filter to the field with this name_key (the stable lowercase identifier used when setting values on parent resources). Prefer this over name for integrations — name_key is stable across rename. Example: desired_salary
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_default_interviewers_listList the default interviewers configured on Greenhouse interview kits, filtered by interview kit or user.Read-onlyList Default Interviewers
List the default interviewers configured on Greenhouse interview kits, filtered by interview kit or user. Returns default interviewer rows with interview_kit_id and user_id. Use this to see who normally runs an interview. Use greenhouse_interviewers_list for the panel on a scheduled interview.
Inputs
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: created_at, id, interview_kit_id, updated_at, user_id. Example: id,created_at,interview_kit_id
idsstring- Return only default interviewers with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
interview_kit_idsstring- Return only default-interviewer rows for these interview kit ids. Use this to look up the default interview panel for a specific stage on a job (fetch the kits for the job via greenhouse_interview_kits_list (filtered by job_ids) first). Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
user_idsstring- Return only rows for these user ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
greenhouse_departments_listList the organization's Greenhouse departments, filtered by parent department or external id.Read-onlyList Departments
List the organization's Greenhouse departments, filtered by parent department or external id. Returns departments with id, name, parent_id and external_id. Use this to find a department_id for jobs and filters. Use greenhouse_offices_list for offices.
Inputs
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
external_idstring- Return only the department whose external_id matches this value exactly. Useful for reconciling departments against an HRIS or other external system without an extra name lookup. Example: DEPT-ENG
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: created_at, external_id, id, name, parent_id, updated_at. Example: id,created_at,external_id
idsstring- Return only departments with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
parent_idinteger- Return only departments whose immediate parent is this department id. Omit to list every department regardless of position in the tree. Example: 4012345002
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_email_templates_listList the organization's Greenhouse email templates, filtered by email type or sender type.Read-onlyList Email Templates
List the organization's Greenhouse email templates, filtered by email type or sender type. Returns templates with id, name, email_type, subject, from_type and body. Use this to find an email_template_id for the rejection email in greenhouse_application_reject.
Inputs
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
email_typestring- Filter by notification category (e.g. candidate_email, candidate_rejection, interviewer_invite). Matches the email_type field on the response. Pass none to retrieve uncategorized custom templates. One of: candidate_auto_reply, new_candidate, new_internal_candidate, new_referral, new_agency_submission, candidate_hired, approved_to_start_recruiting, offer_fully_approved, job_closed, candidate_rejection, weekly_status, scorecard_reminder, scorecard_repeat_reminder, interviewer_invite, take_home_test_email, daily_recruiting, stage_transition, scorecard_progress, agency_candidate_status, agency_candidate_stage, candidate_email, team_email, none, extending_offer, non_admin_welcome, job_admin_welcome, site_admin_welcome, prospect_referral_receipt, candidate_referral_receipt, candidate_availability_request, candidate_availability_confirmation, approval_request, eeoc_data_request, event_prospect_auto_reply, job_post_request, gdpr_notification, stage_change_for_followers, rejection_for_followers, calendly_request, gdpr_consent_extension, agency_recruiter_assigned, slack_mentions, candidate_self_schedule_request, sourcing_automation_step, candidate_survey, esignature_request, scheduling_link_confirmation, talent_matching_summary, identity_verification_request, identity_verification_daily_digest, candidate_interview_reminder, identity_verification_persona_request, notetaker_consent_request, new_dream_job_applicant. Example: candidate_auto_replyone of
candidate_auto_replynew_candidatenew_internal_candidatenew_referralnew_agency_submissioncandidate_hiredapproved_to_start_recruitingoffer_fully_approvedjob_closedcandidate_rejectionweekly_statusscorecard_reminderscorecard_repeat_reminderinterviewer_invitetake_home_test_emaildaily_recruitingstage_transitionscorecard_progressagency_candidate_statusagency_candidate_stagecandidate_emailteam_emailnoneextending_offernon_admin_welcomejob_admin_welcomesite_admin_welcomeprospect_referral_receiptcandidate_referral_receiptcandidate_availability_requestcandidate_availability_confirmationapproval_requesteeoc_data_requestevent_prospect_auto_replyjob_post_requestgdpr_notificationstage_change_for_followersrejection_for_followerscalendly_requestgdpr_consent_extensionagency_recruiter_assignedslack_mentionscandidate_self_schedule_requestsourcing_automation_stepcandidate_surveyesignature_requestscheduling_link_confirmationtalent_matching_summaryidentity_verification_requestidentity_verification_daily_digestcandidate_interview_reminderidentity_verification_persona_requestnotetaker_consent_requestnew_dream_job_applicant fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: body, cc_coordinator, cc_recruiter, created_at, default, description, email_type, from_type, html_body, id, name, office_anywhere, recipients, subject, updated_at, user_id. Example: id,body,cc_coordinator
from_typestring- Filter by how the sender's address is resolved at send time. See the from_type field on the response for the meaning of each value. One of: user_email, organization_email, my_email_address, inviter, organizer, not_applicable. Example: user_emailone of
user_emailorganization_emailmy_email_addressinviterorganizernot_applicable idsstring- Return only email templates with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_interview_kits_listList Greenhouse interview kits (the guide and scorecard for a job interview), filtered by job interview.Read-onlyList Interview Kits
List Greenhouse interview kits (the guide and scorecard for a job interview), filtered by job interview. Returns interview kits with id, job_id, job_interview_id and exercises. Use this to find an interview_kit_id for greenhouse_scorecard_create. Use greenhouse_scorecard_questions_list for a kit's questions.
Inputs
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: anonymize_candidate, anonymize_resumes, created_at, exercises, id, job_id, job_interview_id, updated_at. Example: id,anonymize_candidate,anonymize_resumes
idsstring- Return only interview kits with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
job_idsstring- Return only interview kits belonging to these job (hiring plan) ids. Each interview kit is configured on a single job's interview plan. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
job_interview_idsstring- Return only interview kits attached to these job_interview (interview slot) ids. Each kit defines the instructions and scorecard for a specific interview slot on the job's interview plan. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_interviewers_listList the panel members on scheduled Greenhouse interviews, filtered by interview, scorecard, user, or RSVP status.Read-onlyList Interviewers
List the panel members on scheduled Greenhouse interviews, filtered by interview, scorecard, user, or RSVP status. Returns interviewer rows with interview_id, user_id, scorecard_id and response_status. Use this to see who is on an interview panel. Use greenhouse_default_interviewers_list for the default panel on an interview kit.
Inputs
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: created_at, email, id, interview_id, response_status, scorecard_id, updated_at, user_id. Example: id,created_at,email
idsstring- Return only interviewers with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
interview_idsstring- Return only rows for these interview ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
response_statusstring- Filter by the panel member's calendar RSVP. needs_action is the default until the invitee responds; accepted, tentative, and declined mirror the calendar response. One of: needs_action, declined, tentative, accepted. Example: needs_actionone of
needs_actiondeclinedtentativeaccepted scorecard_idsstring- Return only rows for these scorecard ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
user_idsstring- Return only interviewer rows for these Greenhouse user ids (the users serving on the panel). Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
greenhouse_interviews_listList scheduled Greenhouse interviews, filtered by application, job, interview slot, organizer, status, external calendar event, or start/end time.Read-onlyList Interviews
List scheduled Greenhouse interviews, filtered by application, job, interview slot, organizer, status, external calendar event, or start/end time. Returns interviews with id, application_id, job_interview_id, starts_at, ends_at, location, organizer, video link and status. Use this to see a candidate's interview schedule. Use greenhouse_interviewers_list for the panel on each interview.
Inputs
all_day_end_on_afterstring- Filter all-day interviews by end date (YYYY-MM-DD): return records on or after this value, given as an ISO 8601 date (YYYY-MM-DD). Example: 2026-01-01
all_day_end_on_beforestring- Filter all-day interviews by end date (YYYY-MM-DD): return records on or before this value, given as an ISO 8601 date (YYYY-MM-DD). Example: 2026-01-01
all_day_start_on_afterstring- Filter all-day interviews by start date (YYYY-MM-DD): return records on or after this value, given as an ISO 8601 date (YYYY-MM-DD). Example: 2026-01-01
all_day_start_on_beforestring- Filter all-day interviews by start date (YYYY-MM-DD): return records on or before this value, given as an ISO 8601 date (YYYY-MM-DD). Example: 2026-01-01
application_idsstring- Return only rows for these application ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
ends_at_afterstring- Filter by interview end time: return records on or after this value, given as an ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
ends_at_beforestring- Filter by interview end time: return records on or before this value, given as an ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
external_event_idstring- Return the interview tied to this external calendar event id (e.g. a Google Calendar or Outlook event id). Useful for round-tripping from a calendar webhook back to the Greenhouse interview. Example: 7c9e6679-calendar-event
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: all_day_end_on, all_day_start_on, application_id, availability_received_at, created_at, ends_at, external_event_id, id, job_id, job_interview_id, location, organizer_id, scheduled_at, starts_at, status, updated_at, video_conferencing_url. Example: id,all_day_end_on,all_day_start_on
idsstring- Return only interviews with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
job_idsstring- Return only interviews scheduled for applications on these job (hiring plan) ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
job_interview_idsstring- Return only interviews scheduled against these job_interview ids. A job_interview is the stage's interview configuration (template) on an interview kit, not the scheduled interview itself — fetch ids via greenhouse_job_interviews_list. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
organizer_idsstring- Return only interviews organized by these Greenhouse user ids. The organizer is the calendar role responsible for scheduling the interview, not an interviewer on the panel. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
starts_at_afterstring- Filter by interview start time: return records on or after this value, given as an ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
starts_at_beforestring- Filter by interview start time: return records on or before this value, given as an ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
statusstring- Filter by interview lifecycle status. scheduled is on the calendar; awaiting_feedback is past with scorecards outstanding; complete is past with all scorecards in; to_be_scheduled is the pre-schedule placeholder. Take-home test interviews use to_be_sent, sent, and received. One of: to_be_scheduled, scheduled, awaiting_feedback, complete, skipped, collect_feedback, to_be_sent, sent, received. Example: to_be_scheduledone of
to_be_scheduledscheduledawaiting_feedbackcompleteskippedcollect_feedbackto_be_sentsentreceived updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_job_boards_listList the organization's Greenhouse job boards (career sites), filtered by live or internal status.Read-onlyList Job Boards
List the organization's Greenhouse job boards (career sites), filtered by live or internal status. Returns job boards with id, company_name, url_token, status and internal flag. Use this to find a job_board_id for greenhouse_job_post_create. Use greenhouse_job_posts_list for the posts on a board.
Inputs
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: about, company_name, conclusion, created_at, id, internal, introduction, status, updated_at, url_token. Example: id,about,company_name
idsstring- Return only job boards with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
internalboolean- Restrict results by audience. Pass true to return only the organization's internal job board, or false to return external (public-facing) boards. Omit to return both. Example: true
liveboolean- Restrict results by publication state. Pass true to return only boards currently published at https://job-boards.greenhouse.io/{url_token}, or false to return draft (unpublished) boards. Omit to return both. Example: true
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_job_candidate_attributes_listList the candidate attributes (traits rated on scorecards, such as Leadership or JavaScript) configured on Greenhouse jobs, filtered by job or active status.Read-onlyList Job Candidate Attributes
List the candidate attributes (traits rated on scorecards, such as Leadership or JavaScript) configured on Greenhouse jobs, filtered by job or active status. Returns attributes with id, job_id, candidate_attribute_type_id, name, active and sort_order. Use this to find job_candidate_attribute_id values for the candidate_attributes ratings in greenhouse_scorecard_create. Use greenhouse_scorecard_questions_list for scorecard questions.
Inputs
activeboolean- When true, return only attributes still in use on the job; when false, only archived ones. Omit to include both. Example: true
candidate_attribute_type_idsstring- Return only rows for these candidate attribute type ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: active, candidate_attribute_type_id, created_at, id, job_id, name, sort_order, updated_at. Example: id,active,candidate_attribute_type_id
idsstring- Return only job candidate attributes with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
job_idsstring- Return only job candidate attributes registered on these job (hiring plan) ids. A job candidate attribute is a scoring rubric item attached to a single job, so this filters to the attributes belonging to those jobs. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_job_hiring_managers_listList the hiring manager assignments on Greenhouse jobs, filtered by job or user.Read-onlyList Job Hiring Managers
List the hiring manager assignments on Greenhouse jobs, filtered by job or user. Returns assignment rows with id, job_id and user_id. Use this to see who manages hiring on a job. Use greenhouse_job_owners_list for recruiters, coordinators and sourcers.
Inputs
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: created_at, id, job_id, updated_at, user_id. Example: id,created_at,job_id
idsstring- Return only job hiring managers with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
job_idsstring- Return only job hiring manager rows for these job (hiring plan) ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
user_idsstring- Return only job hiring manager rows for these Greenhouse user ids (the users serving in the hiring-manager role on a job). Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
greenhouse_job_interview_stages_listList the interview stage definitions on Greenhouse jobs' interview plans, filtered by job or active status.Read-onlyList Job Interview Stages
List the interview stage definitions on Greenhouse jobs' interview plans, filtered by job or active status. Returns stages with id, job_id, name and sort_order. Use this to find a to_stage_id for greenhouse_application_move. Use greenhouse_application_stages_list for an application's actual stage history.
Inputs
activeboolean- Filter by whether the stage is on the job's current interview plan. Omit to return both active and inactive stages; pass true to restrict to the current plan or false to return only retired stages. Example: true
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: active, created_at, id, job_id, name, sort_order, updated_at. Example: id,active,created_at
idsstring- Return only job interview stages with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
job_idsstring- Return only interview stages belonging to these job (hiring plan) ids. Each interview stage is scoped to a single job. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_job_interviews_listList the interview slots configured on Greenhouse jobs' interview plans, filtered by job, interview stage, or scheduling type.Read-onlyList Job Interviews
List the interview slots configured on Greenhouse jobs' interview plans, filtered by job, interview stage, or scheduling type. Returns job interviews with id, job_id, job_interview_stage_id, name, duration and scheduling_type. Use this to find a job_interview_id for greenhouse_interview_create. Use greenhouse_interviews_list for interviews actually scheduled.
Inputs
activeboolean- Filter by whether the slot is on the job's current interview plan. Omit to return both active and inactive slots; pass true to restrict to the current plan or false to return only retired slots. Example: true
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: active, created_at, duration, id, instructions, job_id, job_interview_stage_id, name, require_scorecard, scheduling_type, sort_order, summary, updated_at. Example: id,active,created_at
idsstring- Return only job interviews with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
job_idsstring- Return only interview slots belonging to these job (hiring plan) ids. Each slot is configured on a single job's interview plan. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
job_interview_stage_idsstring- Return only rows for these job interview stage ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
scheduling_typestring- Filter by how the slot is fulfilled. needs_scheduling for calendared interviews, take_home_test for asynchronous tests, offer for the offer step, none for feedback-only slots. One of: none, needs_scheduling, take_home_test, offer. Example: noneone of
noneneeds_schedulingtake_home_testoffer updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_job_notes_listList internal notes on Greenhouse jobs, filtered by job, author, or visibility.Read-onlyList Job Notes
List internal notes on Greenhouse jobs, filtered by job, author, or visibility. Returns job notes with id, job_id, user_id, body and visibility. Use this for notes about a job. Use greenhouse_notes_list for notes about candidates.
Inputs
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: body, created_at, id, job_id, updated_at, user_id, visibility. Example: id,body,created_at
idsstring- Return only job notes with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
job_idsstring- Return only notes attached to these job (hiring plan) ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
user_idsstring- Return only notes authored by these Greenhouse user ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
visibilitystring- Filter by note visibility. admin_only_visible returns notes visible to Job Admins on the job; privately_visible returns notes restricted to users with the "view and create private job notes" permission. One of: admin_only_visible, privately_visible. Example: admin_only_visibleone of
admin_only_visibleprivately_visible
greenhouse_job_owners_listList recruiter, coordinator and sourcer assignments on Greenhouse jobs, filtered by job, user, or role type.Read-onlyList Job Owners
List recruiter, coordinator and sourcer assignments on Greenhouse jobs, filtered by job, user, or role type. Returns assignment rows with id, job_id, user_id, type and responsible flag. Use this to see a job's recruiting team. Use greenhouse_job_hiring_managers_list for hiring managers.
Inputs
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: created_at, id, job_id, responsible, type, updated_at, user_id. Example: id,created_at,job_id
idsstring- Return only job owners with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
job_idsstring- Return only job owner rows for these job (hiring plan) ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
typestring- Restrict to hiring-team assignments of this role. One of sourcer, recruiter, or coordinator. Hiring managers are not returned here — list them via greenhouse_job_hiring_managers_list. Example: sourcerone of
sourcerrecruitercoordinator updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
user_idsstring- Return only job owner rows for these Greenhouse user ids (the users assigned as sourcer, recruiter, or coordinator on a job). Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
greenhouse_job_post_locations_listList the locations attached to Greenhouse job posts, filtered by job post, office, custom location, or location text.Read-onlyList Job Post Locations
List the locations attached to Greenhouse job posts, filtered by job post, office, custom location, or location text. Returns location rows with id, job_post_id, type, office_id, custom_location_id and plain_text_location. Use this to see where a job post is advertised. Use greenhouse_offices_list for the organization's offices.
Inputs
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
custom_location_idsstring- Return only job post locations linked to one of these job-board-scoped custom location ids. Custom locations are reusable, admin-defined location labels configured per job board (see greenhouse_job_boards_list), distinct from free-text strings and Greenhouse offices. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: created_at, custom_location_id, id, job_post_id, office_id, plain_text_location, type, updated_at. Example: id,created_at,custom_location_id
idsstring- Return only job post locations with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
job_post_idsstring- Return only rows for these job post ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
office_idsstring- Return only rows for these office ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
plain_text_locationstring- Filter by exact match on the free-text location string (e.g. New York, NY). Only matches rows whose type is free_text; rows backed by an office or custom location are excluded. Example: New York, NY
typestring- Filter by how the location is sourced. free_text returns admin-typed strings, office returns rows linked to an organization office, and custom_list returns rows linked to a board-scoped custom location. One of: free_text, office, custom_list. Example: free_textone of
free_textofficecustom_list updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_job_posts_listList Greenhouse job posts (the listings candidates apply through), filtered by job, job board, live, active, internal or featured status.Read-onlyList Job Posts
List Greenhouse job posts (the listings candidates apply through), filtered by job, job board, live, active, internal or featured status. Returns job posts with id, job_id, job_board_id, title, content, public_url, and live, active and internal flags. Use this to read or audit job listings. Use greenhouse_jobs_list for the underlying requisitions.
Inputs
activeboolean- Filter by whether the post is active (not deleted). Defaults to true; pass false to retrieve soft-deleted posts. Example: true
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
featuredboolean- Filter by featured status on the organization's internal job board. Only internal posts can be featured. Example: true
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: active, content, created_at, demographic_question_set_id, featured, first_published_at, id, internal, internal_content, job_board_id, job_id, language, live, public_url, questions, title, updated_at. Example: id,active,content
idsstring- Return only job posts with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
internalboolean- Filter by post visibility. true returns posts on internal job boards (visible to employees); false returns external posts on public job boards. Omit to return both. Example: true
job_board_idsstring- Return only rows for these job board ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
job_idsstring- Return only posts belonging to these job (hiring plan) ids. Each job post is published against a single job. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
liveboolean- When true, return only posts that are published and whose job board is also live — equivalent to posts whose public_url is reachable. When false, return posts that are not published or whose board is not live. Example: true
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_jobs_listList Greenhouse jobs (requisitions), filtered by status, department, office, requisition id, or opened, closed, created or updated time.Read-onlyList Jobs
List Greenhouse jobs (requisitions), filtered by status, department, office, requisition id, or opened, closed, created or updated time. Returns jobs with id, name, requisition_id, status, department, offices, notes and custom fields, newest first. Use this to find a job_id. Use greenhouse_job_posts_list for the public job listings attached to jobs.
Inputs
closed_at_afterstring- Filter by the timestamp the job most recently transitioned to closed: return records on or after this value, given as an ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
closed_at_beforestring- Filter by the timestamp the job most recently transitioned to closed: return records on or before this value, given as an ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
confidentialboolean- Filter by the confidential flag. Set false to exclude legacy confidential jobs; omit to return both. Example: true
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
custom_field_option_idinteger- Return only jobs that have this custom_field_option id selected on any of their single- or multi-select job custom fields. Example: 4012345002
department_idinteger- Return only jobs assigned to this department. Example: 4012345002
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: closed_at, confidential, copied_from_id, created_at, custom_fields, department_id, id, is_template, name, notes, office_ids, opened_at, requisition_id, status, updated_at. Example: id,closed_at,confidential
idsstring- Return only jobs with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
office_idinteger- Return only jobs assigned to this office. A job that spans multiple offices matches when any one of them is the supplied id. Example: 4012345002
opened_at_afterstring- Filter by the timestamp the job first transitioned to open: return records on or after this value, given as an ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
opened_at_beforestring- Filter by the timestamp the job first transitioned to open: return records on or before this value, given as an ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
requisition_idstring- Return only jobs whose partner-supplied requisition_id matches exactly. Not unique across the organization — multiple jobs may share a requisition_id. Example: REQ-1042
statusstring- Filter by job lifecycle status. One of: open, draft, closed. Example: openone of
opendraftclosed updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_notes_listList notes on Greenhouse candidates and applications, filtered by candidate, application, author, note type, or visibility.Read-onlyList Notes
List notes on Greenhouse candidates and applications, filtered by candidate, application, author, note type, or visibility. Returns notes with id, candidate_id, application_id, user_id, body, subject, type and visibility. Use this to read candidate notes and logged activity. Use greenhouse_job_notes_list for notes on a job.
Inputs
application_idsstring- Return only rows for these application ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
candidate_idsstring- Return only rows for these candidate ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: application_id, body, body_with_tags, candidate_id, created_at, email_attachment_file_names, email_cc, email_from, email_to, id, import_hash, subject, type, updated_at, user_id, visibility. Example: id,application_id,body
idsstring- Return only notes with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
typestring- Filter by note type, as a comma separated list. Matches the type field on the response (for example NOTE, EMAIL, ACTIVITY, INTERVIEW, FEEDBACK). Notes of any listed type are returned, so a single request can replace one per type. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
user_idsstring- Return only notes authored by these Greenhouse user ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
visibilitystring- Filter by note visibility. publicly_visible is visible to anyone with access to the candidate, privately_visible requires the "see private notes" permission, and admin_only_visible is restricted to Job Admins and Site Admins. One of: admin_only_visible, privately_visible, publicly_visible. Example: admin_only_visibleone of
admin_only_visibleprivately_visiblepublicly_visible
greenhouse_offers_listList Greenhouse offers, filtered by application, candidate, job, opening, status, custom field option, or start, sent or resolved dates.Read-onlyList Offers
List Greenhouse offers, filtered by application, candidate, job, opening, status, custom field option, or start, sent or resolved dates. Returns offers with id, version, application_id, job_id, candidate_id, status, starts_on, sent_on, resolved_at and custom fields such as compensation. Use this to track offers. Set current_only to true to get only each application's latest offer version.
Inputs
application_idsstring- Return only rows for these application ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
candidate_idsstring- Return only rows for these candidate ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
current_onlyboolean- When true, returns only the latest version of each offer per application — superseded prior versions are excluded. Combine with application_ids or candidate_ids to retrieve the current offer for a specific application or candidate. Example: true
custom_field_option_idinteger- Return only offers whose offer custom field value selects this single-select or multi-select option id. Example: 4012345002
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: application_id, candidate_id, created_at, custom_fields, id, job_id, opening_id, resolved_at, sent_on, starts_on, status, updated_at, version. Example: id,application_id,candidate_id
idsstring- Return only offers with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
job_idsstring- Return only offers extended on applications attached to these job (hiring plan) ids. Matches the application's current job at the time the offer was generated. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
opening_idsstring- Return only offers tied to these opening (headcount slot) ids. An offer is made against a specific opening on the job — use greenhouse_openings_list (filtered by job_ids) to look ids up. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
resolved_at_afterstring- Filter by the timestamp the offer was resolved (Accepted or Rejected): return records on or after this value, given as an ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
resolved_at_beforestring- Filter by the timestamp the offer was resolved (Accepted or Rejected): return records on or before this value, given as an ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
sent_on_afterstring- Filter by the date the offer was sent to the candidate: return records on or after this value, given as an ISO 8601 date (YYYY-MM-DD). Example: 2026-01-01
sent_on_beforestring- Filter by the date the offer was sent to the candidate: return records on or before this value, given as an ISO 8601 date (YYYY-MM-DD). Example: 2026-01-01
starts_on_afterstring- Filter by the candidate's proposed start date on the offer: return records on or after this value, given as an ISO 8601 date (YYYY-MM-DD). Example: 2026-01-01
starts_on_beforestring- Filter by the candidate's proposed start date on the offer: return records on or before this value, given as an ISO 8601 date (YYYY-MM-DD). Example: 2026-01-01
statusstring- Filter by offer status. Case-insensitive match against one of Created, Accepted, Rejected, or Deprecated (the status enum on the response). One of: Created, Accepted, Rejected, Deprecated. Example: Createdone of
CreatedAcceptedRejectedDeprecated updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_offices_listList the organization's Greenhouse offices, filtered by parent office or external id.Read-onlyList Offices
List the organization's Greenhouse offices, filtered by parent office or external id. Returns offices with id, name, location, parent_id and external_id. Use this to find an office_id for jobs and filters. Use greenhouse_departments_list for departments.
Inputs
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
external_idstring- Return only the office whose external_id matches this value. Useful for HRIS-driven reconciliation where partners track offices by their external identifier rather than by Greenhouse id. Example: DEPT-ENG
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: created_at, external_id, id, location, name, parent_id, primary_in_house_contact_user_id, updated_at. Example: id,created_at,external_id
idsstring- Return only offices with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
parent_idinteger- Return only offices whose parent is this office id. Use to traverse the office tree one level at a time. Example: 4012345002
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_openings_listList Greenhouse job openings (headcount slots), filtered by job, open state, close reason, opening id, or opened/closed time.Read-onlyList Openings
List Greenhouse job openings (headcount slots), filtered by job, open state, close reason, opening id, or opened/closed time. Returns openings with id, job_id, opening_id, open flag, opened_at, closed_at, close_reason_id, target_start_on and the application_id that filled it. Use this to find an opening_id for greenhouse_application_hire or to track headcount. Use greenhouse_jobs_list for the jobs themselves.
Inputs
application_idsstring- Return only openings currently filled by these application ids. An opening's application_id is set when a candidate's application is moved onto the opening; null while the opening is still unfilled. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
close_reason_idsstring- Return only openings closed with one of these close_reason ids (e.g. Hire - New Headcount, On Hold, Requisition Cancelled). Resolve ids via greenhouse_close_reasons_list. Open openings have no close_reason_id and will not match. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
closed_at_afterstring- Filter by the timestamp the opening was closed: return records on or after this value, given as an ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
closed_at_beforestring- Filter by the timestamp the opening was closed: return records on or before this value, given as an ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
custom_field_option_idinteger- Return only openings that have this custom_field_option id selected on any of their single- or multi-select opening custom fields. Example: 4012345002
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: application_id, close_reason_id, closed_at, created_at, custom_fields, id, job_id, open, opened_at, opening_id, sort_order, target_start_on, updated_at. Example: id,application_id,close_reason_id
idsstring- Return only openings with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
job_idsstring- Return only openings on these job (hiring plan) ids. Openings represent headcount on a job, so this filters to the openings belonging to those jobs. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
openboolean- When true, return only openings that are still available to be filled; when false, only openings that have been closed. Omit to return both. Example: true
opened_at_afterstring- Filter by the timestamp the opening transitioned to open: return records on or after this value, given as an ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
opened_at_beforestring- Filter by the timestamp the opening transitioned to open: return records on or before this value, given as an ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
opening_idstring- Return only openings whose partner-supplied opening_id matches exactly. Not unique across the organization — multiple openings may share an opening_id. Example: POS-2231
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_prospect_details_listList prospect details on Greenhouse prospect applications, filtered by prospect pool, pool stage, owner, department or office.Read-onlyList Prospect Details
List prospect details on Greenhouse prospect applications, filtered by prospect pool, pool stage, owner, department or office. Returns rows with application_id, prospect pool and stage ids, prospect owner and prospective departments and offices. Use this to work a sourcing pipeline. Use greenhouse_applications_list with prospect true for the prospect applications themselves.
Inputs
application_idsstring- Return only rows for these application ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
department_idsstring- Return only prospect details whose underlying application is being considered for one of these department ids (matches the prospective department, not the application's hiring plan department). Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: application_id, created_at, department_id, id, office_id, pool_id, pool_stage_id, prospect_owner_id, updated_at. Example: id,application_id,created_at
idsstring- Return only prospect details with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
office_idsstring- Return only prospect details whose underlying application is being considered for one of these office ids (matches the prospective department's office, not the application's hiring plan office). Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
pool_idsstring- Return only rows for these pool ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
pool_stage_idsstring- Return only prospect details whose current prospect pool stage matches one of these stage ids. Stage ids are unique across pools, so this can be used without also passing pool_ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
prospect_owner_idsstring- Return only prospect details owned by these Greenhouse user ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_prospect_pool_stages_listList the stages inside Greenhouse prospect pools, filtered by prospect pool.Read-onlyList Prospect Pool Stages
List the stages inside Greenhouse prospect pools, filtered by prospect pool. Returns stages with id, prospect_pool_id, name and sort_order. Use this to find a prospect_pool_stage_id for prospect applications. Use greenhouse_prospect_pools_list for the pools.
Inputs
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: created_at, id, name, prospect_pool_id, sort_order, updated_at. Example: id,created_at,name
idsstring- Return only prospect pool stages with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
prospect_pool_idsstring- Return only rows for these prospect pool ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_prospect_pools_listList the organization's Greenhouse prospect pools, filtered by active status, department or office.Read-onlyList Prospect Pools
List the organization's Greenhouse prospect pools, filtered by active status, department or office. Returns prospect pools with id, name and active flag. Use this to find a prospect_pool_id. Use greenhouse_prospect_pool_stages_list for the stages inside a pool.
Inputs
activeboolean- Filter by pool status. true returns active pools, false returns inactive (retained) pools. Example: true
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
department_idsstring- Return only rows for these department ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: active, created_at, department_ids, description, id, job_ids, name, office_ids, updated_at. Example: id,active,created_at
idsstring- Return only prospect pools with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
job_idsstring- Return only prospect pools restricted to these job (hiring plan) ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
office_idsstring- Return only rows for these office ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_referrers_listList the referrer records in Greenhouse (the people credited with referrals).Read-onlyList Referrers
List the referrer records in Greenhouse (the people credited with referrals). Returns referrers with id, name and user_id. Use this to find a referrer_id for applications. Use greenhouse_sources_list for sources.
Inputs
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: created_at, id, name, updated_at, user_id. Example: id,created_at,name
idsstring- Return only referrers with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
user_idsstring- Return only referrer records made by these Greenhouse user ids. The user here is the Greenhouse user who made the referral; the resulting Referrer record is a separate entity (with its own id) attributed to that user. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
greenhouse_rejection_details_listList rejection details recorded on rejected Greenhouse applications, filtered by application, rejection reason, or custom field option.Read-onlyList Rejection Details
List rejection details recorded on rejected Greenhouse applications, filtered by application, rejection reason, or custom field option. Returns rows with application_id, rejection_reason_id, rejected_by_id, rejected_at and rejection question answers. Use this to analyze why candidates were rejected. Use greenhouse_rejection_detail_update to correct a record.
Inputs
application_idsstring- Return only rows for these application ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
custom_field_option_idinteger- Return only rejection details whose question_custom_fields include the given custom field option. Use with single-select or multi-select rejection question custom fields to find every rejection tagged with a particular option. Example: 4012345002
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: application_id, created_at, id, question_custom_fields, rejected_at, rejected_by_id, rejection_note_id, rejection_reason_id, updated_at. Example: id,application_id,created_at
idsstring- Return only rejection details with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
rejection_reason_idsstring- Return only rows for these rejection reason ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_rejection_reason_getGet one Greenhouse rejection reason by id.Read-onlyGet Rejection Reason
Get one Greenhouse rejection reason by id. Returns the rejection reason's id, name and type. Use this when you already have a rejection_reason_id. Use greenhouse_rejection_reasons_list to browse all reasons.
Inputs
rejection_reason_idintegerrequired- Id of the rejection reason to get. Get it from greenhouse_rejection_reasons_list. Example: 4012345002
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: . Example: id
greenhouse_rejection_reasons_listList the organization's Greenhouse rejection reasons, optionally including Greenhouse's built-in defaults.Read-onlyList Rejection Reasons
List the organization's Greenhouse rejection reasons, optionally including Greenhouse's built-in defaults. Returns rejection reasons with id, name and type. Use this to find a rejection_reason_id for greenhouse_application_reject. Use greenhouse_rejection_reason_get to fetch one by id.
Inputs
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: created_at, id, name, type, updated_at. Example: id,created_at,name
idsstring- Return only rejection reasons with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
include_defaultsboolean- Include Greenhouse's built-in default rejection reasons alongside the organization's customized list. Defaults to false, in which case only reasons created by the organization are returned. Set to true to also surface the standard set (e.g. Not a cultural fit, Lacking skill(s)/qualification(s), Wasn't interested, Didn't like offer) that every Greenhouse account starts with. Example: true
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_scorecard_question_answers_listList the answers given to Greenhouse scorecard questions, filtered by scorecard or question.Read-onlyList Scorecard Question Answers
List the answers given to Greenhouse scorecard questions, filtered by scorecard or question. Returns answer rows with scorecard_id, scorecard_question_id and the answer value. Use this to read detailed interview feedback. Use greenhouse_scorecards_list for the overall rating and notes.
Inputs
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: answer, answer_with_tags, boolean_value, created_at, id, scorecard_id, scorecard_question_id, updated_at, value. Example: id,answer,answer_with_tags
idsstring- Return only scorecard question answers with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
scorecard_idsstring- Return only rows for these scorecard ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
scorecard_question_idsstring- Return only rows for these scorecard question ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_scorecard_question_options_listList the answer options of single-select and multi-select Greenhouse scorecard questions, filtered by question or active status.Read-onlyList Scorecard Question Options
List the answer options of single-select and multi-select Greenhouse scorecard questions, filtered by question or active status. Returns options with id, scorecard_question_id, name, sort_order and active flag. Use this to find option ids for question_answers in greenhouse_scorecard_create. Use greenhouse_scorecard_questions_list for the questions.
Inputs
activeboolean- Filter by whether the option is still selectable on its parent question. Defaults to returning both active and removed options; set true for live options only, false for removed only. Example: true
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: active, created_at, id, name, scorecard_question_id, sort_order, updated_at. Example: id,active,created_at
idsstring- Return only scorecard question options with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
scorecard_question_idsstring- Return only rows for these scorecard question ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_scorecard_questions_listList the questions on Greenhouse interview kit scorecards, filtered by interview kit or active status.Read-onlyList Scorecard Questions
List the questions on Greenhouse interview kit scorecards, filtered by interview kit or active status. Returns questions with id, interview_kit_id, question text, answer_type and required flag. Use this to find scorecard_question_id values for greenhouse_scorecard_create. Use greenhouse_scorecard_question_answers_list for submitted answers.
Inputs
activeboolean- Filter by whether the question is still in use on its interview kit. Defaults to returning both active and removed questions; set true for live questions only, false for removed only. Example: true
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: active, answer_type, created_at, id, interview_kit_id, question, required, sort_order, updated_at. Example: id,active,answer_type
idsstring- Return only scorecard questions with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
interview_kit_idsstring- Return only scorecard questions attached to these interview kit ids. An interview kit is a stage's interview definition on a job, and its scorecard questions make up the rubric interviewers score against; look up kits for a job via greenhouse_interview_kits_list (filtered by job_ids). Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_scorecards_listList Greenhouse interview scorecards, filtered by application, interview kit, interviewer, submitter, status, or interview or submission time.Read-onlyList Scorecards
List Greenhouse interview scorecards, filtered by application, interview kit, interviewer, submitter, status, or interview or submission time. Returns scorecards with id, application_id, interviewer, candidate_rating, notes, status and submitted_at. Use this to read interview feedback. Use greenhouse_scorecard_question_answers_list for the answers to each scorecard question.
Inputs
application_idsstring- Return only rows for these application ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: application_id, candidate_rating, created_at, id, interview_kit_id, interviewed_at, interviewer_id, notes, notes_with_tags, private_notes, private_notes_with_tags, public_notes, public_notes_with_tags, status, submitted_at, submitter_id, updated_at. Example: id,application_id,candidate_rating
idsstring- Return only scorecards with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
interview_kit_idsstring- Return only rows for these interview kit ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
interviewed_at_afterstring- Filter by interview timestamp on the scorecard: return records on or after this value, given as an ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
interviewed_at_beforestring- Filter by interview timestamp on the scorecard: return records on or before this value, given as an ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
interviewer_idsstring- Return only scorecards assigned to these interviewer user ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
statusstring- Filter by scorecard lifecycle status. draft returns in-progress scorecards; complete returns submitted scorecards. One of: draft, complete. Example: draftone of
draftcomplete submitted_at_afterstring- Filter by submission timestamp: return records on or after this value, given as an ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
submitted_at_beforestring- Filter by submission timestamp: return records on or before this value, given as an ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
submitter_idsstring- Return only rows for these submitter ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_sources_listList the candidate sources configured in Greenhouse (job boards, referrals, agencies and others).Read-onlyList Sources
List the candidate sources configured in Greenhouse (job boards, referrals, agencies and others). Returns sources with id, name and type. Use this to find a source_id for applications. Use greenhouse_referrers_list for individual referrers.
Inputs
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: created_at, id, name, type, updated_at. Example: id,created_at,name
idsstring- Return only sources with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_tracking_links_listList Greenhouse source tracking links, filtered by token, job post, job board, source, referrer, or related post.Read-onlyList Tracking Links
List Greenhouse source tracking links, filtered by token, job post, job board, source, referrer, or related post. Returns tracking links with id, token, source_id, referrer_id, job_id, job_post_id and job_board_id. Use this to resolve a gh_src token to its source. Use greenhouse_sources_list for the sources themselves.
Inputs
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: created_at, id, job_board_id, job_id, job_post_id, referrer_id, related_post_id, related_post_type, source_id, token, updated_at. Example: id,created_at,job_board_id
idsstring- Return only tracking links with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
job_board_idsstring- Return only rows for these job board ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
job_idsstring- Return only tracking links attached to these job (hiring plan) ids. A tracking link points at the careers page or a specific job post for these jobs. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
job_post_idsstring- Return only rows for these job post ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
referrer_idsstring- Return only tracking links attributed to these referrer ids. A referrer is the Greenhouse Referrer record (see greenhouse_referrers_list) — not a user id. Look up the referrer id for a user via that endpoint first. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
related_post_idsstring- Return only tracking links generated for these related_post ids — the external post the link was distributed on (e.g. a tweet, LinkedIn post, or ProgrammaticSourcing::AppcastJobAd). Pair with related_post_type to disambiguate, since related_post is polymorphic. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
related_post_typestring- Filter by the polymorphic related_post class name (e.g. Application, ProgrammaticSourcing::AppcastJobAd). Combine with related_post_ids to narrow to a specific record of that type. Example: JobPost
source_idsstring- Return only rows for these source ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
tokenstring- Return the tracking link with this exact short-URL token (the gh_src value). Useful for resolving an incoming application's gh_src back to the link that generated it. Example: abc123
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_user_roles_listList the job-level and organization-level user roles defined in Greenhouse.Read-onlyList User Roles
List the job-level and organization-level user roles defined in Greenhouse. Returns roles with id, name and role_type. Use this to interpret user permission data. Use greenhouse_users_list for the users themselves.
Inputs
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: created_at, id, name, role_type, updated_at. Example: id,created_at,name
idsstring- Return only user roles with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_users_listList Greenhouse users (recruiters, hiring managers, interviewers and admins), filtered by email, employee id, department, office, or activation state.Read-onlyList Users
List Greenhouse users (recruiters, hiring managers, interviewers and admins), filtered by email, employee id, department, office, or activation state. Returns users with id, name, primary email, employee_id, site admin flag, department and office ids. Use this to find a user_id for hiring team, interview, note or scorecard tools.
Inputs
agency_idsstring- Return only users belonging to one of these recruiting Agency ids. Greenhouse stores agencies as separate records from users — Harvest lists agencies at GET /v3/agencies, which has no tool here. Users without an agency association will not match. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
created_atstring- Filter by when the record was created, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
custom_field_option_idinteger- Return only users whose user-attribute custom field value selects this custom_field_option id. Example: 4012345002
deactivatedboolean- Filter by activation state. true returns only deactivated users; false returns only active users; omit to return both. Example: true
department_idsstring- Return only rows for these department ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
employee_idsstring- Return only users whose employee_id is in this list. Useful for HRIS-driven sync where the partner only has external employee identifiers. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
external_department_idstring- Return only users assigned to the department whose external_id matches this value. Use this when the partner only has external department identifiers; prefer department_id (via the parent filter) when the Greenhouse id is already known. Example: DEPT-ENG
external_office_idstring- Return only users assigned to the office whose external_id matches this value. Use this when the partner only has external office identifiers; prefer office_id (via the parent filter) when the Greenhouse id is already known. Example: OFF-NYC
fieldsstring- Comma-separated list of fields to include in each result, to keep responses small. Allowed values: agency_id, created_at, custom_fields, deactivated, department_ids, emails, employee_id, first_name, id, interviewer_tags, job_title, last_name, linked_candidate_ids, name, office_ids, primary_email, site_admin, updated_at. Example: id,agency_id,created_at
idsstring- Return only users with these ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
interviewer_tag_idsstring- Return only users who have one of these interviewer Tag ids assigned. Interviewer tags are used to group users into interview panels — resolve ids via the tags endpoint. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
linked_candidate_idsstring- Return only users who are linked to one of these candidate ids via a person link (used when a candidate also exists as a Greenhouse user, e.g. an ex-employee re-entering the funnel). Look up the candidate id via greenhouse_candidates_list. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
office_idsstring- Return only rows for these office ids. Pass a comma-separated list of ids (up to 50). Example: 4012345002,4012345003
per_pageinteger- Number of results to return, from 1 to 500. Defaults to 100. Results are ordered newest first (by id). Example: 100
primary_emailstring- Return only the user whose primary_email matches this address (exact match). Example: recruiter@example.com
show_service_accountsboolean- If true, include integration/service-account users (used by Harvest integrations and ISUs) in the result set. Defaults to false, which omits them. Example: true
updated_atstring- Filter by when the record was last updated, written as operator|timestamp where operator is gte, lte, gt or lt and the timestamp is ISO 8601. Do not combine created_at and updated_at in one call. Example: gte|2026-01-01T00:00:00Z
greenhouse_application_convert_to_candidateConvert a Greenhouse prospect application into a candidate application on a specific job, optionally at a chosen interview stage.WriteConvert Prospect to Candidate
Convert a Greenhouse prospect application into a candidate application on a specific job, optionally at a chosen interview stage. Returns the new candidate application; the prospect application's status becomes converted. Use this when a prospect is ready to interview. Use greenhouse_application_create to add a fresh application instead. Requires a prospect application id from greenhouse_applications_list (prospect true) and a job_id the prospect is attached to.
Inputs
application_idintegerrequired- Id of the application to act on. Get it from greenhouse_applications_list. Example: 4012345002
job_idintegerrequired- Id of the Greenhouse job. Get it from greenhouse_jobs_list. Example: 4012345002
to_job_interview_stage_idinteger- Id of the job interview stage to place the new candidate application in. Defaults to the job's first stage. Get it from greenhouse_job_interview_stages_list. Example: 4012345002
greenhouse_application_createCreate an application for an existing Greenhouse candidate on a job, or a prospect application when prospect is true.WriteCreate Application
Create an application for an existing Greenhouse candidate on a job, or a prospect application when prospect is true. Returns the created application. Use this to add a job application for a known candidate. Use greenhouse_candidate_create to create a new person and their first application together. Requires a candidate_id from greenhouse_candidates_list and a job_id from greenhouse_jobs_list.
Inputs
candidate_idintegerrequired- Id of the Greenhouse candidate. Get it from greenhouse_candidates_list. Example: 4012345002
coordinator_idinteger- Greenhouse user id of the coordinator responsible for the application. Get it from greenhouse_users_list. Example: 4012345002
created_atstring- Backdated creation time for the application, in ISO 8601, for records migrated from another system. Example: 2026-01-15T14:00:00Z
custom_fieldsarray- Custom field values to set. Each entry names the field by name_key or custom_field_id and gives a value shaped for the field type: text, boolean, number, option name or id, a list of options, or a currency object with amount and currency_code. Pass null as the value to clear it. Use greenhouse_custom_fields_list to see the available fields. Example: [{"name_key": "desired_salary", "value": "120000"}]
initial_stage_idinteger- Id of the job interview stage to place the new application in. Defaults to the job's first stage. Get it from greenhouse_job_interview_stages_list. Example: 4012345002
job_idinteger- Id of the job to apply the candidate to. Required unless prospect is true. Get it from greenhouse_jobs_list. Example: 4012345002
job_idsarray- Ids of the jobs to attach a prospect application to. Only used when prospect is true. Example: [4012345002]
prospectboolean- Set true to create a prospect application instead of a candidate application on a job. Example: true
prospect_owner_idinteger- Greenhouse user id of the prospect's owner. Get it from greenhouse_users_list. Example: 4012345002
prospect_pool_idinteger- Id of the prospect pool to put the prospect in. Get it from greenhouse_prospect_pools_list. Example: 4012345002
prospect_pool_stage_idinteger- Id of the stage within the prospect pool. Get it from greenhouse_prospect_pool_stages_list. Example: 4012345002
prospective_department_idinteger- Id of the department the prospect is being considered for. Get it from greenhouse_departments_list. Example: 4012345002
prospective_office_idinteger- Id of the office the prospect is being considered for. Get it from greenhouse_offices_list. Example: 4012345002
recruiter_idinteger- Greenhouse user id of the recruiter responsible for the application. Get it from greenhouse_users_list. Example: 4012345002
referrer_idinteger- Id of the referrer credited for the application. Get it from greenhouse_referrers_list (not a user id). Example: 4012345002
source_idinteger- Id of the source credited for the application. Get it from greenhouse_sources_list. Example: 4000001002
greenhouse_application_hireMark a Greenhouse application as hired and close the job opening it fills, with an optional start date and close reason.WriteHire Application
Mark a Greenhouse application as hired and close the job opening it fills, with an optional start date and close reason. Returns no content on success (HTTP 204). Use this when a candidate accepts and the hire is final. Use greenhouse_offer_update to record offer acceptance details. Requires an opening_id from greenhouse_openings_list when the job has more than one open opening.
Inputs
application_idintegerrequired- Id of the application to act on. Get it from greenhouse_applications_list. Example: 4012345002
close_reason_idinteger- Id of the close reason for the opening being filled, usually a Hire reason. Get it from greenhouse_close_reasons_list. Example: 4012345002
opening_idinteger- Id of the job opening this hire fills. Required when the job has more than one open opening. Get it from greenhouse_openings_list. Example: 4012345002
start_datestring- The new hire's start date, as YYYY-MM-DD. Example: 2026-03-02
greenhouse_application_moveMove a Greenhouse application to another interview stage on the same job, or transfer it to a different job.WriteMove Application
Move a Greenhouse application to another interview stage on the same job, or transfer it to a different job. Returns no content on success (HTTP 204). Use this to advance or move back a candidate. Use greenhouse_application_reject to reject and greenhouse_application_hire to hire. Requires the application's current stage id (from_stage_id) from greenhouse_applications_list and a target from greenhouse_job_interview_stages_list.
Inputs
application_idintegerrequired- Id of the application to act on. Get it from greenhouse_applications_list. Example: 4012345002
from_stage_idintegerrequired- Id of the application's current stage. It must match the current stage, as a guard against moving a stale record. Get it from the stage_id field in greenhouse_applications_list. Example: 4012345002
email_from_user_idinteger- Greenhouse user id that automated stage-change emails are sent from. Example: 4012345002
to_job_idinteger- Id of a different job to transfer the application to; it lands on that job's first stage. Give this or to_stage_id. Example: 4012345002
to_stage_idinteger- Id of the job interview stage to move to, on the same job. Get it from greenhouse_job_interview_stages_list. Give this or to_job_id. Example: 4012345002
greenhouse_application_rejectReject a Greenhouse application with a rejection reason, optional notes, and an optional templated rejection email.WriteReject Application
Reject a Greenhouse application with a rejection reason, optional notes, and an optional templated rejection email. Returns no content on success (HTTP 204). Use this to close out a candidacy and keep its history. Use greenhouse_application_unreject to reverse it, or greenhouse_application_delete to remove the application entirely. Requires a rejection_reason_id from greenhouse_rejection_reasons_list.
Inputs
application_idintegerrequired- Id of the application to act on. Get it from greenhouse_applications_list. Example: 4012345002
rejection_reason_idintegerrequired- Id of the rejection reason to record. Get it from greenhouse_rejection_reasons_list. Example: 4012345002
custom_fieldsarray- Custom field values to set. Each entry names the field by name_key or custom_field_id and gives a value shaped for the field type: text, boolean, number, option name or id, a list of options, or a currency object with amount and currency_code. Pass null as the value to clear it. Use greenhouse_custom_fields_list to see the available fields. Example: [{"name_key": "desired_salary", "value": "120000"}]
notesstring- Internal notes explaining the rejection. Example: Not enough experience with distributed systems.
rejection_emailobject- Optional rejection email to the candidate. Give email_template_id (from greenhouse_email_templates_list) and email_from_user_id, and send_email_at in ISO 8601 to schedule it for later. Example: {"email_template_id": 4012345002, "email_from_user_id": 4012345003}
greenhouse_application_unrejectReverse the rejection of a Greenhouse application, returning it to the stage it was rejected from and clearing the rejection reason.WriteUnreject Application
Reverse the rejection of a Greenhouse application, returning it to the stage it was rejected from and clearing the rejection reason. Returns no content on success (HTTP 204). Use this to bring a rejected candidate back into consideration. Use greenhouse_application_reject to reject one. Requires the id of a rejected application from greenhouse_applications_list (status rejected).
Inputs
application_idintegerrequired- Id of the application to act on. Get it from greenhouse_applications_list. Example: 4012345002
greenhouse_application_updateUpdate attribution fields on a Greenhouse application: source, referrer, recruiter, coordinator, prospect pool and stage, rejection date, or custom fields.WriteUpdate Application
Update attribution fields on a Greenhouse application: source, referrer, recruiter, coordinator, prospect pool and stage, rejection date, or custom fields. Returns the updated application. Use this to fix metadata. Use greenhouse_application_move, greenhouse_application_reject or greenhouse_application_hire to change the application's stage or outcome. Requires an application_id from greenhouse_applications_list.
- Idempotent
Inputs
application_idintegerrequired- Id of the application to update. Get it from greenhouse_applications_list. Example: 4012345002
coordinator_idinteger- Greenhouse user id of the coordinator responsible for the application. Get it from greenhouse_users_list. Example: 4012345002
created_atstring- Backdated creation time for the application, in ISO 8601, for records migrated from another system. Example: 2026-01-15T14:00:00Z
custom_fieldsarray- Custom field values to set. Each entry names the field by name_key or custom_field_id and gives a value shaped for the field type: text, boolean, number, option name or id, a list of options, or a currency object with amount and currency_code. Pass null as the value to clear it. Use greenhouse_custom_fields_list to see the available fields. Example: [{"name_key": "desired_salary", "value": "120000"}]
prospect_pool_idnumber- Id of the prospect pool to put the prospect in. Get it from greenhouse_prospect_pools_list. Example: 4012345002
prospect_stage_idnumber- Id of the prospect pool stage to move the prospect to. Get it from greenhouse_prospect_pool_stages_list. Example: 4012345002
recruiter_idinteger- Greenhouse user id of the recruiter responsible for the application. Get it from greenhouse_users_list. Example: 4012345002
referrer_idinteger- Id of the referrer credited for the application. Get it from greenhouse_referrers_list (not a user id). Example: 4012345002
rejected_atstring- Backdated rejection time for an already rejected application, in ISO 8601. Example: 2026-01-15T14:00:00Z
source_idinteger- Id of the source credited for the application. Get it from greenhouse_sources_list. Example: 4000001002
greenhouse_applied_candidate_tag_createApply an existing tag to a Greenhouse candidate.WriteApply Tag to Candidate
Apply an existing tag to a Greenhouse candidate. Returns the created applied-tag row. Use this to tag one candidate. Use greenhouse_candidate_tag_create first if the tag does not exist yet. Requires a candidate_id from greenhouse_candidates_list and a candidate_tag_id from greenhouse_candidate_tags_list.
Inputs
candidate_idintegerrequired- Id of the Greenhouse candidate. Get it from greenhouse_candidates_list. Example: 4012345002
candidate_tag_idintegerrequired- Id of the candidate tag to apply. Get it from greenhouse_candidate_tags_list. Example: 4012345002
greenhouse_attachment_createAttach a file to a Greenhouse application, supplied as base64 content or a publicly fetchable URL.WriteCreate Attachment
Attach a file to a Greenhouse application, supplied as base64 content or a publicly fetchable URL. Returns the created attachment. Use this to upload a resume, cover letter or other document. Use greenhouse_attachments_list to see existing files. Requires an application_id from greenhouse_applications_list.
Inputs
application_idintegerrequired- Id of the application the attachment will be associated with. Example: 4012345002
filenamestringrequired- Filename to store the attachment under, including extension. Extensions present in the organization's blocklisted-extensions list are rejected. Example: jane-doe-resume.pdf
typestringrequired- Classification of the attachment. resume, cover_letter, and take_home_test are candidate-supplied documents; offer_packet, offer_letter, and signed_offer_letter are offer documents; midfunnel_agreement and automated_agreement are e-signed documents; form_attachment is generated by Greenhouse forms; other is the free-form bucket. One of: resume, cover_letter, take_home_test, offer_packet, offer_letter, signed_offer_letter, other, form_attachment, midfunnel_agreement, automated_agreement. Example: resumeone of
resumecover_lettertake_home_testoffer_packetoffer_lettersigned_offer_letterotherform_attachmentmidfunnel_agreementautomated_agreement contentstring- Base64-encoded file contents. Provide either content or url, not both. Example: JVBERi0xLjQKJcfsj6IK...
urlstring- Publicly fetchable URL Greenhouse should download the file from. Provide either url or content, not both. Example: https://example.com/files/resume.pdf
visibilitystring- Who can see the attachment within Greenhouse. public is visible to site admins, job admins, and assigned interviewers; admin_only is restricted to site admins and assigned job admins; private is restricted to admins with explicit private-candidate access. Defaults are inferred from type when omitted. One of: admin_only, private, public. Example: admin_onlyone of
admin_onlyprivatepublic
greenhouse_candidate_createCreate a Greenhouse candidate profile, optionally with a first application on a job or in a prospect pool.WriteCreate Candidate
Create a Greenhouse candidate profile, optionally with a first application on a job or in a prospect pool. Returns the created candidate and, when an application was supplied, the created application. Use this for a new person. Use greenhouse_application_create to add another job application for an existing candidate.
Inputs
first_namestringrequired- The candidate's legal first name. Example: Jane
last_namestringrequired- The candidate's last name. Example: Doe
addressesarray- Postal addresses for the candidate. Each entry has a value and a type: home, work or other. On update this replaces the whole list. Example: [{"value": "123 Main St, New York, NY", "type": "home"}]
applicationobject- An optional first application to create with the candidate. Give job_id to make an applicant on that job, or prospect_pool_id (and no job_id) to make a prospect. It also accepts source_id, recruiter_id, coordinator_id, referrer_id, initial_stage_id and custom_fields. Example: {"job_id": 4012345002, "source_id": 4000001002}
can_emailboolean- Whether the candidate has consented to receive email from your organization. Example: true
companystring- The candidate's current employer, as shown on their profile. Example: Acme Corp
custom_fieldsarray- Custom field values to set. Each entry names the field by name_key or custom_field_id and gives a value shaped for the field type: text, boolean, number, option name or id, a list of options, or a currency object with amount and currency_code. Pass null as the value to clear it. Use greenhouse_custom_fields_list to see the available fields. Example: [{"name_key": "desired_salary", "value": "120000"}]
email_addressesarray- Email addresses for the candidate. Each entry has a value and a type: personal, work or other. On update this replaces the whole list. Example: [{"value": "jane.doe@example.com", "type": "personal"}]
linked_user_idsarray- Greenhouse user ids linked to this candidate, for internal candidates who are also employees. On update this replaces the whole list. Example: [4012345002]
phone_numbersarray- Phone numbers for the candidate. Each entry has a value and a type: home, work, mobile, skype or other. On update this replaces the whole list. Example: [{"value": "+1 555 010 0199", "type": "mobile"}]
preferred_namestring- The name the candidate prefers to go by, when different from the legal first name. Example: Jo
social_media_addressesarray- Social media profile links for the candidate. Each entry has a value. On update this replaces the whole list. Example: [{"value": "https://linkedin.com/in/janedoe"}]
tagsarray- Tag names to put on the candidate. Tags that do not exist yet are created. On update this replaces the whole list. Example: ["python", "referral"]
time_zonestring- The candidate's time zone, as a lowercase Rails-style zone name from the allowed list. Example: eastern time (us & canada)one of
international date line westmidway islandamerican samoahawaiialaskapacific time (us & canada)tijuanamountain time (us & canada)arizonachihuahuamazatlancentral time (us & canada)saskatchewanguadalajaramexico citymonterreycentral americaeastern time (us & canada)indiana (east)bogotalimaquitoatlantic time (canada)caracasla pazsantiagoasuncionnewfoundlandbrasiliabuenos airesmontevideogeorgetownpuerto ricogreenlandmid-atlanticazorescape verde is.dublinedinburghlisbonlondoncasablancamonroviautcbelgradebratislavabudapestljubljanapraguesarajevoskopjewarsawzagrebbrusselscopenhagenmadridparisamsterdamberlinbernzurichromestockholmviennawest central africabucharestcairohelsinkikyivrigasofiatallinnvilniusathensistanbulminskjerusalemhararepretoriakaliningradmoscowst. petersburgvolgogradsamarakuwaitriyadhnairobibaghdadtehranabu dhabimuscatbakutbilisiyerevankabulekaterinburgislamabadkarachitashkentchennaikolkatamumbainew delhikathmandudhakasri jayawardenepuraalmatyastananovosibirskrangoonbangkokhanoijakartakrasnoyarskbeijingchongqinghong kongurumqikuala lumpursingaporetaipeiperthirkutskulaanbaatarseoulosakasapporotokyoyakutskdarwinadelaidecanberramelbournesydneybrisbanehobartvladivostokguamport moresbymagadansrednekolymsksolomon is.new caledoniafijikamchatkamarshall is.aucklandwellingtonnuku'alofatokelau is.chatham is.samoa titlestring- The candidate's current job title, as shown on their profile. Example: Senior Engineer
website_addressesarray- Websites for the candidate. Each entry has a value and a type: personal, company, portfolio, blog or other. On update this replaces the whole list. Example: [{"value": "https://janedoe.dev", "type": "portfolio"}]
greenhouse_candidate_education_createAdd an education entry to a Greenhouse candidate profile using school, degree and discipline option ids.WriteCreate Candidate Education
Add an education entry to a Greenhouse candidate profile using school, degree and discipline option ids. Returns the created education entry. Use this to record schooling. Use greenhouse_candidate_employment_create to record a job. Requires a candidate_id from greenhouse_candidates_list; school, degree and discipline ids come from greenhouse_custom_field_options_list.
Inputs
candidate_idintegerrequired- Id of the Greenhouse candidate. Get it from greenhouse_candidates_list. Example: 4012345002
degree_custom_field_option_idinteger- Option id of the degree. Get it from greenhouse_custom_field_options_list with custom_field_key degree. Example: 4012345002
discipline_custom_field_option_idinteger- Option id of the discipline. Get it from greenhouse_custom_field_options_list with custom_field_key discipline. Example: 4012345002
end_datestring- End date of the education, as YYYY-MM-DD. Example: 2020-05-31
end_date_monthinteger- End month (1-12), when you only have a month and year instead of end_date. Example: 5
end_date_yearinteger- End year, when you only have a month and year instead of end_date. Example: 2020
school_name_custom_field_option_idinteger- Option id of the school. Get it from greenhouse_custom_field_options_list with custom_field_key school_name. Example: 4012345002
start_datestring- Start date of the education, as YYYY-MM-DD. Example: 2016-09-01
start_date_monthinteger- Start month (1-12), when you only have a month and year instead of start_date. Example: 9
start_date_yearinteger- Start year, when you only have a month and year instead of start_date. Example: 2016
greenhouse_candidate_employment_createAdd a work history entry (company, title, dates) to a Greenhouse candidate profile.WriteCreate Candidate Employment
Add a work history entry (company, title, dates) to a Greenhouse candidate profile. Returns the created employment entry. Use this to record a past or current job. Use greenhouse_candidate_education_create to record schooling. Requires a candidate_id from greenhouse_candidates_list.
Inputs
candidate_idintegerrequired- Id of the candidate (person) the employment entry belongs to. Example: 4012345002
company_namestringrequired- Free-text name of the employer. Example: Acme Corp
start_datestringrequired- Start date of the employment, as YYYY-MM-DD. Only month and year are kept. Example: 2019-06-01
titlestringrequired- The candidate's job title at this employer. Example: Software Engineer
end_datestring- End date of the employment, as YYYY-MM-DD. Omit when this is the candidate's current job. Example: 2023-08-31
greenhouse_candidate_tag_createAdd a new tag to the organization's Greenhouse candidate tag dictionary.WriteCreate Candidate Tag
Add a new tag to the organization's Greenhouse candidate tag dictionary. Returns the created tag. Use this to define a new tag. Use greenhouse_applied_candidate_tag_create to put a tag on a candidate.
Inputs
namestringrequired- Name of the candidate tag to create. Example: python
greenhouse_candidate_updateUpdate fields on an existing Greenhouse candidate profile; array fields such as emails, phones and tags replace the whole list.WriteUpdate Candidate
Update fields on an existing Greenhouse candidate profile; array fields such as emails, phones and tags replace the whole list. Returns the updated candidate. Use this to edit profile data. Use greenhouse_application_update to change source, recruiter or other application fields. Requires a candidate_id from greenhouse_candidates_list.
- Idempotent
Inputs
candidate_idintegerrequired- Id of the candidate to update. Get it from greenhouse_candidates_list. Example: 4012345002
addressesarray- Postal addresses for the candidate. Each entry has a value and a type: home, work or other. On update this replaces the whole list. Example: [{"value": "123 Main St, New York, NY", "type": "home"}]
can_emailboolean- Whether the candidate has consented to receive email from your organization. Example: true
companystring- The candidate's current employer, as shown on their profile. Example: Acme Corp
custom_fieldsarray- Custom field values to set. Each entry names the field by name_key or custom_field_id and gives a value shaped for the field type: text, boolean, number, option name or id, a list of options, or a currency object with amount and currency_code. Pass null as the value to clear it. Use greenhouse_custom_fields_list to see the available fields. Example: [{"name_key": "desired_salary", "value": "120000"}]
email_addressesarray- Email addresses for the candidate. Each entry has a value and a type: personal, work or other. On update this replaces the whole list. Example: [{"value": "jane.doe@example.com", "type": "personal"}]
first_namestring- The candidate's legal first name. Example: Jane
is_privateboolean- Set true to restrict the candidate to users with View Private Candidates access. Example: false
last_namestring- The candidate's last name. Example: Doe
linked_user_idsarray- Greenhouse user ids linked to this candidate, for internal candidates who are also employees. On update this replaces the whole list. Example: [4012345002]
phone_numbersarray- Phone numbers for the candidate. Each entry has a value and a type: home, work, mobile, skype or other. On update this replaces the whole list. Example: [{"value": "+1 555 010 0199", "type": "mobile"}]
preferred_namestring- The name the candidate prefers to go by, when different from the legal first name. Example: Jo
social_media_addressesarray- Social media profile links for the candidate. Each entry has a value. On update this replaces the whole list. Example: [{"value": "https://linkedin.com/in/janedoe"}]
tagsarray- Tag names to put on the candidate. Tags that do not exist yet are created. On update this replaces the whole list. Example: ["python", "referral"]
time_zonestring- The candidate's time zone, as a lowercase Rails-style zone name from the allowed list. Example: eastern time (us & canada)one of
international date line westmidway islandamerican samoahawaiialaskapacific time (us & canada)tijuanamountain time (us & canada)arizonachihuahuamazatlancentral time (us & canada)saskatchewanguadalajaramexico citymonterreycentral americaeastern time (us & canada)indiana (east)bogotalimaquitoatlantic time (canada)caracasla pazsantiagoasuncionnewfoundlandbrasiliabuenos airesmontevideogeorgetownpuerto ricogreenlandmid-atlanticazorescape verde is.dublinedinburghlisbonlondoncasablancamonroviautcbelgradebratislavabudapestljubljanapraguesarajevoskopjewarsawzagrebbrusselscopenhagenmadridparisamsterdamberlinbernzurichromestockholmviennawest central africabucharestcairohelsinkikyivrigasofiatallinnvilniusathensistanbulminskjerusalemhararepretoriakaliningradmoscowst. petersburgvolgogradsamarakuwaitriyadhnairobibaghdadtehranabu dhabimuscatbakutbilisiyerevankabulekaterinburgislamabadkarachitashkentchennaikolkatamumbainew delhikathmandudhakasri jayawardenepuraalmatyastananovosibirskrangoonbangkokhanoijakartakrasnoyarskbeijingchongqinghong kongurumqikuala lumpursingaporetaipeiperthirkutskulaanbaatarseoulosakasapporotokyoyakutskdarwinadelaidecanberramelbournesydneybrisbanehobartvladivostokguamport moresbymagadansrednekolymsksolomon is.new caledoniafijikamchatkamarshall is.aucklandwellingtonnuku'alofatokelau is.chatham is.samoa titlestring- The candidate's current job title, as shown on their profile. Example: Senior Engineer
website_addressesarray- Websites for the candidate. Each entry has a value and a type: personal, company, portfolio, blog or other. On update this replaces the whole list. Example: [{"value": "https://janedoe.dev", "type": "portfolio"}]
greenhouse_interview_createRecord a scheduled interview on a Greenhouse application for an event on your own calendar, with its panel, time, location and video link.WriteCreate Interview
Record a scheduled interview on a Greenhouse application for an event on your own calendar, with its panel, time, location and video link. Returns the created interview. Greenhouse does not create the calendar event or send invites. Use this to sync an externally scheduled interview into Greenhouse. Use greenhouse_interview_update to change one. Requires an application_id from greenhouse_applications_list and a job_interview_id from greenhouse_job_interviews_list.
Inputs
application_idintegerrequired- Id of the Greenhouse application. Get it from greenhouse_applications_list. Example: 4012345002
ends_atstringrequired- Interview end time in ISO 8601. Example: 2026-02-10T16:00:00Z
external_event_idstringrequired- Id of the event on your external calendar that this interview records. Greenhouse does not create this event or send invites for it. Example: 7c9e6679-calendar-event
interviewersarrayrequired- The interview panel. Each entry names one interviewer by user_id, email or employee_id, plus a response_status of accepted, declined, tentative or needs_action. On update this replaces the panel. Example: [{"user_id": 4012345002, "response_status": "accepted"}]
job_interview_idintegerrequired- Id of the interview slot on the job's interview plan. Get it from greenhouse_job_interviews_list. Example: 4012345002
starts_atstringrequired- Interview start time in ISO 8601. Example: 2026-02-10T15:00:00Z
locationstring- Where the interview happens, as free text. Example: Conference Room B
organizer_idinteger- Id of the Greenhouse user to record as the interview's organizer. Must be an active user who can manage the application. Defaults to the authenticated user when omitted. Not available to MCP integrations. Example: 4012345002
video_conferencing_urlstring- Video meeting link for the interview. Example: https://zoom.us/j/1234567890
greenhouse_interview_updateUpdate a scheduled Greenhouse interview's time, location, video link, panel, organizer, or external calendar event id.WriteUpdate Interview
Update a scheduled Greenhouse interview's time, location, video link, panel, organizer, or external calendar event id. Returns the updated interview. Use this to reschedule or change the panel. Use greenhouse_interview_delete to remove the interview. Requires an interview id from greenhouse_interviews_list.
- Idempotent
Inputs
interview_idintegerrequired- Id of the interview to update. Get it from greenhouse_interviews_list. Example: 4012345002
ends_atstring- Interview end time in ISO 8601. Example: 2026-02-10T16:00:00Z
external_event_idstring- Id of the event on your own calendar (Google, Outlook or other) that this interview records. Greenhouse does not create the event or send invites. Example: 7c9e6679-calendar-event
interviewersarray- The interview panel. Each entry names one interviewer by user_id, email or employee_id, plus a response_status of accepted, declined, tentative or needs_action. On update this replaces the panel. Example: [{"user_id": 4012345002, "response_status": "accepted"}]
locationstring- Where the interview happens, as free text. Example: Conference Room B
organizer_idinteger- Id of the Greenhouse user to record as the interview's organizer. Must be an active user who can manage the application. The existing organizer is kept when omitted. Not available to MCP integrations. Example: 4012345002
starts_atstring- Interview start time in ISO 8601. Example: 2026-02-10T15:00:00Z
video_conferencing_urlstring- Video meeting link for the interview. Example: https://zoom.us/j/1234567890
greenhouse_job_createCreate a Greenhouse job from a template job, copying its interview plan, scorecards, hiring team and approvals, with a set number of openings.WriteCreate Job
Create a Greenhouse job from a template job, copying its interview plan, scorecards, hiring team and approvals, with a set number of openings. Returns the created job. Use this to open a new requisition. Use greenhouse_job_update to edit an existing job and greenhouse_opening_create to add openings to one. Requires a template_job_id from greenhouse_jobs_list.
Inputs
number_of_openingsintegerrequired- Number of openings to create on the new job. Each opening can be filled by a single hire. The total open openings across the job cannot exceed Greenhouse's internal limit of 200; requests that would exceed it are rejected. Example: 4012345002
template_job_idintegerrequired- Id of an existing job (typically a template) used as the source for this job's interview plan, scorecards, hiring team, and approval workflow. Required — Greenhouse Recruiting remains the source of truth for these configurations, so new jobs always inherit them from a template. Example: 4012345002
custom_fieldsarray- Values to set on this job's job custom fields. Each entry identifies the field by custom_field_id or name_key and supplies a value whose shape matches the field's value_type (see greenhouse_custom_fields_list (filtered by field_type)). Every field marked required that the template job leaves blank must be supplied here. Single-select and multi-select values must name an active option: read them from greenhouse_custom_field_options_list (filtered by active), because archived options are listed unless active=true is passed and are rejected on write. Example: [{"name_key": "cost_center", "value": "R&D"}]
department_idinteger- Id of the department to assign the job to. Mutually exclusive with external_department_id. Example: 4012345002
external_department_idstring- Partner-supplied external_id of the department to assign the job to. Resolved to a Greenhouse department_id in the caller's organization; unknown values are rejected. Mutually exclusive with department_id. Example: DEPT-ENG
external_office_idsarray- Partner-supplied external_id values of the offices to assign the job to. Each entry is resolved to a Greenhouse office_id in the caller's organization; unknown values are rejected. Mutually exclusive with office_ids. Example: ["OFF-NYC"]
ignore_approver_permission_checkboolean- If true, skips the check that a user set as a job or offer approver via custom_fields has permission to view/edit this job. Lets an integration assign an approver without first broadening that user's Greenhouse permissions. Restricted to integration service-account credentials; other callers are rejected with a 422. Example: true
ignore_custom_field_requirementsboolean- If true, skips validation that required job custom fields have a value. Useful for integrations that only intend to sync a subset of fields and rely on the template job or a later request to supply the rest. Restricted to integration service-account credentials; other callers are rejected with a 422. Example: true
job_namestring- Internal job title shown to the hiring team (e.g. Senior Backend Engineer). When omitted, the template job's name is used. Example: Senior Backend Engineer
job_post_namestring- External-facing title for the job's initial internal job post (the listing shown on the company's careers site). Defaults to job_name when omitted. Example: Senior Backend Engineer
notesstring- Internal HTML notes about the job, surfaced to the hiring team in the Greenhouse UI. Example: <p>Backfill for the payments team.</p>
office_idsarray- Ids of the offices to assign the job to. A job can span multiple offices. Mutually exclusive with external_office_ids. Example: [4012345002]
opening_idsarray- Optional partner-supplied identifiers for the openings being created — one entry per new opening, paired positionally with number_of_openings. Each value is stored on the resulting opening as its opening_id (a free-form string, not the Greenhouse opening id) and may be null. Greenhouse enforces an internal limit of 200 open openings per job; requests that would exceed it fail. Example: ["POS-2231", "POS-2232"]
requisition_idstring- Partner-supplied external identifier for the requisition (e.g. an HRIS or ATS code). Free-form string and not required to be unique across the organization. Example: REQ-1042
greenhouse_job_hiring_manager_createAssign a Greenhouse user as a hiring manager on a job.WriteAdd Job Hiring Manager
Assign a Greenhouse user as a hiring manager on a job. Returns the created hiring manager assignment. Use this for hiring managers only. Use greenhouse_job_owner_create to add a recruiter, coordinator or sourcer. Requires a job_id from greenhouse_jobs_list and a user_id from greenhouse_users_list.
Inputs
job_idintegerrequired- Id of the job to add the hiring manager to. Get it from greenhouse_jobs_list. Example: 4012345002
user_idintegerrequired- Id of the user to assign as a hiring manager on the job. The user must already exist in your organization. Example: 4012345002
greenhouse_job_note_createAdd an internal note to a Greenhouse job.WriteCreate Job Note
Add an internal note to a Greenhouse job. Returns the created job note. Use this for notes about a requisition. Use greenhouse_note_create for notes about a candidate. Requires a job_id from greenhouse_jobs_list.
Inputs
bodystringrequired- Text of the note. Newlines are kept as line breaks. Example: Spoke with the candidate about relocation.
job_idintegerrequired- Id of the Greenhouse job. Get it from greenhouse_jobs_list. Example: 4012345002
user_idintegerrequired- Greenhouse user id to record as the note's author. Get it from greenhouse_users_list. Example: 4012345002
visibilitystringrequired- Who can see the job note: admin_only_visible (Job Admins on the job) or privately_visible (users with the view and create private job notes permission). Example: admin_only_visibleone of
admin_only_visibleprivately_visible
greenhouse_job_note_updateEdit the body, author or visibility of an existing note on a Greenhouse job.WriteUpdate Job Note
Edit the body, author or visibility of an existing note on a Greenhouse job. Returns the updated job note. Use this to correct a job note. Use greenhouse_job_note_create to add a new one. Requires a job note id from greenhouse_job_notes_list.
- Idempotent
Inputs
job_note_idintegerrequired- Id of the job note to update. Get it from greenhouse_job_notes_list. Example: 4012345002
bodystring- Text of the note. Newlines are kept as line breaks. Example: Spoke with the candidate about relocation.
job_idinteger- Id of the Greenhouse job. Get it from greenhouse_jobs_list. Example: 4012345002
user_idinteger- Greenhouse user id to record as the note's author. Get it from greenhouse_users_list. Example: 4012345002
visibilitystring- Who can see the job note: admin_only_visible (Job Admins on the job) or privately_visible (users with the view and create private job notes permission). Example: admin_only_visibleone of
admin_only_visibleprivately_visible
greenhouse_job_owner_createAssign a Greenhouse user to a job's hiring team as recruiter, coordinator or sourcer, optionally making them responsible for its candidates.WriteAdd Job Owner
Assign a Greenhouse user to a job's hiring team as recruiter, coordinator or sourcer, optionally making them responsible for its candidates. Returns the created assignment. Use this to staff a job's recruiting team. Use greenhouse_job_hiring_manager_create to add a hiring manager. Requires a job_id from greenhouse_jobs_list and a user_id from greenhouse_users_list.
Inputs
job_idintegerrequired- Id of the job to assign the user to. Must belong to your organization. Example: 4012345002
typestringrequired- Hiring-team role to assign. One of sourcer, recruiter, or coordinator. To assign a hiring manager instead, use greenhouse_job_hiring_manager_create. Example: sourcerone of
sourcerrecruitercoordinator user_idintegerrequired- Id of the user to add to the hiring team. The user must already exist in your organization and have permission to edit the job. Example: 4012345002
candidate_responsibilitystring- For recruiter and coordinator only, which existing and future candidates on the job this user becomes the responsible owner for: active (in-process), inactive (rejected and hired), future (new applications only), or all. Ignored for sourcer. If omitted for a recruiter or coordinator, no existing or future candidates are assigned to the user, which can leave new applications without a responsible recruiter — pass all to match the legacy V1 POST /v1/jobs/{id}/hiring_team behavior. One of: active, inactive, future, all. Example: activeone of
activeinactivefutureall
greenhouse_job_post_createCreate a Greenhouse job post by duplicating an existing post onto a job board, optionally with a new title, content and status.WriteCreate Job Post
Create a Greenhouse job post by duplicating an existing post onto a job board, optionally with a new title, content and status. Returns the created job post. Use this to publish a job on another board. Use greenhouse_job_post_update to edit an existing post. Requires a template_job_post_id from greenhouse_job_posts_list and a job_board_id from greenhouse_job_boards_list.
Inputs
job_board_idintegerrequired- Id of the job_board to publish the post to. A single post belongs to one board at a time; resolve available boards via greenhouse_job_boards_list. Example: 4012345002
template_job_post_idintegerrequired- Id of an existing job post to duplicate. The new post is created on the same parent job as the template and copies its content, questions, and configuration. The template post itself is unchanged. Example: 4012345002
contentstring- HTML body of the post shown to candidates. Sanitized server-side — only a limited element/attribute allowlist (including iframe, video, source) survives. Pass null or omit to inherit the template's content. Example: <p>Join our payments team...</p>
demographic_question_set_idinteger- Id of the demographic question set to attach to the new post for DE&I reporting. Pass null to opt out of demographic questions. Example: 4012345002
internalboolean- If true, create the post on the organization's internal job board (employees only). If false or null, the post is external. Must be consistent with job_board_id — internal job boards only accept internal posts. Example: true
statusstring- Initial publication status. Use live to publish immediately or draft to save as an unpublished working copy. Defaults to draft. One of: draft, live. Example: draftone of
draftlive titlestring- Public-facing title for the new post. Defaults to the template post's title when omitted. Example: Senior Backend Engineer
greenhouse_job_post_updateUpdate a Greenhouse job post's title or HTML content, or publish it (live) or unpublish it (draft).WriteUpdate Job Post
Update a Greenhouse job post's title or HTML content, or publish it (live) or unpublish it (draft). Returns the updated job post. Use this to edit or publish a listing. Use greenhouse_job_update to change the underlying job. Requires a job_post_id from greenhouse_job_posts_list.
- Idempotent
Inputs
job_post_idintegerrequired- Id of the job post to update. Get it from greenhouse_job_posts_list. Example: 4012345002
contentstring- Replacement HTML body for the post. For internal posts this updates internal_content; for external posts it updates content. Sanitized server-side — only a limited element/attribute allowlist (including iframe, video, source) survives. Example: <p>Join our payments team...</p>
job_application_statusstring- Transition the post's publication status. live publishes the post (subject to its job board also being live); draft returns it to an unpublished working state. One of: draft, live. Example: draftone of
draftlive titlestring- New public-facing title for the post. Limited to 255 characters. Example: Senior Backend Engineer
greenhouse_job_updateUpdate a Greenhouse job's name, notes, requisition id, department, offices, remote status, internal selling notes, or custom fields.WriteUpdate Job
Update a Greenhouse job's name, notes, requisition id, department, offices, remote status, internal selling notes, or custom fields. Returns the updated job. Use this to edit job details. Use greenhouse_job_post_update to edit the public job listing. Requires a job_id from greenhouse_jobs_list.
- Idempotent
Inputs
job_idintegerrequired- Id of the job to update. Get it from greenhouse_jobs_list. Example: 4012345002
anywhereboolean- If true, the job is marked as remote-anywhere and office_ids is cleared. Mutually exclusive with supplying office_ids or external_office_ids. Example: true
custom_fieldsarray- Values to set on this job's job custom fields. Replaces the existing collection wholesale — send the full desired list, not a delta. Each entry identifies the field by custom_field_id or name_key and supplies a value matching the field's value_type. Example: [{"name_key": "cost_center", "value": "R&D"}]
department_idinteger- Set the job's department by Greenhouse id. Pass null to clear. Mutually exclusive with external_department_id. Example: 4012345002
external_department_idstring- Set the job's department by partner-supplied department external_id. Resolved to a Greenhouse department_id in the caller's organization; unknown values are rejected. Mutually exclusive with department_id. Example: DEPT-ENG
external_office_idsarray- Replace the job's office assignments by partner-supplied office external_id values. Each entry is resolved to a Greenhouse office_id in the caller's organization; unknown values are rejected. Mutually exclusive with office_ids. Example: ["OFF-NYC"]
how_to_sell_this_jobstring- Internal selling-points note used by recruiters when pitching the role, shown to the hiring team in the Greenhouse UI. Example: Greenfield platform work with a small senior team.
ignore_approver_permission_checkboolean- If true, skips the check that a user set as a job or offer approver via custom_fields has permission to view/edit this job. Lets an integration assign an approver without first broadening that user's Greenhouse permissions. Restricted to integration service-account credentials; other callers are rejected with a 422. Example: true
ignore_custom_field_requirementsboolean- If true, a null value sent via custom_fields for a required field clears it instead of failing the request. Restricted to integration service-account credentials; other callers are rejected with a 422. Example: true
namestring- Internal job title shown to the hiring team in Greenhouse. Example: Senior Backend Engineer
notesstring- Internal HTML notes about the job. Replaces the existing value when supplied. Example: <p>Backfill for the payments team.</p>
office_idsarray- Replace the job's office assignments with these office ids. Send the full desired list, not a delta. Mutually exclusive with external_office_ids and with anywhere: true. Example: [4012345002]
requisition_idstring- Partner-supplied external identifier for the requisition. Pass null to clear the value. Example: REQ-1042
team_and_responsibilitiesstring- Internal description of the team and the role's responsibilities, shown to the hiring team in the Greenhouse UI. Example: Owns the payments API and its reliability.
greenhouse_note_createAdd a note, a logged email, or an activity entry to a Greenhouse candidate, optionally tied to one application.WriteCreate Note
Add a note, a logged email, or an activity entry to a Greenhouse candidate, optionally tied to one application. Returns the created note. Use this for candidate notes and activity logging. Use greenhouse_job_note_create for notes on a job. Requires a candidate_id from greenhouse_candidates_list.
Inputs
bodystringrequired- Free-text body of the note. Newline characters (\n) are stored verbatim and rendered as line breaks in the Greenhouse UI. Example: Spoke with the candidate about relocation.
candidate_idintegerrequired- Id of the candidate the note is attached to. Required for every note. When application_id is also supplied, the application must belong to this candidate. Example: 4012345002
note_typestringrequired- Classification of the note being created. NOTE posts a candidate note in the Notes tab; EMAIL logs an email into the activity feed and requires the email_* fields; ACTIVITY logs a free-form entry into the activity feed. Other note types (interview, feedback, touchpoint, etc.) are produced by Greenhouse features and cannot be created through this endpoint. One of: EMAIL, ACTIVITY, NOTE. Example: NOTEone of
EMAILACTIVITYNOTE visibilitystringrequired- Who will be able to see this note. public is visible to anyone with access to the candidate, private requires the "see private notes" permission, and admin_only is restricted to Job Admins and Site Admins. One of: admin_only, private, public. Example: publicone of
admin_onlyprivatepublic application_idinteger- Id of the application to anchor this note to. The application must belong to candidate_id. Omit for candidate-level notes that are not tied to any single application. Example: 4012345002
email_ccarray- Cc addresses on the email being logged. Required (may be an empty array) when note_type is EMAIL and forbidden for other types. Example: []
email_fromarray- From addresses on the email being logged. Required when note_type is EMAIL and forbidden for other types. Example: ["recruiter@example.com"]
email_toarray- To addresses on the email being logged. Required when note_type is EMAIL and forbidden for other types. Example: ["jane.doe@example.com"]
subjectstring- Subject line on the note. Required when note_type is EMAIL; optional for NOTE and ACTIVITY. Example: Follow-up on your application
user_idinteger- Greenhouse user id to record as the note's author. Defaults to the authenticated user. Get it from greenhouse_users_list. Example: 4012345002
greenhouse_offer_createCreate an offer on a Greenhouse application, with an optional start date and offer custom fields such as compensation.WriteCreate Offer
Create an offer on a Greenhouse application, with an optional start date and offer custom fields such as compensation. Returns the created offer. Use this to extend a new offer. Use greenhouse_offer_update to change an existing offer. Requires an application_id from greenhouse_applications_list. Required offer fields are listed by greenhouse_custom_fields_list with field_type offer.
Inputs
application_idintegerrequired- Id of the application this offer is being extended on. Required. Example: 4012345002
custom_fieldsarray- Values for the offer's custom fields, including compensation components (base pay, equity, bonus, etc.). Each entry sets one custom field by name or id; only fields configured on the application's hiring plan apply. Offer custom fields the organization marks as required must be included, otherwise the request fails with a 422 naming the missing fields. List the organization's offer fields, including required and name_key, via greenhouse_custom_fields_list (filtered by field_type and active) Harvest V3 does not evaluate calculated custom fields; if the organization hasn't enabled overriding that field, the request fails with a 422 naming it as not overridable. Example: [{"name_key": "cost_center", "value": "R&D"}]
starts_onstring- Candidate's proposed start date, in ISO 8601 (YYYY-MM-DD). Required when the organization marks the Start Date offer field as required. Example: 2026-03-02
greenhouse_offer_updateUpdate a Greenhouse offer's start date, sent date, created date, resolved time, or offer custom fields.WriteUpdate Offer
Update a Greenhouse offer's start date, sent date, created date, resolved time, or offer custom fields. Returns the updated offer; changing the start date usually creates a new offer version. Use this to revise an offer. Use greenhouse_application_hire to mark the candidate hired. Requires an offer id from greenhouse_offers_list.
- Idempotent
Inputs
offer_idintegerrequired- Id of the offer to update. Get it from greenhouse_offers_list. Example: 4012345002
created_atstring- Date the offer was created, in ISO 8601 (YYYY-MM-DD). Use to backfill the original creation date for offers migrated from another system. Example: 2026-03-02
custom_fieldsarray- Values for the offer's custom fields, including compensation components (base pay, equity, bonus, etc.). Each entry sets one custom field by name or id; only fields configured on the application's hiring plan apply. Replaces the listed fields wholesale — omit entries you do not want to modify. Harvest V3 does not evaluate calculated custom fields; if the organization hasn't enabled overriding that field, the request fails with a 422 naming it as not overridable. Example: [{"name_key": "cost_center", "value": "R&D"}]
resolved_atstring- Timestamp the offer was resolved (Accepted or Rejected), in ISO 8601. Updates are normalized to noon UTC on the date provided. Example: 2026-01-15T14:00:00Z
sent_onstring- Date the offer was sent to the candidate, in ISO 8601 (YYYY-MM-DD). Use to backfill the sent date for offers handled outside of Greenhouse. Example: 2026-03-02
starts_onstring- Candidate's proposed start date, in ISO 8601 (YYYY-MM-DD). Changing this on an existing offer typically creates a new offer version. Example: 2026-03-02
greenhouse_opening_createAdd an opening (headcount slot) to a Greenhouse job, with an optional external opening id and custom fields.WriteCreate Opening
Add an opening (headcount slot) to a Greenhouse job, with an optional external opening id and custom fields. Returns the created opening. Use this to increase headcount on an existing job. Use greenhouse_job_create to create a new job with openings. Requires a job_id from greenhouse_jobs_list.
Inputs
job_idintegerrequired- Id of the parent job (requisition) to add this opening to. Required. Greenhouse enforces an internal limit of 200 open openings per job; requests that would exceed it are rejected. Example: 4012345002
custom_fieldsarray- Values to set on this opening's opening custom fields. Each entry identifies the field by custom_field_id or name_key and supplies a value whose shape matches the field's value_type (see greenhouse_custom_fields_list (filtered by field_type)). Example: [{"name_key": "cost_center", "value": "R&D"}]
opening_idstring- Partner-supplied external identifier for the new opening (e.g. an HRIS or ATS position id). Free-form string, not required to be unique across the organization. Distinct from the Greenhouse id. Example: POS-2231
greenhouse_opening_updateUpdate a Greenhouse opening: close or reopen it, set its close reason, external opening id, target start date, or custom fields.WriteUpdate Opening
Update a Greenhouse opening: close or reopen it, set its close reason, external opening id, target start date, or custom fields. Returns the updated opening. Use this to close or reopen headcount. Use greenhouse_application_hire to close an opening by hiring into it. Requires an opening id from greenhouse_openings_list.
- Idempotent
Inputs
opening_record_idintegerrequired- Id of the opening to update. Get it from greenhouse_openings_list. Example: 4012345002
close_reason_idinteger- ID of the close_reason to record when closing the opening, for example Hire - New Headcount, On Hold, or Requisition Cancelled. Resolve via greenhouse_close_reasons_list. On an open opening, supplying close_reason_id without also setting status to closed returns 422; on an already-closed opening, close_reason_id can be updated on its own. Example: 4012345002
custom_fieldsarray- Values to set on this opening's opening custom fields. Each entry identifies the field by custom_field_id or name_key and supplies a value whose shape matches the field's value_type (see greenhouse_custom_fields_list (filtered by field_type)). Replaces the existing values wholesale — send the full desired list, not a delta. Example: [{"name_key": "cost_center", "value": "R&D"}]
job_idinteger- Id of the job (requisition) this opening belongs to. Provided to disambiguate the opening; reassigning an opening to a different job is not supported. Example: 4012345002
opening_idstring- Partner-supplied external identifier for the opening (e.g. an HRIS or ATS position id). Free-form string, not required to be unique across the organization. Example: POS-2231
statusstring- Transition the opening's lifecycle. Pass closed to close an open opening (optionally with close_reason_id); pass open to reopen a closed opening that has not been filled. One of: open, closed. Example: openone of
openclosed target_start_onstring- Target start date for the hire that will fill this opening, in ISO 8601 (YYYY-MM-DD). Example: 2026-03-02
greenhouse_rejection_detail_updateChange the rejection reason or rejection question answers recorded on a rejected Greenhouse application.WriteUpdate Rejection Detail
Change the rejection reason or rejection question answers recorded on a rejected Greenhouse application. Returns the updated rejection detail. Use this to correct a rejection record. Use greenhouse_application_reject to reject an application. Requires a rejection detail id from greenhouse_rejection_details_list.
- Idempotent
Inputs
rejection_detail_idintegerrequired- Id of the rejection detail to update. Get it from greenhouse_rejection_details_list. Example: 4012345002
custom_fieldsarray- Values for the application's rejection question custom fields. Each entry sets one custom field by name or id; only fields configured as rejection questions on the organization apply. Replaces the listed fields wholesale — omit entries you do not want to modify. Example: [{"name_key": "cost_center", "value": "R&D"}]
rejection_reason_idinteger- Id of the rejection reason to associate with the application. Must reference a greenhouse_rejection_reasons_list row in the same organization. Updating this value does not change the application's existing rejected_at timestamp. Example: 4012345002
greenhouse_scorecard_createCreate an interview scorecard on a Greenhouse application, as a draft or submitted, with a rating, notes, question answers and attribute ratings.WriteCreate Scorecard
Create an interview scorecard on a Greenhouse application, as a draft or submitted, with a rating, notes, question answers and attribute ratings. Returns the created scorecard. Use this to file interview feedback. Use greenhouse_scorecard_update to edit an existing scorecard. Requires an application_id from greenhouse_applications_list, an interview_kit_id from greenhouse_interview_kits_list and user ids from greenhouse_users_list.
Inputs
application_idintegerrequired- Id of the application the scorecard belongs to. The application's job must own the supplied interview_kit_id. Example: 4012345002
interview_kit_idintegerrequired- Id of the interview kit this scorecard is filled out against. Must belong to the same job as the application_id. Example: 4012345002
interviewed_atstringrequired- Timestamp the interview took place, in ISO 8601. Used to compute time-to-submit and to align the scorecard with the interview slot. Example: 2026-01-15T14:00:00Z
interviewer_idintegerrequired- Id of the Greenhouse user this scorecard is assigned to (the interviewer being scored against). Example: 4012345002
submitter_idintegerrequired- Id of the user submitting the scorecard. Usually matches interviewer_id; set differently when an admin is filing the scorecard on the interviewer's behalf. Example: 4012345002
candidate_attributesarray- Ratings for the job's candidate attributes, written atomically with the scorecard. Each entry identifies the attribute by job_candidate_attribute_id. Attributes omitted here are left unrated. Example: [{"job_candidate_attribute_id": 4012345002, "value": "strong_yes", "note": "Led two migrations."}]
candidate_ratingstring- Overall recommendation for the candidate. One of strong_no ("Definitely Not"), no, yes, strong_yes, or no_decision. Pass no_decision to submit the scorecard without picking a recommendation. Example: strong_noone of
strong_nonoyesstrong_yesno_decision notesstring- Free-text "key takeaways" the interviewer is recording (pros, cons, follow-ups). Plain text; @-mentions are accepted and stored alongside the rendered names. Example: Strong system design; probe testing habits next round.
private_notesstring- Free-text private notes; only users with the "see private notes" permission can read these back. Example: Salary expectations above band.
public_notesstring- Free-text "note to other interviewers" shared with the rest of the hiring team. Example: Great communicator; dig into system design next.
question_answersarray- Answers to the interview kit's scorecard questions, written atomically with the scorecard. Each entry identifies the question by scorecard_question_id and supplies a value shaped by the question's answer_type. Questions omitted here are left unanswered. Example: [{"scorecard_question_id": 4012345002, "value": "Clear, well-structured API design."}]
statusstring- Initial lifecycle status. Send draft to create an in-progress scorecard, or complete to submit it immediately — sending complete also stamps submitted_at. One of: draft, complete. Example: draftone of
draftcomplete
greenhouse_scorecard_updateUpdate a Greenhouse scorecard's rating, notes, status, question answers or attribute ratings.WriteUpdate Scorecard
Update a Greenhouse scorecard's rating, notes, status, question answers or attribute ratings. Returns the updated scorecard. Use this to edit or submit feedback. Use greenhouse_scorecard_create to file a new scorecard. Requires a scorecard id from greenhouse_scorecards_list.
- Idempotent
Inputs
interviewed_atstringrequired- Timestamp the interview took place, in ISO 8601. Example: 2026-01-15T14:00:00Z
interviewer_idintegerrequired- Id of the Greenhouse user this scorecard is assigned to (the interviewer being scored against). Example: 4012345002
scorecard_idintegerrequired- Id of the scorecard to update. Get it from greenhouse_scorecards_list. Example: 4012345002
submitter_idintegerrequired- Id of the user submitting (or last editing) the scorecard. Usually matches interviewer_id. Example: 4012345002
candidate_attributesarray- Attribute ratings to merge into the draft, matched to existing rows by job_candidate_attribute_id. Entries present are updated; entries omitted are untouched; value: null clears a rating. Example: [{"job_candidate_attribute_id": 4012345002, "value": "strong_yes", "note": "Led two migrations."}]
candidate_ratingstring- Overall recommendation. One of strong_no ("Definitely Not"), no, yes, strong_yes, or no_decision. Example: strong_noone of
strong_nonoyesstrong_yesno_decision notesstring- Free-text "key takeaways" (pros, cons, follow-ups). Replaces the existing value wholesale. Example: Strong system design; probe testing habits next round.
private_notesstring- Free-text private notes; only readers with the "see private notes" permission see these. Replaces the existing value wholesale. Example: Salary expectations above band.
public_notesstring- Free-text "note to other interviewers". Replaces the existing value wholesale. Example: Great communicator; dig into system design next.
question_answersarray- Answers to merge into the draft, matched to existing answer rows by scorecard_question_id. Entries present are updated; entries omitted are untouched; value: null clears an answer. Matching is against the kit's active questions — an answer whose question has since been deactivated can only be edited via the per-resource endpoints. Example: [{"scorecard_question_id": 4012345002, "value": "Clear, well-structured API design."}]
statusstring- Lifecycle status. Move a draft to complete to submit (Greenhouse stamps submitted_at on transition). Site Admins can edit submitted scorecards at any time; Job Admins are bound by the organization's scorecard-edit window. One of: draft, complete. Example: draftone of
draftcomplete
greenhouse_application_deletePermanently delete a Greenhouse application with its interview stages, scorecards, rejection details and prospect details; the candidate is kept.DestructiveDelete Application
Permanently delete a Greenhouse application with its interview stages, scorecards, rejection details and prospect details; the candidate is kept. Returns the deleted application id and a confirmation message. Use this only to remove an application created in error. Use greenhouse_application_reject to record a rejection instead. Requires an application_id from greenhouse_applications_list.
- Idempotent
Inputs
application_idintegerrequired- Id of the application to delete. Get it from greenhouse_applications_list. Example: 4012345002
greenhouse_applied_candidate_tag_deleteRemove one tag from one Greenhouse candidate.DestructiveRemove Tag from Candidate
Remove one tag from one Greenhouse candidate. Returns the deleted applied-tag id and a confirmation message. Use this to untag a candidate. Use greenhouse_candidate_tag_delete to delete the tag for everyone. Requires an applied-tag row id from greenhouse_applied_candidate_tags_list, not the candidate or tag id.
- Idempotent
Inputs
applied_candidate_tag_idintegerrequired- Id of the applied candidate tag row to delete. Get it from greenhouse_applied_candidate_tags_list. Example: 4012345002
greenhouse_attachment_deletePermanently remove a file attachment from a Greenhouse application.DestructiveDelete Attachment
Permanently remove a file attachment from a Greenhouse application. Returns the deleted attachment id and a confirmation message. Use this to remove a wrong or outdated file. Use greenhouse_attachment_create to add a replacement. Requires an attachment id from greenhouse_attachments_list.
- Idempotent
Inputs
attachment_idintegerrequired- Id of the attachment to delete. Get it from greenhouse_attachments_list. Example: 4012345002
greenhouse_candidate_deletePermanently delete a Greenhouse candidate and all of their applications, attachments, scorecards and notes.DestructiveDelete Candidate
Permanently delete a Greenhouse candidate and all of their applications, attachments, scorecards and notes. Returns the deleted candidate id and a confirmation message. Use this only to remove a record for good. Use greenhouse_application_reject to close out a candidacy and keep history. Requires a candidate_id from greenhouse_candidates_list.
- Idempotent
Inputs
candidate_idintegerrequired- Id of the candidate to delete. Get it from greenhouse_candidates_list. Example: 4012345002
greenhouse_candidate_education_deleteDelete an education entry from a Greenhouse candidate profile.DestructiveDelete Candidate Education
Delete an education entry from a Greenhouse candidate profile. Returns the deleted entry id and a confirmation message. Use this to remove a wrong education entry. Use greenhouse_candidate_education_create to add a corrected one. Requires an education id from greenhouse_candidate_educations_list.
- Idempotent
Inputs
candidate_education_idintegerrequired- Id of the education entry to delete. Get it from greenhouse_candidate_educations_list. Example: 4012345002
greenhouse_candidate_employment_deleteDelete a work history entry from a Greenhouse candidate profile.DestructiveDelete Candidate Employment
Delete a work history entry from a Greenhouse candidate profile. Returns the deleted entry id and a confirmation message. Use this to remove a wrong employment entry. Use greenhouse_candidate_employment_create to add a corrected one. Requires an employment id from greenhouse_candidate_employments_list.
- Idempotent
Inputs
candidate_employment_idintegerrequired- Id of the employment entry to delete. Get it from greenhouse_candidate_employments_list. Example: 4012345002
greenhouse_candidate_tag_deleteDelete a tag from the organization's Greenhouse candidate tag dictionary.DestructiveDelete Candidate Tag
Delete a tag from the organization's Greenhouse candidate tag dictionary. Returns the deleted tag id and a confirmation message. Use this to retire a tag for everyone. Use greenhouse_applied_candidate_tag_delete to take a tag off one candidate. Requires a candidate tag id from greenhouse_candidate_tags_list.
- Idempotent
Inputs
candidate_tag_idintegerrequired- Id of the candidate tag to delete. Get it from greenhouse_candidate_tags_list. Example: 4012345002
greenhouse_interview_deleteDelete a scheduled interview from a Greenhouse application.DestructiveDelete Interview
Delete a scheduled interview from a Greenhouse application. Returns the deleted interview id and a confirmation message. Use this when an interview is cancelled. Use greenhouse_interview_update to reschedule it instead. Requires an interview id from greenhouse_interviews_list.
- Idempotent
Inputs
interview_idintegerrequired- Id of the interview to delete. Get it from greenhouse_interviews_list. Example: 4012345002
greenhouse_job_hiring_manager_deleteRemove a hiring manager assignment from a Greenhouse job; the user account is not affected.DestructiveRemove Job Hiring Manager
Remove a hiring manager assignment from a Greenhouse job; the user account is not affected. Returns the deleted assignment id and a confirmation message. Use this to take a hiring manager off a job. Use greenhouse_job_owner_delete for recruiters, coordinators and sourcers. Requires an assignment id from greenhouse_job_hiring_managers_list.
- Idempotent
Inputs
job_hiring_manager_idintegerrequired- Id of the hiring manager assignment to delete. Get it from greenhouse_job_hiring_managers_list. Example: 4012345002
greenhouse_job_note_deletePermanently delete a note from a Greenhouse job.DestructiveDelete Job Note
Permanently delete a note from a Greenhouse job. Returns the deleted note id and a confirmation message. Use this to remove a job note. Use greenhouse_job_note_update to edit it instead. Requires a job note id from greenhouse_job_notes_list.
- Idempotent
Inputs
job_note_idintegerrequired- Id of the job note to delete. Get it from greenhouse_job_notes_list. Example: 4012345002
greenhouse_job_owner_deleteRemove a recruiter, coordinator or sourcer assignment from a Greenhouse job; the user account is not affected.DestructiveRemove Job Owner
Remove a recruiter, coordinator or sourcer assignment from a Greenhouse job; the user account is not affected. Returns the deleted assignment id and a confirmation message. Use this to take someone off a job's recruiting team. Use greenhouse_job_hiring_manager_delete for hiring managers. Requires an assignment id from greenhouse_job_owners_list.
- Idempotent
Inputs
job_owner_idintegerrequired- Id of the job owner assignment to delete. Get it from greenhouse_job_owners_list. Example: 4012345002
greenhouse_opening_deletePermanently delete an opening from a Greenhouse job.DestructiveDelete Opening
Permanently delete an opening from a Greenhouse job. Returns the deleted opening id and a confirmation message. Use this to remove headcount created in error. Use greenhouse_opening_update with status closed to close an opening and keep its history. Requires an opening id from greenhouse_openings_list.
- Idempotent
Inputs
opening_record_idintegerrequired- Id of the opening to delete. Get it from greenhouse_openings_list. Example: 4012345002
No tools match.