greenhouse
Skill4 starsChanged 3 months agoApache-2.0View on GitHub
Greenhouse integration via Apideck's ATS unified API — same methods work across every connector in ATS, switch by changing `serviceId`. Use when the user wants to read, write, or sync jobs, applicants, and applications in Greenhouse. Routes through Apideck with serviceId "greenhouse".
- Reads credentials
2 other projects use a version of this.
Adopted by
Most recently taken up by
- wolffe/three.js-skillstheir own version, first seen Nov 8, 2026
- oliverweissl/context-gardentheir own version, first seen Nov 8, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- oliverweissl/context-garden★ 4same name
- wolffe/three.js-skills★ 4same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository182 other files it gives its agents.
- AGENTS.mdAGENTS.md
- llms.txtllms.txt
- access-financialsSkill
- acertaSkill
- activecampaignSkill
- actSkill
- acumaticaSkill
- adp-ihcmSkill
- adp-runSkill
- adp-workforce-nowSkill
- afasSkill
- alexishrSkill
- amazon-seller-centralSkill
- apideck-best-practicesSkill
- apideck-codegenSkill
- apideck-connector-coverageSkill
- apideck-dotnetSkill
- apideck-goSkill
- apideck-javaSkill
- apideck-mcp-month-end-closeSkill
- apideck-mcp-onboard-employeeSkill
- apideck-mcp-pay-billSkill
- apideck-mcp-receive-paymentSkill
- apideck-mcpSkill
- apideck-migrationSkill
- apideck-nodeSkill
- apideck-phpSkill
- apideck-portmanSkill
- apideck-pythonSkill
- apideck-restSkill
- apideck-unified-apiSkill
- asanaSkill
- attioSkill
- azure-active-directorySkill
- azure-devopsSkill
- bamboohrSkill
- banqupSkill
- basecampSkill
- bigcommerceSkill
- blackbaudSkill
- bol-comSkill
- boxSkill
- breathehrSkill
- bullhorn-atsSkill
- campfireSkill
- cascade-hrSkill
- catalystoneSkill
- cegid-talentsoftSkill
- ceridian-dayforceSkill
- cezannehrSkill
- charliehrSkill
- ciphrSkill
- clearbooks-ukSkill
- clickupSkill
- closeSkill
- copperSkill
- deelSkill
- digitsSkill
- dropboxSkill
- dualentrySkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 2 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 38
Apideck-managed credentials: not available — Greenhouse requires each integration to run on its own Greenhouse-issued partner credentials, …
- Distinctive: line 51
Every record the integration creates or updates is attributed in Greenhouse to the user who authorized the connection, so have consumers …
- Very specific: line 178
When an endpoint isn't covered by the ATS unified API, use Apideck's Proxy to call Greenhouse directly — Apideck injects auth headers and …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Greenhouse (via Apideck)
Access Greenhouse through Apideck's ATS unified API — one of 11 ATS connectors that share the same method surface. Code you write here ports to Workday, Lever, Workable and 7 other ATS connectors by changing a single serviceId string. Apideck handles auth, pagination, rate limiting, and retries so you don't write per-tenant Greenhouse plumbing.
Quick facts
- Apideck serviceId:
greenhouse - Unified API: ATS
- Auth type: basic
- Apideck setup guide: Connection guide
- Gotchas: page
- Greenhouse docs: https://developers.greenhouse.io
- Homepage: https://www.greenhouse.io/
At a glance
- Implementation difficulty: involved — Partnership Required + Harvest V3 Integration Review
- Vendor partnership required: yes (Greenhouse Integration Partner Program) — Apply through the Greenhouse Integration Partner Program; joining provides Harvest API access and a sandbox for development. No self-service developer signup.
- Apideck-managed credentials: not available — Greenhouse requires each integration to run on its own Greenhouse-issued partner credentials, entered once in the Apideck Dashboard.
- Account type required: An active Greenhouse account with a Harvest V3 partner integration provisioned.
- Consumer access level: Site Admin (or a Site-Admin service account) — Harvest V3 list endpoints return 403 for any other user; the connection runs with that user's permissions.
- Sandbox: available — Sandbox and demo organizations are granted during partner onboarding; no self-service developer sandbox. Greenhouse accounts include one on Pro plans only.
- Costs: Greenhouse publishes no fee for the Integration Partner Program or Harvest API access; consumers pay for their own Greenhouse plan. No free trial.
- Rate limits: Fixed 30-second window; no published ceiling — the X-RateLimit-* response headers are authoritative. Exceeding it returns HTTP 429 with Retry-After.
- Authentication: Authorization Code Grant against Harvest V3.
- Webhooks: Virtual webhooks — Apideck polls Greenhouse and emits ats.applicant.created, ats.applicant.updated, ats.job.created, and ats.job.updated.
Important to know:
- Greenhouse shuts down Harvest V1 and V2 on August 31, 2026. Connections created with the older API-key authentication stop working on that date — Greenhouse must sign off on your V3 review, and every existing consumer must re-authorize through the V3 OAuth flow, before then.
- Refresh tokens rotate on every use and idle-expire after 24 hours. A connection that goes a full day without activity cannot refresh itself and must be re-authorized from Vault, which makes low-traffic or seasonal integrations especially prone to dropping out.
- Every record the integration creates or updates is attributed in Greenhouse to the user who authorized the connection, so have consumers authorize deliberately — Greenhouse offers Site-Admin-only service accounts as a dedicated authorizing identity.
Facts synced from Apideck's connector metadata API —
GET /connector/connectors/greenhouse(overviewfield) is the live, authoritative version.
When to use this skill
Activate this skill when the user explicitly wants to work with Greenhouse — for example, "list open jobs in Greenhouse" or "move an applicant through stages in Greenhouse". This skill teaches the agent:
- Which Apideck unified API covers Greenhouse (ATS)
- The correct
serviceIdto pass on every call (greenhouse) - Greenhouse-specific auth and coverage caveats
For the full method surface (parameters, pagination, filtering), use your language SDK skill:
apideck-node,apideck-python,apideck-dotnet,apideck-java,apideck-go,apideck-php, orapideck-rest
For the raw OpenAPI spec:
Minimal example (TypeScript)
import { Apideck } from "@apideck/unify";
const apideck = new Apideck({
apiKey: process.env.APIDECK_API_KEY,
appId: process.env.APIDECK_APP_ID,
consumerId: "your-consumer-id",
});
// List applicants in Greenhouse
const { data } = await apideck.ats.applicants.list({
serviceId: "greenhouse",
});Portable across 11 ATS connectors
The Apideck ATS unified API exposes the same methods for every connector in its catalog. Switching from Greenhouse to another ATS connector is a one-string change — no rewrite, no new SDK.
// Today — Greenhouse
await apideck.ats.applicants.list({ serviceId: "greenhouse" });
// Tomorrow — same code, different connector
await apideck.ats.applicants.list({ serviceId: "workday" });
await apideck.ats.applicants.list({ serviceId: "lever" });This is the compounding advantage of using Apideck over integrating Greenhouse directly: code against the unified ATS API once, gain access to every connector in it. New connectors Apideck adds become available to your app without code changes.
Greenhouse via Apideck ATS
Greenhouse is the reference enterprise ATS connector on Apideck. Strong coverage for jobs, candidates, and applications.
Entity mapping
| Greenhouse entity | Apideck ATS resource |
| Job | jobs |
| Candidate | applicants |
| Application | applications |
| Job Post (external posting) | exposed via jobs[].job_posts[] |
| Stage (pipeline stage) | exposed via jobs[].stages[] |
| Scorecard / Interview | use Proxy |
| Offer | exposed as applications[].offers[] |
Coverage highlights
- ✅ Full CRUD on jobs and applicants
- ✅ Applications — create, list, update stage
- ✅ Attachments on applicants (resumes, cover letters)
- ✅ Moving candidates through pipeline stages via
application.current_stage - ⚠️ Scorecards and interview kits — read-only in Greenhouse's API; use Proxy
- ❌ User management — use Proxy (Greenhouse Users endpoint)
- ❌ Custom fields on applications — use Proxy with the Greenhouse custom field endpoints
Greenhouse-specific auth notes
- Auth type: API key — user pastes their Greenhouse key into the Vault modal.
- Key type matters: Greenhouse keys are either Harvest (read/write, full coverage) or Job Board (public-facing, read-only). Apideck needs a Harvest key for anything beyond reading published jobs. If the user provides a Job Board key, writes will 403 — direct them to generate a Harvest key in Greenhouse admin.
- On-Behalf-Of user: some Greenhouse writes (moving applications, rejecting candidates) require an
On-Behalf-Ofuser header. This is configured on the connection in the Apideck dashboard — the user picks which Greenhouse user Apideck acts as.
Common Greenhouse quirks handled by Apideck
- Candidate vs. Prospect — Greenhouse distinguishes these by whether they're attached to an Application. Apideck exposes both under
applicantsand discriminates viaapplicant.is_prospect. - Multiple applications per candidate — a Greenhouse candidate can apply to N jobs. Apideck surfaces this as
applicant.applications[]. - Timestamps — Greenhouse uses ISO 8601 with Z. Apideck passes through unchanged.
- Source tracking — Greenhouse's
sourceis a structured object; Apideck flattens toapplicant.source.name.
Example: create a candidate and an application in one flow
// 1. Create the candidate
const { data: applicant } = await apideck.ats.applicants.create({
serviceId: "greenhouse",
applicant: {
first_name: "Jordan",
last_name: "Lee",
emails: [{ email: "jordan@example.com", type: "personal" }],
},
});
// 2. Create an application for a job
const { data: application } = await apideck.ats.applications.create({
serviceId: "greenhouse",
application: {
applicant_id: applicant.data.id,
job_id: "job_4001",
source: { name: "Referral" },
},
});Example: move an application to the next stage
await apideck.ats.applications.update({
serviceId: "greenhouse",
id: "app_123",
application: { current_stage: { id: "stage_phone_screen" } },
});Escape hatch: Proxy API
When an endpoint isn't covered by the ATS unified API, use Apideck's Proxy to call Greenhouse directly — Apideck injects auth headers and handles token refresh. Set x-apideck-downstream-url to the target endpoint on Greenhouse's own API:
curl 'https://unify.apideck.com/proxy' \
-H "Authorization: Bearer ${APIDECK_API_KEY}" \
-H "x-apideck-app-id: ${APIDECK_APP_ID}" \
-H "x-apideck-consumer-id: ${CONSUMER_ID}" \
-H "x-apideck-service-id: greenhouse" \
-H "x-apideck-downstream-url: <target endpoint on Greenhouse>" \
-H "x-apideck-downstream-method: GET"See Greenhouse's API docs for available endpoints.
Sibling connectors
Other ATS connectors that share this unified API surface (same method signatures, just change serviceId):
workday, lever, workable (beta), bullhorn-ats (beta), teamtailor (beta), freshteam, jobadder (beta), recruitee, and 2 more.
See also
- Apideck connection guide for Greenhouse
- ATS OpenAPI spec · API Explorer
apideck-connector-coverage— programmatic coverage checksapideck-best-practices— architecture, Vault, pagination, error handlingapideck-node— TypeScript / Node SDK patterns- Greenhouse official docs
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

