---
title: Greenhouse API Integration on Truto
slug: greenhouse
category: ATS
canonical: "https://truto.one/integrations/detail/greenhouse/"
---

# Greenhouse API Integration on Truto



**Category:** ATS  
**Status:** Generally available

## Unified APIs

### Unified User Directory API

- **Users** — The User object represents a User.

### Unified ATS API

- **Activities** — The activity on a candidate performed by a user.
- **Applications** — The applications represent an application for a job.
- **Attachments** — The attachments represent an attachment for a candidate.
- **Candidates** — The candidates represent a candidate.
- **Departments** — The departments represent a department.
- **Eeocs** — The eecocs represent an Equal Employment Opportunity Commission data submitted by the candidates.
- **Interviews** — The interviews represent an interview.
- **Job Form Fields** — The form fields used to apply to a job.
- **Job Interview Stages** — The job interview stages represent a job interview stage.
- **Jobs** — The jobs represent a job.
- **Offers** — The offers represent an offer.
- **Offices** — The offices represent an office.
- **Reject Reasons** — The reject reasons represent a reject reason.
- **Scorecards** — The scorecards represent a scorecard.
- **Tags** — The tags represent a tag for a candidate.
- **Users** — The users represent a user.

## MCP-ready AI tools

Truto exposes 52 tools for Greenhouse that AI agents can call directly.

