Read candidates, jobs, and scorecards from Greenhouse in Guild agents
Connect Guild agents to the Greenhouse Harvest v3 API with a client ID and secret or an access token, to read candidates, jobs, and scorecards and add notes.
Integrations · Greenhouse
Guild agents read Greenhouse candidates, applications, jobs, openings, interviews, and scorecards, and add notes to candidates through the Harvest v3 API. Guild stores your Greenhouse credentials and injects them server-side, so agent code never sees them. Credential policies decide which Greenhouse operations each agent may call.
Book a demo
See how teams govern agents that use Greenhouse.
Talk to sales
Get access to Guild, then connect Greenhouse to your first agent.
Both Greenhouse integrations call Harvest v3 at https://harvest.greenhouse.io/v3, Greenhouse’s replacement for the retired v1 and v2 APIs. Tools cover candidates, applications, jobs, openings, offices, departments, interviews, scorecards, users and their job permissions, custom fields, approval flows, notes, attachments, and tags.
Harvest v3 authenticates with short-lived OAuth access tokens issued by the client credentials grant. The two integrations have the same tools and differ in who gets those tokens.
Greenhouse (OAuth)
Greenhouse (access token)
Integration
guildai~greenhouse-oauth2
guildai~greenhouse
You connect
A Harvest v3 client ID and client secret
An access token you requested yourself
Token refresh
Guild requests a new token before the current one expires
None. Requests fail when the token expires, until you reconnect a new one
Tools
greenhouse_oauth2_ prefix, from GreenhouseOauth2Tools
greenhouse_ prefix, from GreenhouseTools
Use for
Agents in production, including ones that run unattended
A quick test with a token you already have
Use Greenhouse (OAuth) unless you have a reason not to.
In Greenhouse, create a Harvest v3 custom integration and note its client ID and client secret. Grant only the permissions the agent needs.
2
Connect them in Guild
Go to Access & setup > Credentials, click Connect, select greenhouse-oauth2, and enter the Client ID and Client Secret. Guild exchanges them for an access token at https://auth.greenhouse.io/token and keeps it current.
3
Import the tools you need
Import GreenhouseOauth2Tools from @guildai-services/guildai~greenhouse-oauth2 and use pick() to give the agent only the tools its job needs.
Greenhouse holds candidate personal data, and the integration can also edit and delete applications, users, and permissions. Guild keeps your credentials server-side and checks every request against your credential policies. A sourcing agent can read candidates and add notes while a DENY rule blocks every delete and user change.
Header: Guild sends the token as Authorization: Bearer <token>
Request the token yourself with the client credentials grant, then select greenhouse under Access & setup > Credentials and paste access_token from the response into API Key:
When the token expires, requests return 401 until you request a new one and reconnect it.See Credentials for workspace, member, and agent-scoped credentials.
import { GreenhouseOauth2Tools } from "@guildai-services/guildai~greenhouse-oauth2"import { llmAgent, pick } from "@guildai/agents-sdk"export default llmAgent({ systemPrompt: "You summarize interview feedback for each open application on a job.", tools: { ...pick(GreenhouseOauth2Tools, [ "greenhouse_oauth2_get_jobs", "greenhouse_oauth2_get_applications", "greenhouse_oauth2_get_scorecards", "greenhouse_oauth2_post_notes", ]), },})
The integration has more than 170 tools, so pick the ones the agent needs rather than spreading the whole set. With the access-token integration, import GreenhouseTools from @guildai-services/guildai~greenhouse and drop oauth2_ from each tool name, such as greenhouse_get_jobs.
Asynchronously archive many options at once by id.
greenhouse_oauth2_delete_custom_field_options_id
Archive a custom field option so it can no longer be selected on new records.
greenhouse_oauth2_delete_custom_fields_id
Permanently delete a custom field from your organization’s dictionary, along with all stored values on parent records (jobs, offers, candidates, applications, etc.) and any associated…
Unassign a hiring manager from a job by deleting the join row.
greenhouse_oauth2_delete_job_notes_id
Permanently delete a job note.
greenhouse_oauth2_delete_job_owners_id
Remove a user from the hiring team in one role by deleting the join row.
greenhouse_oauth2_delete_job_post_locations_id
Detach a single location from a job post.
greenhouse_oauth2_delete_openings_bulk
Asynchronously remove many openings in a single call.
greenhouse_oauth2_delete_openings_id
Permanently remove an opening from its job.
greenhouse_oauth2_delete_user_job_permissions_id
Revoke a single user job permission by id, removing that user’s Job Admin role on the job.
greenhouse_oauth2_get_ai_opt_out_statuses
A candidate’s decision to opt out of AI-assisted review (Talent Matching) for a specific job.
greenhouse_oauth2_get_applications
Applications represent a candidate’s journey on a specific job — the bridge between a candidate (person) and a job.
greenhouse_oauth2_get_application_stages
Application stages are the rows that make up a candidate’s stage history on an application — one row per interview stage the application has occupied, with entered_at and exited_at timestamps.
greenhouse_oauth2_get_applied_candidate_tags
Applied candidate tags are the join rows between candidates and the organization’s candidate-tag dictionary — one row per (candidate, tag) pair.
greenhouse_oauth2_get_approval_flows
Approval flows are the multi-step approval definitions attached to a job or to a candidate’s offer.
greenhouse_oauth2_get_approver_groups
Approver groups are the ordered tiers of approvers inside a single approval flow on a job or offer.
greenhouse_oauth2_get_approvers
Approvers are the individual users assigned to approve a job, offer, or other approvable resource.
greenhouse_oauth2_get_attachments
Attachments are files associated with an application — resumes, cover letters, take-home tests, offer documents, e-signed agreements, and other supporting documents.
greenhouse_oauth2_get_blocked_spam_sources
Lists the IP addresses, CIDR ranges, email addresses, and email domains the organization has blocked from submitting applications.
greenhouse_oauth2_get_bulk_requests
Bulk requests track the asynchronous bulk operations submitted to Harvest V3.
Retrieve a single bulk request, including the per-row success and failure result files.
greenhouse_oauth2_get_candidate_attribute_types
Candidate attribute types are the structured attribute dictionary on a job — the per-job catalogue of evaluable traits (e.g. JavaScript, Leadership, Years of experience) that get rated on…
greenhouse_oauth2_get_candidate_educations
Candidate educations are the school/degree/discipline entries on a candidate’s profile — one row per education entry.
greenhouse_oauth2_get_candidate_employments
Candidate employments are the work history entries on a candidate’s profile — one row per employer/title the candidate has held.
greenhouse_oauth2_get_candidates
Candidates are the people your organization is recruiting — both active applicants and prospects.
greenhouse_oauth2_get_candidate_tags
Candidate tags are the org-wide library of tag names available to apply to candidates (e.g. engineering, referral, 2026-grad).
greenhouse_oauth2_get_close_reasons
Close reasons are the organization-defined dictionary of outcomes recorded when an opening is closed (e.g. Hire - New Headcount, Hire - Backfill, On Hold, Not Filling).
greenhouse_oauth2_get_custom_field_departments
A custom_field_department restricts a custom field’s visibility to a single department, so the field only appears on jobs, offers, or candidates whose department matches.
greenhouse_oauth2_get_custom_field_offices
A custom_field_office restricts a custom field’s visibility to a single office, so the field only appears on jobs, openings, or offers whose office matches.
greenhouse_oauth2_get_custom_field_options
Custom field options are the selectable values on a single_select or multi_select custom field — each row belongs to exactly one custom field via custom_field_id.
greenhouse_oauth2_get_custom_fields
Custom fields are the org-defined dictionary of structured data your organization layers onto core resources — jobs, offers, openings, candidates, applications, and users.
greenhouse_oauth2_get_default_interviewers
Default interviewers are the users pre-selected as the interview panel for a specific stage on a job.
greenhouse_oauth2_get_demographic_answer_options
Demographic answer options are the selectable choices on a demographic_question.
greenhouse_oauth2_get_demographic_answers
Demographic answers are individual applicant submissions to the organization’s voluntary demographic questions on a job post — distinct from the federally-mandated EEOC questionnaire, which has its…
greenhouse_oauth2_get_demographic_questions
Demographic questions are the voluntary self-identification prompts applicants see on job posts and candidate surveys (separate from the EEOC questionnaire, which carries its own legally-mandated…
greenhouse_oauth2_get_demographic_question_sets
Demographic question sets are named groupings of demographic_questions an organization attaches to a job post or candidate survey to collect self-reported applicant demographic data (e.g. for DE&I…
greenhouse_oauth2_get_departments
Departments are the organizational units jobs are assigned to (e.g. Engineering, Marketing).
greenhouse_oauth2_get_eeoc
EEOC responses capture a candidate’s voluntary self-identification of race, gender, veteran status, and disability status, collected via the federally-approved Equal Employment Opportunity Commission…
greenhouse_oauth2_get_email_templates
Email templates are reusable subject/body pairs your organization uses to communicate with candidates, prospects, and the hiring team.
greenhouse_oauth2_get_focus_candidate_attributes
Focus candidate attributes are the subset of a job’s job_candidate_attributes that an individual interview kit elevates as focus areas — the attributes Greenhouse highlights at the top of the…
greenhouse_oauth2_get_future_job_permissions
Future job permissions grant a user a Job Admin role on jobs that don’t exist yet — when a new job is created in the matching department and/or office, the permission automatically assigns the user…
greenhouse_oauth2_get_interviewers
Interviewers are the panel members on actual scheduled interviews — each row pairs one interview with one user (or, for external attendees, one email address).
greenhouse_oauth2_get_interviewer_tags
Interviewer tags are organization-defined labels assigned to interviewer users, such as “Bar Raiser,” “Diversity Trained,” or “Senior.” They are surfaced as Interviewer Groups in the Greenhouse UI…
greenhouse_oauth2_get_interview_kits
Interview kits are the per-job, per-slot evaluation packets interviewers see when conducting an interview — the instructions, exercises, scorecard questions, and focus attributes attached to one slot…
greenhouse_oauth2_get_interview_media
Interview media contains recordings and transcripts created by Greenhouse AI notetaking.
greenhouse_oauth2_get_interviews
Interviews are scheduled interview events on a candidate’s application — each row pairs an application with a slot on the job’s interview plan (the job_interview) and carries the start/end time…
greenhouse_oauth2_get_job_board_custom_locations
Job board custom locations are the curated list of location strings a site admin maintains for posting jobs to a given job board.
greenhouse_oauth2_get_job_boards
A job board is a destination an organization publishes job posts to — either the organization’s single internal board (visible only to signed-in employees) or one of its external boards (public…
greenhouse_oauth2_get_job_candidate_attributes
Job candidate attributes are the per-job instances of a job’s candidate_attribute_types — one row for each evaluable trait (e.g. JavaScript, Leadership) configured on a specific job.
greenhouse_oauth2_get_job_hiring_managers
Job hiring managers are users designated as hiring managers on a job — typically the subject-matter expert for the role who reviews candidates in the Hiring Manager Review stage and receives…
greenhouse_oauth2_get_job_interviews
Job interviews are the interview slots configured on a job’s interview plan — the template definitions that say, for example, “this job’s Onsite stage has a 30-minute recruiter chat, a 45-minute…
greenhouse_oauth2_get_job_interview_stages
Interview stages are the steps of a job’s interview plan — for example Application Review, Phone Screen, Onsite, and Offer.
greenhouse_oauth2_get_job_notes
Job notes are free-form, organization-internal notes attached to a job (the requisition).
greenhouse_oauth2_get_job_owners
Job owners are the recruiters, sourcers, and coordinators on a job’s hiring team — the users who own sourcing, recruiting, and scheduling work for the role.
greenhouse_oauth2_get_job_post_locations
Job post locations are the join rows that attach one or more locations to a job_post — a multi-location posting (e.g. San Francisco, Remote (US), New York on a single role) has one row per…
greenhouse_oauth2_get_job_posts
Job posts are the candidate-facing listings of a job.
Searchable locations are the individual geographic locations attached to a job post — one row per location, each with a formatted display string plus its component city, region (state/province)…
greenhouse_oauth2_get_jobs
Jobs are the open requisitions and hiring plans your organization is recruiting against.
greenhouse_oauth2_get_notes
List notes on candidate profiles, including logged emails and activity feed entries.
greenhouse_oauth2_get_offers
Offers are the formal job offers extended to a candidate’s application.
greenhouse_oauth2_get_offices
Offices are the organization’s recruiting locations (e.g. San Francisco, New York, Remote (US)) and the foundational scoping unit for jobs, candidates, custom-field visibility, and pay-range…
greenhouse_oauth2_get_openings
Openings are the individual headcount slots beneath a job — one opening per seat you intend to hire for.
greenhouse_oauth2_get_pay_input_ranges
Pay input ranges are the per-job-post minimum and maximum values for a pay component (e.g. base salary, bonus) referenced by a pay transparency rule.
greenhouse_oauth2_get_pay_inputs
Pay inputs are the individual compensation components (e.g. Base Salary, Sign-on Bonus, Equity) that make up a Greenhouse pay transparency rule.
greenhouse_oauth2_get_prospect_details
A prospect detail is the per-prospect record that captures where a candidate sits in the CRM: which prospect pool and stage they currently occupy, who owns them, and the department/office they are…
greenhouse_oauth2_get_prospect_pools
A prospect pool is an organization-defined collection of prospects (candidates not yet attached to a specific job), typically used to manage talent communities and sourcing pipelines.
greenhouse_oauth2_get_prospect_pool_stages
Prospect pool stages are the smaller buckets inside a prospect pool that recruiters use to track where each passive prospect sits in their nurture process — for example Not Reviewed, `In…
greenhouse_oauth2_get_referrers
Referrers are the people credited with bringing a candidate into the pipeline — typically employees making referrals, but also agency recruiters, LinkedIn recruiters, or any other party captured…
greenhouse_oauth2_get_rejection_details
Rejection details are the per-application rejection records — one row per rejected application, capturing who rejected it, when, why (the rejection reason), the linked rejection note, and any answers…
greenhouse_oauth2_get_rejection_reasons
Rejection reasons are the organization-defined dictionary of outcomes recorded when an application is rejected (e.g. Not a cultural fit, Lacking skill(s)/qualification(s), Wasn't interested…
Scorecard candidate attributes are the per-scorecard ratings an interviewer captured on each focus attribute — what they thought of this candidate on each attribute on this scorecard.
Scorecard question answer options are the join rows between a scorecard question answer and the option(s) selected for it — one row per (scorecard_question_answer_id…
greenhouse_oauth2_get_scorecard_question_answers
A scorecard question answer is one interviewer’s response to a single question on a scorecard.
Scorecard question candidate attributes are the join that tells an interviewer which focus attributes a given scorecard question is asking them to assess.
greenhouse_oauth2_get_scorecard_question_options
Scorecard question options are the multiple-choice values shown to interviewers for single_select and multi_selectscorecard_questions.
greenhouse_oauth2_get_scorecard_questions
Scorecard questions are the prompts configured on an interview_kit that interviewers answer when submitting a scorecard.
greenhouse_oauth2_get_scorecards
Scorecards are the per-interview evaluations that interviewers fill out — overall recommendation, key takeaways, private and public notes, and ratings on the interview kit’s focus attributes.
greenhouse_oauth2_get_sources
Sources are the organization-defined dictionary of channels through which candidates enter the pipeline — job boards (e.g. LinkedIn, Indeed), agencies, referrals, internal applicants, prospecting…
greenhouse_oauth2_get_tracking_links
Tracking links are unique short URLs (e.g. https://grnh.se/) that an organization shares to attribute candidates to a source — campaign URLs, referral links, employee outreach, social posts, and…
greenhouse_oauth2_get_user_emails
User emails are the email addresses attached to a Greenhouse user.
greenhouse_oauth2_get_user_job_permissions
User job permissions are the per-user, per-job access grants that pair a user with a Job Admin role on a specific job.
greenhouse_oauth2_get_user_roles
User roles are the organization-wide dictionary of access levels a user can hold — the categories themselves, not the per-user assignments.
greenhouse_oauth2_get_users
Users are the Greenhouse accounts inside your organization — recruiters, hiring managers, interviewers, coordinators, sourcers, and site admins.
greenhouse_oauth2_patch_applications_id
Patch attribution and metadata fields on an existing application (source, referrer, recruiter, coordinator, prospect pool/stage, rejection date, custom fields).
greenhouse_oauth2_patch_approval_flows_id
Toggle whether an existing approval flow is sequential (approver groups resolve one at a time in sort_order) or parallel (all groups activate at once).
greenhouse_oauth2_patch_blocked_spam_sources_bulk
Updates the note on multiple blocked spam sources in a single request.
greenhouse_oauth2_patch_blocked_spam_sources_id
Updates the note on a blocked spam source. source_type and value are immutable on this endpoint — to change either, delete the entry and create a new one.
greenhouse_oauth2_patch_candidates_id
Patch an existing candidate’s profile fields.
greenhouse_oauth2_patch_candidates_id_anonymize
Anonymize selected categories of personally identifiable data on a candidate (for GDPR, CCPA, or other right-to-be-forgotten requests).
greenhouse_oauth2_patch_custom_field_options_bulk
Asynchronously edit the label, sort order, or external id of many options in one call — most often used to reorder a dropdown after an upstream HRIS reshuffle or to rename options en masse.
greenhouse_oauth2_patch_custom_field_options_id
Edit the display label, sort order, or external id of an existing custom field option.
greenhouse_oauth2_patch_custom_fields_id
Edit the definition of an existing custom field. field_type and value_type are immutable — to change either, create a new field.
greenhouse_oauth2_patch_departments_bulk
Asynchronously update many departments in a single request.
greenhouse_oauth2_patch_departments_id
Update an existing department’s name, external_id, or position in the department tree.
greenhouse_oauth2_patch_interviews_id
Patch a scheduled interview’s time, location, video conferencing link, external calendar event id, or interviewer panel.
greenhouse_oauth2_patch_job_notes_id
Update an existing job note.
greenhouse_oauth2_patch_job_posts_id
Edit a job post in place — change its public title, replace its HTML body, or transition its publication status between draft and live.
greenhouse_oauth2_patch_jobs_id
Patch an existing job’s editable fields.
greenhouse_oauth2_patch_offers_id
Patch fields on an existing offer.
greenhouse_oauth2_patch_offices_bulk
Update up to the bulk-endpoint cap of offices in a single request.
greenhouse_oauth2_patch_offices_id
Update an existing office.
greenhouse_oauth2_patch_openings_bulk
Asynchronously patch many openings in a single call, commonly for HRIS integrations that close batches of headcount with status: "closed" and close_reason_id, or reconcile partner opening_id…
greenhouse_oauth2_patch_openings_id
Patch an existing opening’s editable fields, or change its status.
greenhouse_oauth2_patch_rejection_details_id
Patch the rejection reason or rejection question custom field answers on a rejected application without changing its rejected_at timestamp.
Promote a prospect application to a candidate application on a specific job. job_id is required and the prospect must already be associated with that job (or attached at the prospect pool level).
greenhouse_oauth2_post_applications_id_hire
Mark an application as hired and close out the matching opening on the job.
greenhouse_oauth2_post_applications_id_move
Advance the candidate to a new interview stage. from_stage_id is required and must match the candidate’s current stage — it acts as a guard against stale move requests.
greenhouse_oauth2_post_applications_id_reject
Reject an application and record the reason. rejection_reason_id is required (look up valid reasons via GET /v3/rejection_reasons); optional notes capture context on the rejection.
greenhouse_oauth2_post_applications_id_unreject
Reverse a rejection, putting the application back into the in-process state on the stage it was rejected from.
greenhouse_oauth2_post_applied_candidate_tags
Apply an existing tag to a candidate.
greenhouse_oauth2_post_approval_flows
Create a multi-step approval flow on a job (and optionally a specific offer), seeded with the supplied approver groups.
Start an existing pending approval flow by emailing its initial approver(s) and recording who requested the approvals.
greenhouse_oauth2_post_attachments
Attach a file to an existing application.
greenhouse_oauth2_post_blocked_spam_sources
Adds a new IP address, CIDR range, email address, or email domain to the organization’s spam blocklist.
greenhouse_oauth2_post_blocked_spam_sources_bulk
Adds multiple blocked spam sources in a single request, typically used to sync the blocklist from an external security tool.
greenhouse_oauth2_post_candidate_educations
Add a new education entry to a candidate’s profile. candidate_id is required; school, degree, and discipline are optional but must reference existing custom-field option ids (look these up via `GET…
greenhouse_oauth2_post_candidate_employments
Add a new work history entry to a candidate’s profile. candidate_id, company_name, title, and start_date are required; company_name and title are free-text strings (no custom-field option…
greenhouse_oauth2_post_candidates
Create a new candidate profile in your organization. first_name and last_name are required; all other profile fields are optional.
greenhouse_oauth2_post_candidates_bulk
Asynchronously create many candidate profiles in a single call, typically for HRIS sync workflows that create a batch of candidates at once.
greenhouse_oauth2_post_candidates_id_merge
Merge two candidate profiles by collapsing the candidate identified by secondary_candidate_id into the candidate at {id}.
greenhouse_oauth2_post_candidate_tags
Add a new tag to your organization’s candidate-tag dictionary. name is required and must be unique within the organization (case sensitive); creating a tag with an existing name returns a 422.
greenhouse_oauth2_post_custom_field_departments
Restrict a custom field’s visibility to one additional department.
greenhouse_oauth2_post_custom_field_offices
Restrict a custom field’s visibility to one additional office.
greenhouse_oauth2_post_custom_field_options
Add a new selectable value to a single_select or multi_select custom field.
greenhouse_oauth2_post_custom_field_options_bulk
Asynchronously add many options at once, typically for HRIS sync workflows that replace or extend a dropdown’s option set in a single pass.
greenhouse_oauth2_post_custom_fields
Add a new custom field to your organization’s dictionary. name, field_type, and value_type are required.
greenhouse_oauth2_post_departments
Create a department in the caller’s organization.
greenhouse_oauth2_post_future_job_permissions
Grant a user a Job Admin role on future jobs matching an optional department and/or office scope.
greenhouse_oauth2_post_interviews
Schedule an interview against a candidate’s application at a specific slot on the job’s interview plan. application_id, job_interview_id (the interview-plan slot), starts_at, ends_at, and…
greenhouse_oauth2_post_job_hiring_managers
Assign a user as a hiring manager on a job.
greenhouse_oauth2_post_job_notes
Create a free-form note attached to a job.
greenhouse_oauth2_post_job_owners
Add a user to a job’s hiring team as a recruiter, sourcer, or coordinator.
greenhouse_oauth2_post_job_post_locations
Attach a location to an existing job_post.
greenhouse_oauth2_post_job_posts
Create a new job post by duplicating an existing one.
greenhouse_oauth2_post_jobs
Create a new job from an existing template. template_job_id and number_of_openings are required; the template supplies the interview plan, scorecards, hiring team, and approval workflow, since…
greenhouse_oauth2_post_jobs_bulk
Asynchronously create many jobs in a single call, typically for HRIS sync workflows that open a batch of requisitions at once.
greenhouse_oauth2_post_notes
Create a candidate note, log an email, or record an activity-feed entry on a candidate. note_type selects which: NOTE posts to the Notes tab, EMAIL logs an email into the activity feed (and…
greenhouse_oauth2_post_offers
Create a new offer on an existing application. application_id is always required; starts_on and custom_fields (compensation components plus any offer custom fields configured on the hiring…
greenhouse_oauth2_post_offices
Create a new office for the organization.
greenhouse_oauth2_post_openings
Add a new headcount slot to an existing job. job_id is required; opening_id is an optional partner-supplied external identifier (e.g. an HRIS or ATS position id) and custom_fields set values on…
greenhouse_oauth2_post_openings_bulk
Asynchronously add many openings across one or more jobs in a single call, typically for HRIS sync workflows that open or extend headcount on a batch of requisitions.
Select options for a scorecard question answer. Deprecated; prefer updating the scorecard.
greenhouse_oauth2_post_scorecard_question_answers
Add an answer to a scorecard. Deprecated; prefer updating the scorecard.
greenhouse_oauth2_post_scorecards
Create a scorecard for a given interview kit on a given application. interview_kit_id, interviewer_id, interviewed_at, application_id, and submitter_id are required; the kit must belong to…
greenhouse_oauth2_post_user_emails
Attach an additional email address to a Greenhouse user — the V3 replacement for V1 POST /users/{id}/email_addresses.
greenhouse_oauth2_post_user_job_permissions
Grant a user a Job Admin role on a single job.
greenhouse_oauth2_post_users
Create a new Greenhouse user in your organization. first_name, last_name, and primary_email are required; the user is created with the Basic permission level and no job assignments.
greenhouse_oauth2_post_users_activate_bulk
Reactivate up to the bulk-endpoint cap of users in a single request.
greenhouse_oauth2_post_users_bulk
Create up to the bulk-endpoint cap of users in a single request.
greenhouse_oauth2_post_users_deactivate_bulk
Deactivate up to the bulk-endpoint cap of users in a single request.
greenhouse_oauth2_post_users_id_activate
Reactivate a previously deactivated user so they can sign in to Greenhouse and be assigned to new jobs again.
Wholesale-replace the ordered tiers of approvers on an existing approval flow — the V3 equivalent of rebuilding the flow’s structure from an external HRIS.
No. Both integrations call Harvest v3 only. Greenhouse retired v1 and v2 on August 31, 2026.
Why does the agent start getting 401 errors?
With greenhouse-oauth2, check that the client ID and secret are still valid in Greenhouse, then reconnect them. With greenhouse, the access token expired: request a new one and reconnect it, or switch to greenhouse-oauth2.
Can a new application trigger a Guild agent?
Not yet. Guild doesn’t receive Greenhouse webhooks, so you can’t create an event trigger for Greenhouse. Run the agent on a schedule instead.
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"Guild","description":"Guild is the control plane for AI agents: build, run, and manage agents across workspaces, trigger them from events, schedules, or API calls, and hold conversations with them programmatically.","colors":{"primary":"#ff5500","light":"#ff5500","dark":"#ff5500"},"logo":{"light":"https://mintcdn.com/guildai/x-xVeOd53CpYbehm/logo/light.svg?fit=max\u0026auto=format\u0026n=x-xVeOd53CpYbehm\u0026q=85\u0026s=21393c9a072674c192091492cc76f441","dark":"https://mintcdn.com/guildai/x-xVeOd53CpYbehm/logo/dark.svg?fit=max\u0026auto=format\u0026n=x-xVeOd53CpYbehm\u0026q=85\u0026s=d6acfb4e042a02c7229b6dea41c1a957"},"favicon":{"light":"https://mintcdn.com/guildai/bdwyr8JP4_t-g2mL/favicon-tile-light.svg?fit=max\u0026auto=format\u0026n=bdwyr8JP4_t-g2mL\u0026q=85\u0026s=73d1ea692ac79392f47f8b39f0c99cc7","dark":"https://mintcdn.com/guildai/bdwyr8JP4_t-g2mL/favicon-tile-dark.svg?fit=max\u0026auto=format\u0026n=bdwyr8JP4_t-g2mL\u0026q=85\u0026s=2e6fbb5bd798a31616692175082e7681"},"appearance":{"default":"dark"},"background":{"color":{"light":"#fafafa","dark":"#191919"}},"navbar":{"links":[{"href":"https://guild.ai","label":"guild.ai"}],"primary":{"type":"button","label":"Sign in","href":"https://app.guild.ai"}},"footer":{"socials":{"github":"https://github.com/guildaidev","discord":"https://discord.gg/guild-ai"},"links":[{"header":"Company","items":[{"label":"About","href":"https://www.guild.ai/about"},{"label":"Contact","href":"https://www.guild.ai/contact"},{"label":"Privacy policy","href":"https://www.guild.ai/privacy-policy"},{"label":"Terms","href":"https://www.guild.ai/terms"}]}]},"seo":{"metatags":{"og:site_name":"Guild Docs"},"organization":{"id":"https://www.guild.ai/#organization","name":"Guild","legalName":"Guild.ai, Inc.","url":"https://www.guild.ai/","sameAs":["https://www.linkedin.com/company/guild-ai-group","https://x.com/GuildAI","https://www.crunchbase.com/organization/guild-ai-86ce","https://www.threads.com/@guild.ai","https://reddit.com/r/guildai","https://youtube.com/@guild-ai","https://www.wikidata.org/wiki/Q141717471","https://github.com/guildaidev","https://discord.gg/guild-ai","https://instagram.com/guild.ai"]}},"fonts":{"family":"Geist"},"errors":{"404":{"redirect":false,"title":"Page not found","description":"That page doesn't exist. Try the [homepage](/), the full [documentation index](/llms.txt), or the [API reference](/api-reference/introduction)."}},"contextual":{"options":["copy","chatgpt","claude","mcp","cursor","vscode","download-spec"],"display":"header"},"metadata":{"timestamp":true},"markdown":{"instructions":["To act on a user's behalf in Guild, use the Guild REST API at https://api.guild.ai/v1.","The OpenAPI spec is unauthenticated: https://docs.guild.ai/openapi.json (or openapi.yaml).","Authenticate with an account API key, sent as HTTP Basic (key id as username, secret as password) or as `Authorization: Bearer \u003capi_key_id>:\u003capi_key_secret>`. See https://docs.guild.ai/api-reference/introduction#authentication.","To run one agent on demand without account-wide access, use an API trigger instead: https://docs.guild.ai/platform/api-triggers.","To act on Guild from an MCP client, connect to https://api.guild.ai/mcp (OAuth) or run `guild mcp` locally. Setup: https://docs.guild.ai/api-reference/mcp.","To search these docs from an MCP client, connect to https://docs.guild.ai/mcp. The full page index is https://docs.guild.ai/llms.txt."]},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"guildai","hasAudioNarration":false,"actualSubdomain":"guildai","customDomains":["docs.guild.ai"],"gitSource":{"type":"github","owner":"guildaidev","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aebda966f4cf45f41562d05","collectionId":"0c9363a5-ab79-4ef7-9d4a-3ca98fdd3218","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aebda966f4cf45f41562d05"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aebdc4ac42c650b17a2f968","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"API Reference","count":89},{"language":"default","tag":"Guides","count":86},{"language":"default","tag":"Integrations","count":57},{"language":"default","tag":"Platform","count":54},{"language":"default","tag":"CLI","count":48},{"language":"default","tag":"Agents","count":34},{"language":"default","tag":"Workspaces","count":25},{"language":"default","tag":"Access \u0026 setup","count":22},{"language":"default","tag":"Commands","count":18},{"language":"default","tag":"Triggers","count":18}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":":root{--gray-50: 250 250 250;--gray-100: 245 245 245;--gray-200: 229 229 229;--gray-300: 212 212 212;--gray-400: 163 163 163;--gray-500: 115 115 115;--gray-600: 82 82 82;--gray-700: 64 64 64;--gray-800: 38 38 38;--gray-900: 23 23 23;--gray-950: 10 10 10}:root:not(.dark) :not(pre)>code{background-color:rgba(0, 0, 0, 0.04)!important;color:rgb(var(--gray-700))!important}.dark :not(pre)>code{background-color:rgba(255, 255, 255, 0.08)!important;color:rgb(var(--gray-300))!important}:root{--guild-accent: #ff5500;--guild-hairline: #eeeeed;--guild-muted: #746f6c}.dark{--guild-hairline: rgba(255, 255, 255, 0.12);--guild-muted: rgb(var(--gray-400))}.guild-logo{display:flex;align-items:center;justify-content:center;width:48px;height:48px;flex:none;border:1px solid var(--guild-hairline);border-radius:12px;margin:0 0 1.5rem}*:has(>.mdx-content>.guild-lockup:first-child){position:relative}*:has(>.mdx-content>.guild-lockup:first-child)>header{padding-top:4rem}.mdx-content:has(>.guild-lockup:first-child){position:static}.mdx-content>.guild-lockup:first-child{position:absolute;top:1.5rem;inset-inline-start:1.5rem;margin:0;display:flex;align-items:center;gap:0.875rem}.guild-lockup .guild-logo{margin:0}.guild-eyebrow{display:inline-flex;align-items:center;gap:0.5rem;font-size:0.8125rem;line-height:1;letter-spacing:0.01em;color:var(--guild-muted)}.guild-eyebrow::before{content:\"\";width:4px;height:4px;flex:none;background:var(--guild-accent)}.guild-logo svg,.guild-logo img{display:block;width:20px;height:20px}.integration-cards [data-component-part=\"card-content-container\"],.integration-cards [data-component-part=\"card-content-container\"] div.w-full{display:flex;flex-direction:column}.integration-cards [data-component-part=\"card-content-container\"]{gap:1rem}.integration-cards div.w-full{gap:0.25rem}.integration-cards [data-component-part=\"card-title\"],.integration-cards [data-component-part=\"card-content\"]{margin-top:0}.integration-cards [data-component-part=\"card-icon\"]{display:flex;align-items:center;width:auto;height:1.5rem}.integration-cards [data-component-part=\"card-icon\"]>img{width:auto!important;height:auto!important;max-width:none;filter:brightness(0)}.dark .integration-cards [data-component-part=\"card-icon\"]>img{filter:brightness(0) invert(1)}img[src*=\"/images/integration_marks/\"]{object-fit:contain;filter:brightness(0)}.dark img[src*=\"/images/integration_marks/\"]{filter:brightness(0) invert(1)}#sidebar-content img[src*=\"/images/integration_marks/\"]{filter:brightness(0) invert(0.64)}.dark #sidebar-content img[src*=\"/images/integration_marks/\"]{filter:brightness(0) invert(0.45)}.integration-cards [data-component-part=\"card-icon\"]>svg{width:1.25rem!important;height:1.25rem!important;background-color:currentColor!important}"}],"page":{"pagePath":"integrations/greenhouse","slug":"/integrations/greenhouse","pageMetadata":{"title":"Read candidates, jobs, and scorecards from Greenhouse in Guild agents","sidebarTitle":"Greenhouse","icon":"/images/integration_marks/greenhouse.svg","description":"Connect Guild agents to the Greenhouse Harvest v3 API with a client ID and secret or an access token, to read candidates, jobs, and scorecards and add notes.","keywords":["greenhouse guild integration","greenhouse harvest v3 api agent","greenhouse recruiting agent","greenhouse oauth client credentials","guild recruiting automation"],"related":["/integrations/ashby","/platform/credential-policies","/platform/credentials"],"href":"/integrations/greenhouse"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Connect Guild agents to the Greenhouse Harvest v3 API with a client ID and secret or an access token, to read candidates, jobs, and scorecards and add notes.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Card,CardGroup,CodeBlock,Heading,Step,Steps,Table}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsx(`div`,{className:`guild-lockup`,children:_jsx(`span`,{className:`guild-eyebrow`,children:`Integrations · Greenhouse`})}),`\n`,_jsx(_components.p,{children:`Guild agents read Greenhouse candidates, applications, jobs, openings, interviews, and scorecards, and add notes to candidates through the Harvest v3 API. Guild stores your Greenhouse credentials and injects them server-side, so agent code never sees them. Credential policies decide which Greenhouse operations each agent may call.`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Book a demo`,icon:`calendar`,href:`https://guild-ai.cal.com/gtm/meeting-with-guild.ai`,children:_jsx(_components.p,{children:`See how teams govern agents that use Greenhouse.`})}),_jsx(Card,{title:`Talk to sales`,icon:`comments`,href:`https://guild.ai/talk-to-sales`,children:_jsx(_components.p,{children:`Get access to Guild, then connect Greenhouse to your first agent.`})})]}),`\n`,_jsx(Heading,{level:`2`,id:`what-the-greenhouse-integration-exposes`,children:`What the Greenhouse integration exposes`}),`\n`,_jsxs(_components.p,{children:[`Both Greenhouse integrations call Harvest v3 at `,_jsx(_components.code,{children:`https://harvest.greenhouse.io/v3`}),`, Greenhouse’s replacement for the retired v1 and v2 APIs. Tools cover candidates, applications, jobs, openings, offices, departments, interviews, scorecards, users and their job permissions, custom fields, approval flows, notes, attachments, and tags.`]}),`\n`,_jsx(Heading,{level:`2`,id:`choose-an-integration`,children:`Choose an integration`}),`\n`,_jsx(_components.p,{children:`Harvest v3 authenticates with short-lived OAuth access tokens issued by the client credentials grant. The two integrations have the same tools and differ in who gets those tokens.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{}),_jsx(_components.th,{children:`Greenhouse (OAuth)`}),_jsx(_components.th,{children:`Greenhouse (access token)`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Integration`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`guildai~greenhouse-oauth2`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`guildai~greenhouse`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`You connect`}),_jsx(_components.td,{children:`A Harvest v3 client ID and client secret`}),_jsx(_components.td,{children:`An access token you requested yourself`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Token refresh`}),_jsx(_components.td,{children:`Guild requests a new token before the current one expires`}),_jsx(_components.td,{children:`None. Requests fail when the token expires, until you reconnect a new one`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Tools`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`greenhouse_oauth2_`}),` prefix, from `,_jsx(_components.code,{children:`GreenhouseOauth2Tools`})]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`greenhouse_`}),` prefix, from `,_jsx(_components.code,{children:`GreenhouseTools`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Use for`}),_jsx(_components.td,{children:`Agents in production, including ones that run unattended`}),_jsx(_components.td,{children:`A quick test with a token you already have`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Use `,_jsx(_components.strong,{children:`Greenhouse (OAuth)`}),` unless you have a reason not to.`]}),`\n`,_jsx(Heading,{level:`2`,id:`how-it-works`,children:`How it works`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Create Harvest v3 credentials`,children:_jsx(_components.p,{children:`In Greenhouse, create a Harvest v3 custom integration and note its client ID and client secret. Grant only the permissions the agent needs.`})}),_jsx(Step,{title:`Connect them in Guild`,children:_jsxs(_components.p,{children:[`Go to `,_jsx(_components.strong,{children:`Access \u0026 setup > Credentials`}),`, click `,_jsx(_components.strong,{children:`Connect`}),`, select `,_jsx(_components.strong,{children:`greenhouse-oauth2`}),`, and enter the `,_jsx(_components.strong,{children:`Client ID`}),` and `,_jsx(_components.strong,{children:`Client Secret`}),`. Guild exchanges them for an access token at `,_jsx(_components.code,{children:`https://auth.greenhouse.io/token`}),` and keeps it current.`]})}),_jsx(Step,{title:`Import the tools you need`,children:_jsxs(_components.p,{children:[`Import `,_jsx(_components.code,{children:`GreenhouseOauth2Tools`}),` from `,_jsx(_components.code,{children:`@guildai-services/guildai~greenhouse-oauth2`}),` and use `,_jsx(_components.code,{children:`pick()`}),` to give the agent only the tools its job needs.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`why-greenhouse-access-needs-governing`,children:`Why Greenhouse access needs governing`}),`\n`,_jsxs(_components.p,{children:[`Greenhouse holds candidate personal data, and the integration can also edit and delete applications, users, and permissions. Guild keeps your credentials server-side and checks every request against your `,_jsx(_components.a,{href:`/platform/credential-policies`,children:`credential policies`}),`. A sourcing agent can read candidates and add notes while a DENY rule blocks every delete and user change.`]}),`\n`,_jsx(Heading,{level:`2`,id:`authentication`,children:`Authentication`}),`\n`,_jsx(Heading,{level:`3`,id:`greenhouse-oauth`,children:`Greenhouse (OAuth)`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Type:`}),` OAuth M2M, client credentials grant`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Token endpoint:`}),` `,_jsx(_components.code,{children:`https://auth.greenhouse.io/token`}),`, with the client ID and secret sent as HTTP Basic authentication`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Header:`}),` Guild sends the current access token as `,_jsx(_components.code,{children:`Authorization: Bearer \u003ctoken>`})]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`greenhouse-access-token`,children:`Greenhouse (access token)`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Type:`}),` API key`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Header:`}),` Guild sends the token as `,_jsx(_components.code,{children:`Authorization: Bearer \u003ctoken>`})]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Request the token yourself with the client credentials grant, then select `,_jsx(_components.strong,{children:`greenhouse`}),` under `,_jsx(_components.strong,{children:`Access \u0026 setup > Credentials`}),` and paste `,_jsx(_components.code,{children:`access_token`}),` from the response into `,_jsx(_components.strong,{children:`API Key`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -s`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://auth.greenhouse.io/token`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -u`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"\u003cclient ID>:\u003cclient secret>\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` grant_type=client_credentials`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`When the token expires, requests return `,_jsx(_components.code,{children:`401`}),` until you request a new one and reconnect it.`]}),`\n`,_jsxs(_components.p,{children:[`See `,_jsx(_components.a,{href:`/platform/credentials`,children:`Credentials`}),` for workspace, member, and agent-scoped credentials.`]}),`\n`,_jsx(Heading,{level:`2`,id:`usage`,children:`Usage`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`14`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`14`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`GreenhouseOauth2Tools`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"@guildai-services/guildai~greenhouse-oauth2\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`llmAgent`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`pick`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"@guildai/agents-sdk\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`export`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` default`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` llmAgent`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` systemPrompt:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"You summarize interview feedback for each open application on a job.\"`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` tools:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ...`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`pick`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`GreenhouseOauth2Tools`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, [`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"greenhouse_oauth2_get_jobs\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"greenhouse_oauth2_get_applications\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"greenhouse_oauth2_get_scorecards\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"greenhouse_oauth2_post_notes\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]),`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`})`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`The integration has more than 170 tools, so pick the ones the agent needs rather than spreading the whole set. With the access-token integration, import `,_jsx(_components.code,{children:`GreenhouseTools`}),` from `,_jsx(_components.code,{children:`@guildai-services/guildai~greenhouse`}),` and drop `,_jsx(_components.code,{children:`oauth2_`}),` from each tool name, such as `,_jsx(_components.code,{children:`greenhouse_get_jobs`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`tools`,children:`Tools`}),`\n`,_jsxs(_components.p,{children:[`Tools in the latest published version of `,_jsx(_components.code,{children:`guildai~greenhouse-oauth2`}),`. The access-token integration has the same tools with the `,_jsx(_components.code,{children:`greenhouse_`}),` prefix.`]}),`\n`,_jsx(Accordion,{title:`All 177 tools`,id:`all-177-tools`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Tool`}),_jsx(_components.th,{children:`What it does`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_delete_applications_id`})}),_jsx(_components.td,{children:`Permanently delete a single application, along with its interview stages, scorecards, rejection details, and prospect details.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_delete_applied_candidate_tags_id`})}),_jsx(_components.td,{children:`Detach a single tag from a candidate.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_delete_attachments_id`})}),_jsx(_components.td,{children:`Permanently remove an attachment from its application.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_delete_blocked_spam_sources_bulk`})}),_jsx(_components.td,{children:`Removes multiple blocked spam sources in a single request, identified by id.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_delete_blocked_spam_sources_id`})}),_jsx(_components.td,{children:`Removes a blocked spam source.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_delete_candidate_educations_id`})}),_jsx(_components.td,{children:`Remove a single education entry from a candidate’s profile.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_delete_candidate_employments_id`})}),_jsx(_components.td,{children:`Remove a single employment entry from a candidate’s profile.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_delete_candidates_id`})}),_jsx(_components.td,{children:`Permanently delete a candidate and all of their applications, attachments, scorecards, notes, and other associated records.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_delete_candidate_tags_id`})}),_jsx(_components.td,{children:`Remove a tag from your organization’s candidate-tag dictionary.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_delete_custom_field_departments_id`})}),_jsx(_components.td,{children:`Remove a department from a custom field’s visibility scope.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_delete_custom_field_offices_id`})}),_jsx(_components.td,{children:`Remove an office from a custom field’s visibility scope.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_delete_custom_field_options_bulk`})}),_jsx(_components.td,{children:`Asynchronously archive many options at once by id.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_delete_custom_field_options_id`})}),_jsx(_components.td,{children:`Archive a custom field option so it can no longer be selected on new records.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_delete_custom_fields_id`})}),_jsx(_components.td,{children:`Permanently delete a custom field from your organization’s dictionary, along with all stored values on parent records (jobs, offers, candidates, applications, etc.) and any associated…`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_delete_future_job_permissions_id`})}),_jsx(_components.td,{children:`Revoke a single future job permission by id.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_delete_interviews_id`})}),_jsx(_components.td,{children:`Cancel and delete a scheduled interview.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_delete_job_hiring_managers_id`})}),_jsx(_components.td,{children:`Unassign a hiring manager from a job by deleting the join row.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_delete_job_notes_id`})}),_jsx(_components.td,{children:`Permanently delete a job note.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_delete_job_owners_id`})}),_jsx(_components.td,{children:`Remove a user from the hiring team in one role by deleting the join row.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_delete_job_post_locations_id`})}),_jsx(_components.td,{children:`Detach a single location from a job post.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_delete_openings_bulk`})}),_jsx(_components.td,{children:`Asynchronously remove many openings in a single call.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_delete_openings_id`})}),_jsx(_components.td,{children:`Permanently remove an opening from its job.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_delete_user_job_permissions_id`})}),_jsx(_components.td,{children:`Revoke a single user job permission by id, removing that user’s Job Admin role on the job.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_ai_opt_out_statuses`})}),_jsx(_components.td,{children:`A candidate’s decision to opt out of AI-assisted review (Talent Matching) for a specific job.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_applications`})}),_jsx(_components.td,{children:`Applications represent a candidate’s journey on a specific job — the bridge between a candidate (person) and a job.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_application_stages`})}),_jsxs(_components.td,{children:[`Application stages are the rows that make up a candidate’s stage history on an application — one row per interview stage the application has occupied, with `,_jsx(_components.code,{children:`entered_at`}),` and `,_jsx(_components.code,{children:`exited_at`}),` timestamps.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_applied_candidate_tags`})}),_jsx(_components.td,{children:`Applied candidate tags are the join rows between candidates and the organization’s candidate-tag dictionary — one row per (candidate, tag) pair.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_approval_flows`})}),_jsx(_components.td,{children:`Approval flows are the multi-step approval definitions attached to a job or to a candidate’s offer.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_approver_groups`})}),_jsx(_components.td,{children:`Approver groups are the ordered tiers of approvers inside a single approval flow on a job or offer.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_approvers`})}),_jsx(_components.td,{children:`Approvers are the individual users assigned to approve a job, offer, or other approvable resource.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_attachments`})}),_jsx(_components.td,{children:`Attachments are files associated with an application — resumes, cover letters, take-home tests, offer documents, e-signed agreements, and other supporting documents.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_blocked_spam_sources`})}),_jsx(_components.td,{children:`Lists the IP addresses, CIDR ranges, email addresses, and email domains the organization has blocked from submitting applications.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_bulk_requests`})}),_jsx(_components.td,{children:`Bulk requests track the asynchronous bulk operations submitted to Harvest V3.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_bulk_requests_bulk_action_uuid`})}),_jsx(_components.td,{children:`Retrieve a single bulk request, including the per-row success and failure result files.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_candidate_attribute_types`})}),_jsxs(_components.td,{children:[`Candidate attribute types are the structured attribute dictionary on a job — the per-job catalogue of evaluable traits (e.g. `,_jsx(_components.code,{children:`JavaScript`}),`, `,_jsx(_components.code,{children:`Leadership`}),`, `,_jsx(_components.code,{children:`Years of experience`}),`) that get rated on…`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_candidate_educations`})}),_jsx(_components.td,{children:`Candidate educations are the school/degree/discipline entries on a candidate’s profile — one row per education entry.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_candidate_employments`})}),_jsx(_components.td,{children:`Candidate employments are the work history entries on a candidate’s profile — one row per employer/title the candidate has held.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_candidates`})}),_jsx(_components.td,{children:`Candidates are the people your organization is recruiting — both active applicants and prospects.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_candidate_tags`})}),_jsxs(_components.td,{children:[`Candidate tags are the org-wide library of tag names available to apply to candidates (e.g. `,_jsx(_components.code,{children:`engineering`}),`, `,_jsx(_components.code,{children:`referral`}),`, `,_jsx(_components.code,{children:`2026-grad`}),`).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_close_reasons`})}),_jsxs(_components.td,{children:[`Close reasons are the organization-defined dictionary of outcomes recorded when an opening is closed (e.g. `,_jsx(_components.code,{children:`Hire - New Headcount`}),`, `,_jsx(_components.code,{children:`Hire - Backfill`}),`, `,_jsx(_components.code,{children:`On Hold`}),`, `,_jsx(_components.code,{children:`Not Filling`}),`).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_custom_field_departments`})}),_jsx(_components.td,{children:`A custom_field_department restricts a custom field’s visibility to a single department, so the field only appears on jobs, offers, or candidates whose department matches.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_custom_field_offices`})}),_jsx(_components.td,{children:`A custom_field_office restricts a custom field’s visibility to a single office, so the field only appears on jobs, openings, or offers whose office matches.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_custom_field_options`})}),_jsxs(_components.td,{children:[`Custom field options are the selectable values on a `,_jsx(_components.code,{children:`single_select`}),` or `,_jsx(_components.code,{children:`multi_select`}),` custom field — each row belongs to exactly one custom field via `,_jsx(_components.code,{children:`custom_field_id`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_custom_fields`})}),_jsx(_components.td,{children:`Custom fields are the org-defined dictionary of structured data your organization layers onto core resources — jobs, offers, openings, candidates, applications, and users.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_default_interviewers`})}),_jsx(_components.td,{children:`Default interviewers are the users pre-selected as the interview panel for a specific stage on a job.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_demographic_answer_options`})}),_jsxs(_components.td,{children:[`Demographic answer options are the selectable choices on a `,_jsx(_components.code,{children:`demographic_question`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_demographic_answers`})}),_jsx(_components.td,{children:`Demographic answers are individual applicant submissions to the organization’s voluntary demographic questions on a job post — distinct from the federally-mandated EEOC questionnaire, which has its…`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_demographic_questions`})}),_jsx(_components.td,{children:`Demographic questions are the voluntary self-identification prompts applicants see on job posts and candidate surveys (separate from the EEOC questionnaire, which carries its own legally-mandated…`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_demographic_question_sets`})}),_jsxs(_components.td,{children:[`Demographic question sets are named groupings of `,_jsx(_components.code,{children:`demographic_questions`}),` an organization attaches to a job post or candidate survey to collect self-reported applicant demographic data (e.g. for DE\u0026I…`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_departments`})}),_jsxs(_components.td,{children:[`Departments are the organizational units jobs are assigned to (e.g. `,_jsx(_components.code,{children:`Engineering`}),`, `,_jsx(_components.code,{children:`Marketing`}),`).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_eeoc`})}),_jsx(_components.td,{children:`EEOC responses capture a candidate’s voluntary self-identification of race, gender, veteran status, and disability status, collected via the federally-approved Equal Employment Opportunity Commission…`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_email_templates`})}),_jsx(_components.td,{children:`Email templates are reusable subject/body pairs your organization uses to communicate with candidates, prospects, and the hiring team.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_focus_candidate_attributes`})}),_jsxs(_components.td,{children:[`Focus candidate attributes are the subset of a job’s `,_jsx(_components.code,{children:`job_candidate_attributes`}),` that an individual interview kit elevates as focus areas — the attributes Greenhouse highlights at the top of the…`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_future_job_permissions`})}),_jsx(_components.td,{children:`Future job permissions grant a user a Job Admin role on jobs that don’t exist yet — when a new job is created in the matching department and/or office, the permission automatically assigns the user…`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_interviewers`})}),_jsx(_components.td,{children:`Interviewers are the panel members on actual scheduled interviews — each row pairs one interview with one user (or, for external attendees, one email address).`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_interviewer_tags`})}),_jsx(_components.td,{children:`Interviewer tags are organization-defined labels assigned to interviewer users, such as “Bar Raiser,” “Diversity Trained,” or “Senior.” They are surfaced as Interviewer Groups in the Greenhouse UI…`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_interview_kits`})}),_jsx(_components.td,{children:`Interview kits are the per-job, per-slot evaluation packets interviewers see when conducting an interview — the instructions, exercises, scorecard questions, and focus attributes attached to one slot…`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_interview_media`})}),_jsx(_components.td,{children:`Interview media contains recordings and transcripts created by Greenhouse AI notetaking.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_interviews`})}),_jsxs(_components.td,{children:[`Interviews are scheduled interview events on a candidate’s application — each row pairs an application with a slot on the job’s interview plan (the `,_jsx(_components.code,{children:`job_interview`}),`) and carries the start/end time…`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_job_board_custom_locations`})}),_jsx(_components.td,{children:`Job board custom locations are the curated list of location strings a site admin maintains for posting jobs to a given job board.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_job_boards`})}),_jsx(_components.td,{children:`A job board is a destination an organization publishes job posts to — either the organization’s single internal board (visible only to signed-in employees) or one of its external boards (public…`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_job_candidate_attributes`})}),_jsxs(_components.td,{children:[`Job candidate attributes are the per-job instances of a job’s `,_jsx(_components.code,{children:`candidate_attribute_types`}),` — one row for each evaluable trait (e.g. `,_jsx(_components.code,{children:`JavaScript`}),`, `,_jsx(_components.code,{children:`Leadership`}),`) configured on a specific job.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_job_hiring_managers`})}),_jsx(_components.td,{children:`Job hiring managers are users designated as hiring managers on a job — typically the subject-matter expert for the role who reviews candidates in the Hiring Manager Review stage and receives…`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_job_interviews`})}),_jsx(_components.td,{children:`Job interviews are the interview slots configured on a job’s interview plan — the template definitions that say, for example, “this job’s Onsite stage has a 30-minute recruiter chat, a 45-minute…`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_job_interview_stages`})}),_jsxs(_components.td,{children:[`Interview stages are the steps of a job’s interview plan — for example `,_jsx(_components.code,{children:`Application Review`}),`, `,_jsx(_components.code,{children:`Phone Screen`}),`, `,_jsx(_components.code,{children:`Onsite`}),`, and `,_jsx(_components.code,{children:`Offer`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_job_notes`})}),_jsx(_components.td,{children:`Job notes are free-form, organization-internal notes attached to a job (the requisition).`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_job_owners`})}),_jsx(_components.td,{children:`Job owners are the recruiters, sourcers, and coordinators on a job’s hiring team — the users who own sourcing, recruiting, and scheduling work for the role.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_job_post_locations`})}),_jsxs(_components.td,{children:[`Job post locations are the join rows that attach one or more locations to a `,_jsx(_components.code,{children:`job_post`}),` — a multi-location posting (e.g. `,_jsx(_components.code,{children:`San Francisco`}),`, `,_jsx(_components.code,{children:`Remote (US)`}),`, `,_jsx(_components.code,{children:`New York`}),` on a single role) has one row per…`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_job_posts`})}),_jsx(_components.td,{children:`Job posts are the candidate-facing listings of a job.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_job_post_searchable_locations`})}),_jsx(_components.td,{children:`Searchable locations are the individual geographic locations attached to a job post — one row per location, each with a formatted display string plus its component city, region (state/province)…`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_jobs`})}),_jsx(_components.td,{children:`Jobs are the open requisitions and hiring plans your organization is recruiting against.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_notes`})}),_jsx(_components.td,{children:`List notes on candidate profiles, including logged emails and activity feed entries.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_offers`})}),_jsx(_components.td,{children:`Offers are the formal job offers extended to a candidate’s application.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_offices`})}),_jsxs(_components.td,{children:[`Offices are the organization’s recruiting locations (e.g. `,_jsx(_components.code,{children:`San Francisco`}),`, `,_jsx(_components.code,{children:`New York`}),`, `,_jsx(_components.code,{children:`Remote (US)`}),`) and the foundational scoping unit for jobs, candidates, custom-field visibility, and pay-range…`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_openings`})}),_jsx(_components.td,{children:`Openings are the individual headcount slots beneath a job — one opening per seat you intend to hire for.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_pay_input_ranges`})}),_jsx(_components.td,{children:`Pay input ranges are the per-job-post minimum and maximum values for a pay component (e.g. base salary, bonus) referenced by a pay transparency rule.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_pay_inputs`})}),_jsxs(_components.td,{children:[`Pay inputs are the individual compensation components (e.g. `,_jsx(_components.code,{children:`Base Salary`}),`, `,_jsx(_components.code,{children:`Sign-on Bonus`}),`, `,_jsx(_components.code,{children:`Equity`}),`) that make up a Greenhouse pay transparency rule.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_prospect_details`})}),_jsx(_components.td,{children:`A prospect detail is the per-prospect record that captures where a candidate sits in the CRM: which prospect pool and stage they currently occupy, who owns them, and the department/office they are…`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_prospect_pools`})}),_jsx(_components.td,{children:`A prospect pool is an organization-defined collection of prospects (candidates not yet attached to a specific job), typically used to manage talent communities and sourcing pipelines.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_prospect_pool_stages`})}),_jsxs(_components.td,{children:[`Prospect pool stages are the smaller buckets inside a prospect pool that recruiters use to track where each passive prospect sits in their nurture process — for example `,_jsx(_components.code,{children:`Not Reviewed`}),\", `In…\"]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_referrers`})}),_jsx(_components.td,{children:`Referrers are the people credited with bringing a candidate into the pipeline — typically employees making referrals, but also agency recruiters, LinkedIn recruiters, or any other party captured…`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_rejection_details`})}),_jsx(_components.td,{children:`Rejection details are the per-application rejection records — one row per rejected application, capturing who rejected it, when, why (the rejection reason), the linked rejection note, and any answers…`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_rejection_reasons`})}),_jsxs(_components.td,{children:[`Rejection reasons are the organization-defined dictionary of outcomes recorded when an application is rejected (e.g. `,_jsx(_components.code,{children:`Not a cultural fit`}),`, `,_jsx(_components.code,{children:`Lacking skill(s)/qualification(s)`}),`, `,_jsx(_components.code,{children:`Wasn't interested`}),`…`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_rejection_reasons_id`})}),_jsx(_components.td,{children:`Retrieve a single rejection reason by id.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_scorecard_candidate_attributes`})}),_jsx(_components.td,{children:`Scorecard candidate attributes are the per-scorecard ratings an interviewer captured on each focus attribute — what they thought of this candidate on each attribute on this scorecard.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_scorecard_question_answer_options`})}),_jsxs(_components.td,{children:[`Scorecard question answer options are the join rows between a scorecard question answer and the option(s) selected for it — one row per (`,_jsx(_components.code,{children:`scorecard_question_answer_id`}),`…`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_scorecard_question_answers`})}),_jsx(_components.td,{children:`A scorecard question answer is one interviewer’s response to a single question on a scorecard.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_scorecard_question_candidate_attributes`})}),_jsx(_components.td,{children:`Scorecard question candidate attributes are the join that tells an interviewer which focus attributes a given scorecard question is asking them to assess.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_scorecard_question_options`})}),_jsxs(_components.td,{children:[`Scorecard question options are the multiple-choice values shown to interviewers for `,_jsx(_components.code,{children:`single_select`}),` and `,_jsx(_components.code,{children:`multi_select`}),` `,_jsx(_components.code,{children:`scorecard_questions`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_scorecard_questions`})}),_jsxs(_components.td,{children:[`Scorecard questions are the prompts configured on an `,_jsx(_components.code,{children:`interview_kit`}),` that interviewers answer when submitting a scorecard.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_scorecards`})}),_jsx(_components.td,{children:`Scorecards are the per-interview evaluations that interviewers fill out — overall recommendation, key takeaways, private and public notes, and ratings on the interview kit’s focus attributes.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_sources`})}),_jsxs(_components.td,{children:[`Sources are the organization-defined dictionary of channels through which candidates enter the pipeline — job boards (e.g. `,_jsx(_components.code,{children:`LinkedIn`}),`, `,_jsx(_components.code,{children:`Indeed`}),`), agencies, referrals, internal applicants, prospecting…`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_tracking_links`})}),_jsxs(_components.td,{children:[`Tracking links are unique short URLs (e.g. `,_jsx(_components.code,{children:`https://grnh.se/`}),`) that an organization shares to attribute candidates to a `,_jsx(_components.code,{children:`source`}),` — campaign URLs, referral links, employee outreach, social posts, and…`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_user_emails`})}),_jsx(_components.td,{children:`User emails are the email addresses attached to a Greenhouse user.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_user_job_permissions`})}),_jsx(_components.td,{children:`User job permissions are the per-user, per-job access grants that pair a user with a Job Admin role on a specific job.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_user_roles`})}),_jsx(_components.td,{children:`User roles are the organization-wide dictionary of access levels a user can hold — the categories themselves, not the per-user assignments.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_get_users`})}),_jsx(_components.td,{children:`Users are the Greenhouse accounts inside your organization — recruiters, hiring managers, interviewers, coordinators, sourcers, and site admins.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_patch_applications_id`})}),_jsx(_components.td,{children:`Patch attribution and metadata fields on an existing application (source, referrer, recruiter, coordinator, prospect pool/stage, rejection date, custom fields).`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_patch_approval_flows_id`})}),_jsxs(_components.td,{children:[`Toggle whether an existing approval flow is `,_jsx(_components.code,{children:`sequential`}),` (approver groups resolve one at a time in `,_jsx(_components.code,{children:`sort_order`}),`) or parallel (all groups activate at once).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_patch_blocked_spam_sources_bulk`})}),_jsxs(_components.td,{children:[`Updates the `,_jsx(_components.code,{children:`note`}),` on multiple blocked spam sources in a single request.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_patch_blocked_spam_sources_id`})}),_jsxs(_components.td,{children:[`Updates the `,_jsx(_components.code,{children:`note`}),` on a blocked spam source. `,_jsx(_components.code,{children:`source_type`}),` and `,_jsx(_components.code,{children:`value`}),` are immutable on this endpoint — to change either, delete the entry and create a new one.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_patch_candidates_id`})}),_jsx(_components.td,{children:`Patch an existing candidate’s profile fields.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_patch_candidates_id_anonymize`})}),_jsx(_components.td,{children:`Anonymize selected categories of personally identifiable data on a candidate (for GDPR, CCPA, or other right-to-be-forgotten requests).`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_patch_custom_field_options_bulk`})}),_jsx(_components.td,{children:`Asynchronously edit the label, sort order, or external id of many options in one call — most often used to reorder a dropdown after an upstream HRIS reshuffle or to rename options en masse.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_patch_custom_field_options_id`})}),_jsx(_components.td,{children:`Edit the display label, sort order, or external id of an existing custom field option.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_patch_custom_fields_id`})}),_jsxs(_components.td,{children:[`Edit the definition of an existing custom field. `,_jsx(_components.code,{children:`field_type`}),` and `,_jsx(_components.code,{children:`value_type`}),` are immutable — to change either, create a new field.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_patch_departments_bulk`})}),_jsx(_components.td,{children:`Asynchronously update many departments in a single request.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_patch_departments_id`})}),_jsxs(_components.td,{children:[`Update an existing department’s name, `,_jsx(_components.code,{children:`external_id`}),`, or position in the department tree.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_patch_interviews_id`})}),_jsx(_components.td,{children:`Patch a scheduled interview’s time, location, video conferencing link, external calendar event id, or interviewer panel.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_patch_job_notes_id`})}),_jsx(_components.td,{children:`Update an existing job note.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_patch_job_posts_id`})}),_jsxs(_components.td,{children:[`Edit a job post in place — change its public title, replace its HTML body, or transition its publication status between `,_jsx(_components.code,{children:`draft`}),` and `,_jsx(_components.code,{children:`live`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_patch_jobs_id`})}),_jsx(_components.td,{children:`Patch an existing job’s editable fields.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_patch_offers_id`})}),_jsx(_components.td,{children:`Patch fields on an existing offer.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_patch_offices_bulk`})}),_jsx(_components.td,{children:`Update up to the bulk-endpoint cap of offices in a single request.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_patch_offices_id`})}),_jsx(_components.td,{children:`Update an existing office.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_patch_openings_bulk`})}),_jsxs(_components.td,{children:[`Asynchronously patch many openings in a single call, commonly for HRIS integrations that close batches of headcount with `,_jsx(_components.code,{children:`status: \"closed\"`}),` and `,_jsx(_components.code,{children:`close_reason_id`}),`, or reconcile partner `,_jsx(_components.code,{children:`opening_id`}),`…`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_patch_openings_id`})}),_jsx(_components.td,{children:`Patch an existing opening’s editable fields, or change its status.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_patch_rejection_details_id`})}),_jsxs(_components.td,{children:[`Patch the rejection reason or rejection question custom field answers on a rejected application without changing its `,_jsx(_components.code,{children:`rejected_at`}),` timestamp.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_patch_scorecard_candidate_attributes_id`})}),_jsx(_components.td,{children:`Update one candidate attribute rating on a scorecard. Deprecated; prefer updating the scorecard.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_patch_scorecard_question_answers_id`})}),_jsx(_components.td,{children:`Update one answer on a scorecard. Deprecated; prefer updating the scorecard.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_patch_scorecards_id`})}),_jsx(_components.td,{children:`Patch an existing scorecard.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_patch_users_bulk`})}),_jsx(_components.td,{children:`Update up to the bulk-endpoint cap of users in a single request.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_patch_users_id`})}),_jsx(_components.td,{children:`Patch an existing user’s profile fields.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_applications`})}),_jsx(_components.td,{children:`Create a new application for an existing candidate.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_applications_id_convert_to_candidate`})}),_jsxs(_components.td,{children:[`Promote a prospect application to a candidate application on a specific job. `,_jsx(_components.code,{children:`job_id`}),` is required and the prospect must already be associated with that job (or attached at the prospect pool level).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_applications_id_hire`})}),_jsx(_components.td,{children:`Mark an application as hired and close out the matching opening on the job.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_applications_id_move`})}),_jsxs(_components.td,{children:[`Advance the candidate to a new interview stage. `,_jsx(_components.code,{children:`from_stage_id`}),` is required and must match the candidate’s current stage — it acts as a guard against stale move requests.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_applications_id_reject`})}),_jsxs(_components.td,{children:[`Reject an application and record the reason. `,_jsx(_components.code,{children:`rejection_reason_id`}),` is required (look up valid reasons via `,_jsx(_components.code,{children:`GET /v3/rejection_reasons`}),`); optional `,_jsx(_components.code,{children:`notes`}),` capture context on the rejection.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_applications_id_unreject`})}),_jsx(_components.td,{children:`Reverse a rejection, putting the application back into the in-process state on the stage it was rejected from.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_applied_candidate_tags`})}),_jsx(_components.td,{children:`Apply an existing tag to a candidate.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_approval_flows`})}),_jsx(_components.td,{children:`Create a multi-step approval flow on a job (and optionally a specific offer), seeded with the supplied approver groups.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_approval_flows_id_request_approvals`})}),_jsxs(_components.td,{children:[`Start an existing `,_jsx(_components.code,{children:`pending`}),` approval flow by emailing its initial approver(s) and recording who requested the approvals.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_attachments`})}),_jsx(_components.td,{children:`Attach a file to an existing application.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_blocked_spam_sources`})}),_jsx(_components.td,{children:`Adds a new IP address, CIDR range, email address, or email domain to the organization’s spam blocklist.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_blocked_spam_sources_bulk`})}),_jsx(_components.td,{children:`Adds multiple blocked spam sources in a single request, typically used to sync the blocklist from an external security tool.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_candidate_educations`})}),_jsxs(_components.td,{children:[`Add a new education entry to a candidate’s profile. `,_jsx(_components.code,{children:`candidate_id`}),\" is required; school, degree, and discipline are optional but must reference existing custom-field option ids (look these up via `GET…\"]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_candidate_employments`})}),_jsxs(_components.td,{children:[`Add a new work history entry to a candidate’s profile. `,_jsx(_components.code,{children:`candidate_id`}),`, `,_jsx(_components.code,{children:`company_name`}),`, `,_jsx(_components.code,{children:`title`}),`, and `,_jsx(_components.code,{children:`start_date`}),` are required; `,_jsx(_components.code,{children:`company_name`}),` and `,_jsx(_components.code,{children:`title`}),` are free-text strings (no custom-field option…`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_candidates`})}),_jsxs(_components.td,{children:[`Create a new candidate profile in your organization. `,_jsx(_components.code,{children:`first_name`}),` and `,_jsx(_components.code,{children:`last_name`}),` are required; all other profile fields are optional.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_candidates_bulk`})}),_jsx(_components.td,{children:`Asynchronously create many candidate profiles in a single call, typically for HRIS sync workflows that create a batch of candidates at once.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_candidates_id_merge`})}),_jsxs(_components.td,{children:[`Merge two candidate profiles by collapsing the candidate identified by `,_jsx(_components.code,{children:`secondary_candidate_id`}),` into the candidate at `,_jsx(_components.code,{children:`{id}`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_candidate_tags`})}),_jsxs(_components.td,{children:[`Add a new tag to your organization’s candidate-tag dictionary. `,_jsx(_components.code,{children:`name`}),` is required and must be unique within the organization (case sensitive); creating a tag with an existing name returns a 422.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_custom_field_departments`})}),_jsx(_components.td,{children:`Restrict a custom field’s visibility to one additional department.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_custom_field_offices`})}),_jsx(_components.td,{children:`Restrict a custom field’s visibility to one additional office.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_custom_field_options`})}),_jsxs(_components.td,{children:[`Add a new selectable value to a `,_jsx(_components.code,{children:`single_select`}),` or `,_jsx(_components.code,{children:`multi_select`}),` custom field.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_custom_field_options_bulk`})}),_jsx(_components.td,{children:`Asynchronously add many options at once, typically for HRIS sync workflows that replace or extend a dropdown’s option set in a single pass.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_custom_fields`})}),_jsxs(_components.td,{children:[`Add a new custom field to your organization’s dictionary. `,_jsx(_components.code,{children:`name`}),`, `,_jsx(_components.code,{children:`field_type`}),`, and `,_jsx(_components.code,{children:`value_type`}),` are required.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_departments`})}),_jsx(_components.td,{children:`Create a department in the caller’s organization.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_future_job_permissions`})}),_jsx(_components.td,{children:`Grant a user a Job Admin role on future jobs matching an optional department and/or office scope.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_interviews`})}),_jsxs(_components.td,{children:[`Schedule an interview against a candidate’s application at a specific slot on the job’s interview plan. `,_jsx(_components.code,{children:`application_id`}),`, `,_jsx(_components.code,{children:`job_interview_id`}),` (the interview-plan slot), `,_jsx(_components.code,{children:`starts_at`}),`, `,_jsx(_components.code,{children:`ends_at`}),`, and…`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_job_hiring_managers`})}),_jsx(_components.td,{children:`Assign a user as a hiring manager on a job.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_job_notes`})}),_jsx(_components.td,{children:`Create a free-form note attached to a job.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_job_owners`})}),_jsxs(_components.td,{children:[`Add a user to a job’s hiring team as a `,_jsx(_components.code,{children:`recruiter`}),`, `,_jsx(_components.code,{children:`sourcer`}),`, or `,_jsx(_components.code,{children:`coordinator`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_job_post_locations`})}),_jsxs(_components.td,{children:[`Attach a location to an existing `,_jsx(_components.code,{children:`job_post`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_job_posts`})}),_jsx(_components.td,{children:`Create a new job post by duplicating an existing one.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_jobs`})}),_jsxs(_components.td,{children:[`Create a new job from an existing template. `,_jsx(_components.code,{children:`template_job_id`}),` and `,_jsx(_components.code,{children:`number_of_openings`}),` are required; the template supplies the interview plan, scorecards, hiring team, and approval workflow, since…`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_jobs_bulk`})}),_jsx(_components.td,{children:`Asynchronously create many jobs in a single call, typically for HRIS sync workflows that open a batch of requisitions at once.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_notes`})}),_jsxs(_components.td,{children:[`Create a candidate note, log an email, or record an activity-feed entry on a candidate. `,_jsx(_components.code,{children:`note_type`}),` selects which: `,_jsx(_components.code,{children:`NOTE`}),` posts to the Notes tab, `,_jsx(_components.code,{children:`EMAIL`}),` logs an email into the activity feed (and…`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_offers`})}),_jsxs(_components.td,{children:[`Create a new offer on an existing application. `,_jsx(_components.code,{children:`application_id`}),` is always required; `,_jsx(_components.code,{children:`starts_on`}),` and `,_jsx(_components.code,{children:`custom_fields`}),` (compensation components plus any offer custom fields configured on the hiring…`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_offices`})}),_jsx(_components.td,{children:`Create a new office for the organization.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_openings`})}),_jsxs(_components.td,{children:[`Add a new headcount slot to an existing job. `,_jsx(_components.code,{children:`job_id`}),` is required; `,_jsx(_components.code,{children:`opening_id`}),` is an optional partner-supplied external identifier (e.g. an HRIS or ATS position id) and `,_jsx(_components.code,{children:`custom_fields`}),` set values on…`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_openings_bulk`})}),_jsx(_components.td,{children:`Asynchronously add many openings across one or more jobs in a single call, typically for HRIS sync workflows that open or extend headcount on a batch of requisitions.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_scorecard_candidate_attributes`})}),_jsx(_components.td,{children:`Add a candidate attribute rating to a scorecard. Deprecated; prefer updating the scorecard.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_scorecard_question_answer_options`})}),_jsx(_components.td,{children:`Select options for a scorecard question answer. Deprecated; prefer updating the scorecard.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_scorecard_question_answers`})}),_jsx(_components.td,{children:`Add an answer to a scorecard. Deprecated; prefer updating the scorecard.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_scorecards`})}),_jsxs(_components.td,{children:[`Create a scorecard for a given interview kit on a given application. `,_jsx(_components.code,{children:`interview_kit_id`}),`, `,_jsx(_components.code,{children:`interviewer_id`}),`, `,_jsx(_components.code,{children:`interviewed_at`}),`, `,_jsx(_components.code,{children:`application_id`}),`, and `,_jsx(_components.code,{children:`submitter_id`}),` are required; the kit must belong to…`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_user_emails`})}),_jsxs(_components.td,{children:[`Attach an additional email address to a Greenhouse user — the V3 replacement for V1 `,_jsx(_components.code,{children:`POST /users/{id}/email_addresses`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_user_job_permissions`})}),_jsx(_components.td,{children:`Grant a user a Job Admin role on a single job.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_users`})}),_jsxs(_components.td,{children:[`Create a new Greenhouse user in your organization. `,_jsx(_components.code,{children:`first_name`}),`, `,_jsx(_components.code,{children:`last_name`}),`, and `,_jsx(_components.code,{children:`primary_email`}),` are required; the user is created with the Basic permission level and no job assignments.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_users_activate_bulk`})}),_jsx(_components.td,{children:`Reactivate up to the bulk-endpoint cap of users in a single request.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_users_bulk`})}),_jsx(_components.td,{children:`Create up to the bulk-endpoint cap of users in a single request.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_users_deactivate_bulk`})}),_jsx(_components.td,{children:`Deactivate up to the bulk-endpoint cap of users in a single request.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_users_id_activate`})}),_jsx(_components.td,{children:`Reactivate a previously deactivated user so they can sign in to Greenhouse and be assigned to new jobs again.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_users_id_deactivate`})}),_jsx(_components.td,{children:`Deactivate a Greenhouse user.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_users_id_revoke_permissions`})}),_jsx(_components.td,{children:`Demote a Site Admin to a Basic user, removing their organization-wide access.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_post_users_revoke_permissions_bulk`})}),_jsx(_components.td,{children:`Demote up to the bulk-endpoint cap of site admins to Basic users in a single request.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_put_approval_flows_id_replace_approver_groups`})}),_jsx(_components.td,{children:`Wholesale-replace the ordered tiers of approvers on an existing approval flow — the V3 equivalent of rebuilding the flow’s structure from an external HRIS.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`greenhouse_oauth2_put_approver_groups_id_replace_approver`})}),_jsx(_components.td,{children:\"Swap one approver in an approver group for another user without rebuilding the rest of the approval flow — the V3 replacement for V1 `PUT…\"})]})]})]})}),`\n`,_jsx(Heading,{level:`2`,id:`frequently-asked-questions`,children:`Frequently asked questions`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`Can I use a Harvest v1 or v2 API key?`,id:`can-i-use-a-harvest-v1-or-v2-api-key`,children:_jsx(_components.p,{children:`No. Both integrations call Harvest v3 only. Greenhouse retired v1 and v2 on August 31, 2026.`})}),_jsx(Accordion,{title:`Why does the agent start getting 401 errors?`,id:`why-does-the-agent-start-getting-401-errors`,children:_jsxs(_components.p,{children:[`With `,_jsx(_components.strong,{children:`greenhouse-oauth2`}),`, check that the client ID and secret are still valid in Greenhouse, then reconnect them. With `,_jsx(_components.strong,{children:`greenhouse`}),`, the access token expired: request a new one and reconnect it, or switch to `,_jsx(_components.strong,{children:`greenhouse-oauth2`}),`.`]})}),_jsx(Accordion,{title:`Can a new application trigger a Guild agent?`,id:`can-a-new-application-trigger-a-guild-agent`,children:_jsxs(_components.p,{children:[`Not yet. Guild doesn’t receive Greenhouse webhooks, so you can’t create an event trigger for Greenhouse. Run the agent on a `,_jsx(_components.a,{href:`/platform/schedule-triggers`,children:`schedule`}),` instead.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`related`,children:`Related`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Also runs on Guild:`}),` `,_jsx(_components.a,{href:`/integrations/ashby`,children:`Ashby`})]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Read:`}),` Docs: `,_jsx(_components.a,{href:`/platform/credential-policies`,children:`Credential policies`}),` · `,_jsx(_components.a,{href:`/platform/credentials`,children:`Credentials`}),` · `,_jsx(_components.a,{href:`/sdk/tools`,children:`Tools in agents`})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Read candidates, jobs, and scorecards from Greenhouse in Guild agents","sidebarTitle":"Greenhouse","icon":"/images/integration_marks/greenhouse.svg","description":"Connect Guild agents to the Greenhouse Harvest v3 API with a client ID and secret or an access token, to read candidates, jobs, and scorecards and add notes.","keywords":["greenhouse guild integration","greenhouse harvest v3 api agent","greenhouse recruiting agent","greenhouse oauth client credentials","guild recruiting automation"],"related":["/integrations/ashby","/platform/credential-policies","/platform/credentials"],"href":"/integrations/greenhouse"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"What the Greenhouse integration exposes","slug":"what-the-greenhouse-integration-exposes","depth":2,"children":[]},{"title":"Choose an integration","slug":"choose-an-integration","depth":2,"children":[]},{"title":"How it works","slug":"how-it-works","depth":2,"children":[]},{"title":"Why Greenhouse access needs governing","slug":"why-greenhouse-access-needs-governing","depth":2,"children":[]},{"title":"Authentication","slug":"authentication","depth":2,"children":[{"title":"Greenhouse (OAuth)","slug":"greenhouse-oauth","depth":3,"children":[]},{"title":"Greenhouse (access token)","slug":"greenhouse-access-token","depth":3,"children":[]}]},{"title":"Usage","slug":"usage","depth":2,"children":[]},{"title":"Tools","slug":"tools","depth":2,"children":[]},{"title":"Frequently asked questions","slug":"frequently-asked-questions","depth":2,"children":[]},{"title":"Related","slug":"related","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/guildai/f8155b48b6398768/webmcp.js"],"subdomain":"guildai","siteName":"Guild","title":"Read candidates, jobs, and scorecards from Greenhouse in Guild agents - Guild","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-04T20:12:21.855Z","gitLastModified":"2026-11-04T20:49:46.000Z","originalFileLocation":"integrations/greenhouse.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Connect Guild agents to the Greenhouse Harvest v3 API with a client ID and secret or an access token, to read candidates, jobs, and scorecards and add notes.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Guild\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/guildai/co0AUpnLd7CKemzr/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/guildai/co0AUpnLd7CKemzr/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/guildai/co0AUpnLd7CKemzr/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/guildai/co0AUpnLd7CKemzr/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/guildai/co0AUpnLd7CKemzr/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/guildai/co0AUpnLd7CKemzr/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/guildai/co0AUpnLd7CKemzr/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/guildai/co0AUpnLd7CKemzr/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/guildai/co0AUpnLd7CKemzr/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Read candidates, jobs, and scorecards from Greenhouse in Guild agents - Guild\">\u003cmeta data-mint-head property=\"og:description\" content=\"Connect Guild agents to the Greenhouse Harvest v3 API with a client ID and secret or an access token, to read candidates, jobs, and scorecards and add notes.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Guild Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.guild.ai/integrations/greenhouse\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://guildai.mintlify.app/_mintlify/api/og/v2?division=Recruiting\u0026amp;title=Read+candidates%2C+jobs%2C+and+scorecards+from+Greenhouse+in+Guild+agents\u0026amp;description=Connect+Guild+agents+to+the+Greenhouse+Harvest+v3+API+with+a+client+ID+and+secret+or+an+access+token%2C+to+read+candidates%2C+jobs%2C+and+scorecards+and+add+notes.\u0026amp;theme=fd45c57432bade890a72344e\u0026amp;signature=b0a2dcc757c8b3af5624ee07f1e67efc5beead91fe530c75149299782d4ea3b1\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Read candidates, jobs, and scorecards from Greenhouse in Guild agents - Guild\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Connect Guild agents to the Greenhouse Harvest v3 API with a client ID and secret or an access token, to read candidates, jobs, and scorecards and add notes.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://guildai.mintlify.app/_mintlify/api/og/v2?division=Recruiting\u0026amp;title=Read+candidates%2C+jobs%2C+and+scorecards+from+Greenhouse+in+Guild+agents\u0026amp;description=Connect+Guild+agents+to+the+Greenhouse+Harvest+v3+API+with+a+client+ID+and+secret+or+an+access+token%2C+to+read+candidates%2C+jobs%2C+and+scorecards+and+add+notes.\u0026amp;theme=fd45c57432bade890a72344e\u0026amp;signature=b0a2dcc757c8b3af5624ee07f1e67efc5beead91fe530c75149299782d4ea3b1\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/guildai/co0AUpnLd7CKemzr/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Guild\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#ff5500\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.guild.ai/integrations/greenhouse\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/integrations/greenhouse.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://www.guild.ai/#organization\",\"name\":\"Guild\",\"legalName\":\"Guild.ai, Inc.\",\"url\":\"https://www.guild.ai/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/guildai/x-xVeOd53CpYbehm/logo/light.svg?fit=max\u0026auto=format\u0026n=x-xVeOd53CpYbehm\u0026q=85\u0026s=21393c9a072674c192091492cc76f441\"},\"sameAs\":[\"https://www.linkedin.com/company/guild-ai-group\",\"https://x.com/GuildAI\",\"https://www.crunchbase.com/organization/guild-ai-86ce\",\"https://www.threads.com/@guild.ai\",\"https://reddit.com/r/guildai\",\"https://youtube.com/@guild-ai\",\"https://www.wikidata.org/wiki/Q141717471\",\"https://github.com/guildaidev\",\"https://discord.gg/guild-ai\",\"https://instagram.com/guild.ai\"]},{\"@type\":\"WebSite\",\"@id\":\"https://docs.guild.ai#website\",\"name\":\"Guild\",\"url\":\"https://docs.guild.ai\",\"publisher\":{\"@id\":\"https://www.guild.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.guild.ai/integrations/greenhouse#webpage\",\"url\":\"https://docs.guild.ai/integrations/greenhouse\",\"name\":\"Read candidates, jobs, and scorecards from Greenhouse in Guild agents\",\"description\":\"Connect Guild agents to the Greenhouse Harvest v3 API with a client ID and secret or an access token, to read candidates, jobs, and scorecards and add notes.\",\"dateModified\":\"2026-11-04T20:49:46.000Z\",\"isPartOf\":{\"@id\":\"https://docs.guild.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.guild.ai/integrations/greenhouse#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.guild.ai/integrations/greenhouse#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Recruiting\",\"item\":\"https://docs.guild.ai/integrations/ashby\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Read candidates, jobs, and scorecards from Greenhouse in Guild agents\",\"item\":\"https://docs.guild.ai/integrations/greenhouse\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.guild.ai/integrations/greenhouse#article\",\"headline\":\"Read candidates, jobs, and scorecards from Greenhouse in Guild agents\",\"name\":\"Read candidates, jobs, and scorecards from Greenhouse in Guild agents\",\"description\":\"Connect Guild agents to the Greenhouse Harvest v3 API with a client ID and secret or an access token, to read candidates, jobs, and scorecards and add notes.\",\"url\":\"https://docs.guild.ai/integrations/greenhouse\",\"mainEntityOfPage\":{\"@id\":\"https://docs.guild.ai/integrations/greenhouse#webpage\"},\"dateModified\":\"2026-11-04T20:49:46.000Z\",\"keywords\":\"greenhouse guild integration, greenhouse harvest v3 api agent, greenhouse recruiting agent, greenhouse oauth client credentials, guild recruiting automation\",\"publisher\":{\"@id\":\"https://www.guild.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.guild.ai#website\"}}]}\u003c/script>","siteName":"Guild","nav":{"global":null,"tabs":[{"tab":"Guides","icon":"book-open","pages":[{"title":"Guides","href":""}]},{"tab":"CLI","icon":"terminal","pages":[{"title":"CLI","href":"/cli/getting-started"}]},{"tab":"SDK","icon":"code","pages":[{"title":"SDK","href":"/packages/agents-sdk"}]},{"tab":"API Reference","icon":"server","pages":[{"title":"API Reference","href":"/developers"}]},{"tab":"Integrations","icon":"plug","groups":[{"group":"Overview","pages":[{"title":"Integrations overview","sidebarTitle":"Overview","href":"/integrations/overview"},{"title":"Create an integration","href":"/services/create-an-integration"},{"title":"Integration authentication schemes","href":"/integrations/auth-schemes"}]},{"group":"Models","pages":[{"title":"Run Claude models in Guild agents under policy","sidebarTitle":"Anthropic","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/anthropic.svg","href":"/integrations/anthropic"},{"title":"Run GPT and o-series models in Guild agents under policy","sidebarTitle":"OpenAI","icon":"plug","iconType":"solid","href":"/integrations/openai"},{"title":"Run Gemini models in Guild agents under policy","sidebarTitle":"Gemini","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/gemini.svg","href":"/integrations/gemini"},{"title":"Run Meta Muse and Llama models in Guild agents","sidebarTitle":"Meta","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/meta.svg","href":"/integrations/meta"},{"title":"Run DeepSeek models in Guild agents under policy","sidebarTitle":"DeepSeek","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/deepseek.svg","href":"/integrations/deepseek"},{"title":"Run Qwen models in Guild agents under policy","sidebarTitle":"Qwen","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/qwen.svg","href":"/integrations/qwen"},{"title":"Run Kimi models in Guild agents under policy","sidebarTitle":"Moonshot AI","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/moonshot.svg","href":"/integrations/moonshot"},{"title":"Run GLM models from Z.ai in Guild agents under policy","sidebarTitle":"Z.ai","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/zai.svg","href":"/integrations/zai"}]},{"group":"Inference providers","pages":[{"title":"Run Guild agents on AWS Bedrock without long-lived AWS keys","sidebarTitle":"AWS Bedrock","icon":"plug","iconType":"solid","href":"/integrations/aws-bedrock"},{"title":"Run open-weight models in Guild agents through Fireworks AI","sidebarTitle":"Fireworks AI","icon":"plug","iconType":"solid","href":"/integrations/fireworks"},{"title":"Reach every model Guild supports with one OpenRouter key","sidebarTitle":"OpenRouter","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/openrouter.svg","href":"/integrations/openrouter"}]},{"group":"Code \u0026 CI/CD","pages":[{"title":"Manage Azure DevOps work items, pipelines, and repos from Guild agents","sidebarTitle":"Azure DevOps","icon":"plug","iconType":"solid","href":"/integrations/azure-devops"},{"title":"Manage Bitbucket pull requests and issues from Guild agents","sidebarTitle":"Bitbucket","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/bitbucket.svg","href":"/integrations/bitbucket"},{"title":"GitHub agents your security team can sign off on","sidebarTitle":"GitHub","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/github.svg","href":"/integrations/github"},{"title":"Manage Google Compute instances from Guild agents","sidebarTitle":"Google Compute","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/google-compute.svg","href":"/integrations/google-compute"},{"title":"Query and mutate Linear issues from Guild agents","sidebarTitle":"Linear","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/linear.svg","href":"/integrations/linear"},{"title":"Generate and deploy web apps with v0 from Guild agents","sidebarTitle":"v0","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/v0.svg","href":"/integrations/v0"}]},{"group":"Communication","pages":[{"title":"Respond to Discord slash commands from Guild agents","sidebarTitle":"Discord","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/discord.svg","href":"/integrations/discord"},{"title":"Send yourself email notifications from Guild agents","sidebarTitle":"Email","icon":"envelope","iconType":"solid","href":"/integrations/email"},{"title":"Read, send, and manage Gmail from Guild agents","sidebarTitle":"Gmail","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/gmail.svg","href":"/integrations/gmail"},{"title":"Send email and manage suppressions with SendGrid agents","sidebarTitle":"SendGrid","icon":"plug","iconType":"solid","href":"/integrations/sendgrid"},{"title":"Slack agents your whole company can use, and your admins can trust","sidebarTitle":"Slack","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/slack.svg","href":"/integrations/slack"},{"title":"Send and receive Telegram messages from Guild agents","sidebarTitle":"Telegram","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/telegram.svg","href":"/integrations/telegram"},{"title":"Send messages and manage calls with Twilio from Guild agents","sidebarTitle":"Twilio","icon":"plug","iconType":"solid","href":"/integrations/twilio"}]},{"group":"Project management","pages":[{"title":"Create and update Asana tasks from Guild agents","sidebarTitle":"Asana","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/asana.svg","href":"/integrations/asana"},{"title":"Manage Google Calendar events from Guild agents","sidebarTitle":"Google Calendar","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/google-calendar.svg","href":"/integrations/google-calendar"},{"title":"Triage, update, and search Jira issues from Guild agents","sidebarTitle":"Jira","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/jira.svg","href":"/integrations/jira"}]},{"group":"Testing","pages":[{"title":"Query Cypress Cloud test reports from Guild agents","sidebarTitle":"Cypress","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/cypress.svg","href":"/integrations/cypress"},{"title":"Query TestRail test runs and results from Guild agents","sidebarTitle":"TestRail","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/testrail.svg","href":"/integrations/testrail"}]},{"group":"Design","pages":[{"title":"Read Figma files and comments from Guild agents","sidebarTitle":"Figma","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/figma.svg","href":"/integrations/figma"}]},{"group":"Productivity","pages":[{"title":"Confluence integration","sidebarTitle":"Confluence","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/confluence.svg","href":"/integrations/confluence"},{"title":"Create, read, and edit Google Docs from Guild agents","sidebarTitle":"Google Docs","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/google-docs.svg","href":"/integrations/google-docs"},{"title":"Manage Google Drive files and folders from Guild agents","sidebarTitle":"Google Drive","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/google-drive.svg","href":"/integrations/google-drive"},{"title":"Read and write Google Sheets data from Guild agents","sidebarTitle":"Google Sheets","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/google-sheets.svg","href":"/integrations/google-sheets"},{"title":"Read and update Google Slides presentations from Guild agents","sidebarTitle":"Google Slides","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/google-slides.svg","href":"/integrations/google-slides"},{"title":"Read, edit, and query Notion from Guild agents","sidebarTitle":"Notion","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/notion.svg","href":"/integrations/notion"}]},{"group":"Monitoring \u0026 observability","pages":[{"title":"AWS CloudWatch integration","sidebarTitle":"AWS CloudWatch","icon":"plug","iconType":"solid","href":"/integrations/aws-cloudwatch"},{"title":"Datadog integration","sidebarTitle":"Datadog","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/datadog.svg","href":"/integrations/datadog"},{"title":"Search and analyze Google Logging from Guild agents","sidebarTitle":"Google Logging","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/google-logging.svg","href":"/integrations/google-logging"},{"title":"Query New Relic observability data from Guild agents","sidebarTitle":"New Relic","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/newrelic.svg","href":"/integrations/newrelic"},{"title":"Triage Sentry issues and releases from Guild agents","sidebarTitle":"Sentry","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/sentry.svg","href":"/integrations/sentry"},{"title":"Triage Splunk incidents and manage detectors from Guild agents","sidebarTitle":"Splunk","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/splunk.svg","href":"/integrations/splunk"}]},{"group":"Data","pages":[{"title":"BigQuery integration","sidebarTitle":"BigQuery","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/bigquery.svg","href":"/integrations/bigquery"},{"title":"Nexla integration","sidebarTitle":"Nexla","icon":"plug","iconType":"solid","href":"/integrations/nexla"},{"title":"Query PostHog data and manage feature flags from Guild agents","sidebarTitle":"PostHog","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/posthog.svg","href":"/integrations/posthog"}]},{"group":"Web \u0026 search","pages":[{"title":"Run Browserbase cloud browser sessions from Guild agents","sidebarTitle":"Browserbase","icon":"plug","iconType":"solid","href":"/integrations/browserbase"},{"title":"Scrape, crawl, and search the web with Firecrawl in Guild agents","sidebarTitle":"Firecrawl","icon":"plug","iconType":"solid","href":"/integrations/firecrawl"},{"title":"Retrieve context from a Pinecone Assistant in Guild agents","sidebarTitle":"Pinecone","icon":"plug","iconType":"solid","href":"/integrations/pinecone"}]},{"group":"Customer support","pages":[{"title":"Triage and update Zendesk tickets from Guild agents","sidebarTitle":"Zendesk","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/zendesk.svg","href":"/integrations/zendesk"}]},{"group":"Sales \u0026 finance","pages":[{"title":"Attio integration","sidebarTitle":"Attio","icon":"plug","iconType":"solid","href":"/integrations/attio"},{"title":"Manage Pipedrive deals, leads, and contacts from Guild agents","sidebarTitle":"Pipedrive","icon":"plug","iconType":"solid","href":"/integrations/pipedrive"}]},{"group":"Recruiting","pages":[{"title":"Search candidates and move applications with Ashby agents","sidebarTitle":"Ashby","icon":"plug","iconType":"solid","description":"Connect Guild agents to Ashby to search candidates, read and advance applications, manage jobs, schedule interviews, and work with offers and pipeline data.","href":"/integrations/ashby"},{"title":"Read candidates, jobs, and scorecards from Greenhouse in Guild agents","sidebarTitle":"Greenhouse","icon":"https://mintlify.s3.us-west-1.amazonaws.com/guildai/images/integration_marks/greenhouse.svg","href":"/integrations/greenhouse"}]}]},{"tab":"Examples","icon":"flask","pages":[{"title":"Examples","href":"/examples/overview"}]}]},"basePath":"","title":"Read candidates, jobs, and scorecards from Greenhouse in Guild agents - Guild","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":[],"chunks":[]}