redraftATS intelligenceOpen App →
Developer SpecREST API AvailableWebhooks Supported

Greenhouse ATS API Docs & Webhook Guide

Technical integration specifications, authentication methods, REST endpoints, and webhook triggers for engineering teams building recruiting integrations with Greenhouse.

API Integration FactsheetRaw Markdown (.md)
Public REST API
Yes — Publicly accessible endpoints
Webhook Support
Yes — Real-time event notifications
Authentication Methods
API Key, OAuth 2.0
Official Documentation
https://developers.greenhouse.io

1. Architecture & Capabilities

Greenhouse provides comprehensive REST APIs (Harvest API & Job Board API) and real-time webhook endpoints.

When pushing parsed resume data into Greenhouse, ensure your pipeline respects its core parser schema: single-column layout parsing, strict date parsing (strict MM/YYYY enforced), and file constraints (5MB maximum).

2. Authentication

All requests to Greenhouse's API require secure authentication. Configure your HTTP client with the appropriate authorization header:

Authorization: Basic YOUR_ENCODED_KEY
Content-Type: application/json
Accept: application/json

3. Code Samples & Quickstart

cURL
# Fetch candidate applications or open vacancies
curl -X GET "https://api.greenhouse.io/v1/candidates" \
  -H "Authorization: Basic YOUR_ENCODED_KEY" \
  -H "Accept: application/json"
Python (httpx)
import httpx

headers = {
    "Authorization": "Basic YOUR_ENCODED_KEY",
    "Accept": "application/json",
}

response = httpx.get("https://api.greenhouse.io/v1/candidates", headers=headers)
candidates = response.json()
print(f"Loaded {len(candidates)} candidates from Greenhouse")
TypeScript / Node.js
interface Candidate {
  id: string;
  first_name: string;
  last_name: string;
  email: string;
}

async function listCandidates(): Promise<Candidate[]> {
  const res = await fetch("https://api.greenhouse.io/v1/candidates", {
    headers: {
      "Authorization": "Basic YOUR_ENCODED_KEY",
      "Accept": "application/json",
    },
  });

  if (!res.ok) throw new Error(`Failed to fetch from Greenhouse: ${res.statusText}`);
  return res.json();
}

4. Webhook Event Notifications

Greenhouse supports sending outbound HTTP POST webhooks to your server when recruiting events occur:

  • candidate.created — Fired when a resume is submitted and parsed.
  • application.updated — Triggered when scorecards or stages advance.
  • job.published — Notifies job board syndication networks.

Diagnose Candidate Resumes for Greenhouse

Test candidate PDFs directly against Greenhouse's parser specifications and geometry rules.