- **list_all_greenhouse_candidates** — List all candidates in Greenhouse. Returns candidate details including id, first_name, last_name, company, title, created_at, updated_at, applications, educations, employments, and custom fields.
- **get_single_greenhouse_candidate_by_id** — Get information about a specific candidate by id in Greenhouse. Returns candidate's personal details, contact info, applications with job details, custom fields, and associated tags.
- **list_all_greenhouse_jobs** — List all jobs in Greenhouse. Returns job id, name, requisition_id, status, created_at, updated_at, departments, offices, custom_fields, hiring_team, and openings.
- **get_single_greenhouse_job_by_id** — Get information about a specific job in Greenhouse by id. Returns job details including name, requisition_id, status, dates, departments, offices, custom fields, hiring team, and openings.
- **list_all_greenhouse_applications** — List all applications in Greenhouse. Returns application id, candidate_id, prospect status, applied_at, last_activity_at, location, source, credited_to, jobs, status, current_stage, answers, prospect details, custom fields, and attachments.
- **get_single_greenhouse_application_by_id** — List all applications in Greenhouse. Supports filtering by created_before, created_after, last_activity_after, job_id, and status. Returns application ID, candidate ID, status, jobs applied for, current stage, and attachments.
- **list_all_greenhouse_users** — Get information about a specific user in Greenhouse. Requires id. Returns user details including id, name, and email.
- **get_single_greenhouse_user_by_id** — Get information about a specific user in Greenhouse by id. Returns id, name, primary_email_address, employee_id, offices, departments, and custom_fields.
- **list_all_greenhouse_tags** — List all candidate tags in Greenhouse. Returns an array of tags with fields id and name.
- **list_all_greenhouse_sources** — List sources grouped by strategy in Greenhouse. Returns id, name, and type (id and name) of each source.
- **list_all_greenhouse_job_posts** — List all job posts with optional filters for creation, update times, live status, active status, full content, and internal/external posts in Greenhouse.
- **get_single_greenhouse_job_post_by_id** — Get a single job post by id in Greenhouse. Returns fields including id, title, location, internal/external flags, active/live status, first_published_at, job_id, content, internal_content, demographic_question_set_id, and associated questions.
- **list_all_greenhouse_departments** — List all departments in Greenhouse. Returns department id, name, parent_id, external_id, child_ids, and child_department_external_ids.
- **get_single_greenhouse_department_by_id** — Get information about a specific department by id in Greenhouse. Returns fields id, name, parent_id, child_ids, and external_id. Optionally supports render_as parameter for tree structure.
- **list_all_greenhouse_custom_fields** — List custom fields by field_type in Greenhouse. Returns fields including id, name, active status, field_type, value_type, and custom_field_options. Include inactive fields with include_inactive=true.
- **get_single_greenhouse_custom_field_by_id** — Get a custom field by id in Greenhouse. Returns id, name, active status, field_type, value_type, private flag, required flag, require_approval flag, description, and custom_field_options with option id, name, priority, and external_id.
- **list_all_greenhouse_custom_field_options** — List custom field options for a given custom field id in Greenhouse. Returns id, name, priority, and external_id of each option. Supports filtering by type: all, active, or inactive.
- **list_all_greenhouse_job_stages** — Get job stages for job with id in Greenhouse. Returns id, name, created_at, updated_at, job_id, priority, and interviews with details including interview id, name, schedulable, estimated_minutes, default_interviewer_users, and interview_kit.
- **get_single_greenhouse_job_stage_by_id** — Get job stage by id in Greenhouse. Returns id, name, created_at, updated_at, job_id, priority, and interviews with details including interviewers and interview kit content.
- **list_all_greenhouse_user_roles** — List user roles in Greenhouse. Returns id, type, and name of each role.
- **list_all_greenhouse_offices** — List all offices in Greenhouse. Returns office id, name, location name, primary_contact_user_id, parent_id, parent_office_external_id, child_ids, child_office_external_ids, and external_id.
- **get_single_greenhouse_office_by_id** — Get information about a specific office by id in Greenhouse. Returns fields including id, name, location, primary_contact_user_id, parent_id, child_ids, and external_id.
- **update_a_greenhouse_office_by_id** — Edit an office's basic information in Greenhouse by id. Returns updated office details including name, location, parent and child office IDs, and external ID.
- **create_a_greenhouse_office** — Create a new office in Greenhouse. Provide name, optional location, primary_contact_user_id, and parent office via parent_id or external_parent_id. Requires user with office creation permission.
- **list_all_greenhouse_close_reasons** — List all close reasons in Greenhouse. Returns an array of close reasons with fields id and name.
- **list_all_greenhouse_reject_reasons** — List all rejection reasons in Greenhouse. Returns an array of rejection reasons with id, name, and type fields.
- **list_all_greenhouse_degrees** — List all degree levels for the organization in Greenhouse. Returns id, name, and priority of each degree level.
- **list_all_greenhouse_disciplines** — List all disciplines for this organization in Greenhouse. Returns id, name, and priority of each discipline sorted by priority.
- **list_all_greenhouse_schools** — List all schools for this organization in Greenhouse, returning id, name, and priority of each school.
- **list_all_greenhouse_email_templates** — List all email templates in Greenhouse. Returns id, name, description, default status, updated_at, created_at, type, from, cc, body, html_body, and user details for each template.
- **get_single_greenhouse_email_template_by_id** — Get email template by id in Greenhouse. Returns id, name, description, default status, timestamps, type, cc list, html_body, and user info.
- **list_all_greenhouse_prospect_pools** — List all prospect pools in Greenhouse. Returns id, name, active status, and prospect_stages with their ids and names for each pool.
- **get_single_greenhouse_prospect_pool_by_id** — Get information about a specific prospect pool in Greenhouse by id. Returns id, name, active status, and prospect stages with their ids and names.
- **list_all_greenhouse_job_openings** — List all openings for a job in Greenhouse using job id. Returns fields including id, opening_id, status, opened_at, closed_at, application_id, close_reason, and custom_fields.
- **list_all_greenhouse_job_permissions** — List job permissions for a user in Greenhouse by user id. Returns job permission entries including id, job_id, and user_role_id. This endpoint is only intended for use with Job Admin and/or Interviewer users, as these roles are assigned on a per job basis. Users that are Site Admins have permissions on all public jobs and will return an empty array. Basic users cannot be assigned to any jobs and will also return an empty array.
- **list_all_greenhouse_future_job_permissions** — List future job permissions for a user in Greenhouse by user id. Returns permissions including id, office_id, external_office_id, department_id, external_department_id, and user_role_id.
- **list_all_greenhouse_approval_flows** — List all approval flows for a job in Greenhouse. Requires job id. Returns approval flow id, offer_id, sequential flag, version, approval_type, approval_status, job_id, requested_by_user_id, and approver_groups with details including approver ids, names, employee_ids, and email_addresses.
- **list_all_greenhouse_pending_approvals** — Get all pending approvals for a user in Greenhouse by user id. Returns approval details including id, status, created_at, approver_group_id, hiring_plan_id, offer_id, approval_flow_id, approval_flow_type, and approval_flow_status.
- **list_all_greenhouse_activity_feeds** — Get a candidate's activity feed in Greenhouse by id. Returns notes with id, created_at, body, user info; emails with id, created_at, subject, body, to, from, cc, user info; and activities with id, created_at, subject, body, user info.
- **list_all_greenhouse_scheduled_interviews** — List all scheduled interviews in Greenhouse. Supports filtering by creation, update, start, and end timestamps, external_event_id, and actionable status. Returns interview details including id, application_id, start/end times, location, status, organizer, and interviewers.
- **list_all_greenhouse_application_scheduled_interviews** — List scheduled interviews for application with id in Greenhouse. Returns fields including id, application_id, external_event_id, start and end times, location, video_conferencing_url, status, interview details, organizer, and interviewers.
- **list_all_greenhouse_scorecards** — List all scorecards. Returns id, updated_at, created_at, interview, interview_step, candidate_id, application_id, interviewed_at, submitted_by, interviewer, submitted_at, overall_recommendation, attributes, ratings, and questions for each scorecard.
- **get_single_greenhouse_scorecard_by_id** — Get a scorecard by id in Greenhouse. Returns fields including id, candidate_id, application_id, overall_recommendation, attributes with ratings and notes, submitted_by user, interviewer, and questions with answers.
- **list_all_greenhouse_application_scorecards** — List all submitted scorecards for the application with id in Greenhouse. Returns scorecard id, interview details, candidate and application ids, submission info, overall recommendation, attributes with ratings, and question answers.
- **list_all_greenhouse_offers** — List all offers made by an organization in Greenhouse. Returns offer id, version, application_id, job_id, candidate_id, opening details, created_at, updated_at, sent_at, resolved_at, starts_at, status, and custom fields.
- **list_all_greenhouse_question_sets** — List all demographic question sets in Greenhouse. Returns id, title, description, and active status for each set.
- **list_all_greenhouse_questions** — List all demographic questions in Greenhouse. Returns id, name, demographic_question_set_id, required flag, and active status for each question.
- **list_all_greenhouse_answer_options** — List all demographic answer options in Greenhouse. Returns id, name, free_form flag, active status, and demographic_question_id for each answer option.
- **list_all_greenhouse_answers** — List all demographic answers in Greenhouse. Returns id, free_form_text, application_id, demographic_question_id, demographic_answer_option_id, created_at, and updated_at for each answer.
- **list_all_greenhouse_eeoc** — List all EEOC data submitted with optional filters submitted_before and submitted_after in Greenhouse. Returns application_id, candidate_id, race, gender, veteran_status, disability_status, and submitted_at fields.
- **get_single_greenhouse_eeoc_by_id** — Get EEOC data for an application in Greenhouse by application id. Returns application_id, candidate_id, race, gender, veteran_status, disability_status, and submitted_at timestamp.
- **list_all_greenhouse_application_offers** — List offers for an application in Greenhouse using application_id. Returns offer id, version, job_id, candidate_id, status, created_at, updated_at, sent_at, resolved_at, starts_at, and custom fields.

## How it works

1. **Link your customer's Greenhouse account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Greenhouse.** The Proxy API is a 1-to-1 mapping of the Greenhouse API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Sync structured interview data into your analytics platform** — If you're building hiring analytics or interview intelligence software, pulling scorecards, job stages, and candidate activity from Greenhouse lets your users get actionable insights without manual data entry. Truto handles auth and pagination so you can focus on the analysis layer.
- **Automate candidate pipeline actions from your assessment tool** — Assessment and screening platforms can monitor Greenhouse applications to detect stage transitions, then post results back to activity feeds and enrich candidate profiles. This keeps recruiters inside Greenhouse while your product does the heavy lifting.
- **Power onboarding workflows from accepted offers** — If your SaaS handles IT provisioning, onboarding, or HRIS sync, reading offer data along with department and office context from Greenhouse lets you trigger downstream workflows the moment a candidate accepts — no CSV exports required.
- **Build DEI and compliance reporting across your customer base** — Greenhouse exposes EEOC data at the application level. DEI analytics platforms can ingest this alongside reject reasons, sources, and job metadata to surface bias patterns and compliance gaps for their customers' talent teams.
- **Offer a native Greenhouse integration for your scheduling or interview copilot** — AI note-takers and scheduling tools need access to scheduled interviews, interviewers, and job stage context. Pulling this from Greenhouse via Truto lets your users connect their ATS in clicks, not weeks of custom API work.

## What you can build

- **Real-time scorecard sync for interview intelligence** — Fetch structured scorecards including ratings, attributes, and overall recommendations from Greenhouse to power post-interview analytics dashboards inside your product.
- **Offer-to-onboarding automation trigger** — Monitor application-level offers for accepted status, then extract start date, department, and office to automatically kick off provisioning or HRIS enrollment workflows.
- **Candidate and application pipeline viewer** — Surface a live view of your users' Greenhouse candidates, applications, and job stages directly inside your app using the Unified ATS API, so their teams never need to context-switch.
- **EEOC and reject reason analytics module** — Combine EEOC demographic data with reject reasons and source attribution to give your customers granular DEI funnel reporting without building a direct Greenhouse integration.
- **Custom field and tag mapping engine** — Read Greenhouse custom fields, custom field options, and tags to let your users map their proprietary data schema to your product's data model during onboarding.
- **Office and department hierarchy sync** — Pull the full Greenhouse office and department structure — and create or update offices — to keep organizational context consistent across your platform and your users' ATS.

## FAQs

### What authentication method does the Greenhouse integration use?

Greenhouse's Harvest API uses API key-based authentication (HTTP Basic Auth with the API key as the username). Truto manages credential storage and injection so your end users just provide their API key during the connect flow.

### Can I use the Unified ATS API instead of Greenhouse-specific tools?

Yes. Truto offers a Unified ATS API that normalizes Greenhouse resources — including Applications, Candidates, Jobs, Offers, Scorecards, Interviews, Departments, Offices, Tags, Reject Reasons, EEOC data, and Users — into a standard schema. This means the same code works if you later add other ATS providers.

### Does the integration support write operations?

Yes, for supported resources. You can create and update offices in Greenhouse via the provided tools. For broader write use cases, check the available proxy and Unified ATS API operations for your specific resource.

### How does pagination work for large Greenhouse accounts?

Greenhouse uses cursor-based pagination on list endpoints. Truto abstracts this entirely — you receive complete, paginated result sets through the unified and proxy APIs without managing page tokens yourself.

### Can I access Greenhouse custom fields and their option sets?

Yes. The integration includes tools to list all custom fields, retrieve individual custom fields by ID, and list all custom field options. This lets you dynamically map Greenhouse's custom data model into your product.

### What Greenhouse data is available for scheduled interviews?

You can list all scheduled interviews globally or scoped to a specific application. This returns interview timing, interviewers, and associated metadata — useful for scheduling tools, AI copilots, and interview prep products.

## Related reading

- [How to Integrate with the Greenhouse API: A Guide for B2B SaaS](https://truto.one/blog/how-to-integrate-with-the-greenhouse-api-a-guide-for-b2b-saas/) — A practical guide to integrating with the Greenhouse API — covering Harvest, Ingestion, and Onboarding APIs, auth quirks across v1/v2/v3, RFC-5988 pagination traps, rate limits, and how to ship faster.
- [How to Integrate Multiple ATS Platforms (Greenhouse, Lever, Workable)](https://truto.one/blog/how-to-integrate-multiple-ats-platforms-greenhouse-lever-workable/) — Learn how to integrate Greenhouse, Lever, and Workable APIs with concrete field mapping tables, cursor translation patterns, and LLM-ready response normalization via a unified ATS API.
