# Greenhouse Harvest Documentation > Documentation for Greenhouse Harvest ## Guides: Intro to Harvest v3 - [Overview and philosophy](https://harvestdocs.greenhouse.io/docs/overview-and-philosophy.md) - [Standardizations](https://harvestdocs.greenhouse.io/docs/standardizations.md) ## Guides: Best Practices - [Authentication](https://harvestdocs.greenhouse.io/docs/authentication.md): This guide explains how to authenticate to the Greenhouse Harvest v3 API. - [Rate Limiting](https://harvestdocs.greenhouse.io/docs/api-rate-limiting.md): This guide explains our API rate limiting policy to help you build reliable and efficient applications. Understanding these limits is crucial for preventing service disruptions - [Pagination](https://harvestdocs.greenhouse.io/docs/pagination.md): Harvest v3 uses **cursor-based pagination** for list endpoints. - [List endpoints](https://harvestdocs.greenhouse.io/docs/list-endpoints.md) ## Guides: For Greenhouse Partners - [Integrating as a Greenhouse Harvest Partner (OAuth 2.0 Auth Code Grant Guide)](https://harvestdocs.greenhouse.io/docs/harvest-partner-oauth.md): This guide outlines how partner integrations must connect to the Greenhouse Harvest V3 API using the standard OAuth 2.0 Authorization Code Grant flow. You'll learn how to get authorization from… - [Handling scope changes](https://harvestdocs.greenhouse.io/docs/handling-scope-changes.md): A guide for integration partners on how to request scope updates and how these changes impact existing OAuth tokens and user authorization flows. ## Guides: Migration Guides - [READ Endpoint Migration Guide](https://harvestdocs.greenhouse.io/docs/step-by-step-migration-instructions.md) - [WRITE Endpoint Migration Guide](https://harvestdocs.greenhouse.io/docs/write-endpoint-migration-guide.md) ## API Reference: Auth API - OAuth 2.0 Token Exchange - [Generate token](https://harvestdocs.greenhouse.io/reference/generate-token.md) - OAuth 2.0 Token Introspection - [Introspect token](https://harvestdocs.greenhouse.io/reference/introspect-token.md): Introspect an OAuth 2.0 token to determine its active status and retrieve its associated metadata. ## API Reference: Harvest API - Access Token - [generate access_token](https://harvestdocs.greenhouse.io/reference/post_auth-token.md) - AI Opt-Out Statuses - [List AI opt-out statuses](https://harvestdocs.greenhouse.io/reference/get_v3-ai-opt-out-statuses.md): A candidate's decision to opt out of AI-assisted review (Talent Matching) for a specific job. Candidates opt out from the job post, confirming by emailed security code, and may do so before they ever… - Application Stages - [List application stages](https://harvestdocs.greenhouse.io/reference/get_v3-application-stages.md): 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. An… - Applications - [List applications](https://harvestdocs.greenhouse.io/reference/get_v3-applications.md): Applications represent a candidate's journey on a specific job — the bridge between a candidate (person) and a job. Each candidate can have one application per job (and prospect applications can be… - [Create application](https://harvestdocs.greenhouse.io/reference/post_v3-applications.md): Create a new application for an existing candidate. The body accepts one of two shapes: a candidate application (requires `candidate_id` + `job_id`) places the candidate at the job's first interview… - [Update application](https://harvestdocs.greenhouse.io/reference/patch_v3-applications-id.md): Patch attribution and metadata fields on an existing application (source, referrer, recruiter, coordinator, prospect pool/stage, rejection date, custom fields). Stage transitions are not handled here… - [Delete application](https://harvestdocs.greenhouse.io/reference/delete_v3-applications-id.md): Permanently delete a single application, along with its interview stages, scorecards, rejection details, and prospect details. The parent candidate (person) is left intact along with any other… - [Convert a prospect to a candidate](https://harvestdocs.greenhouse.io/reference/post_v3-applications-id-convert-to-candidate.md): 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).… - [Mark an application as hire](https://harvestdocs.greenhouse.io/reference/post_v3-applications-id-hire.md): Mark an application as hired and close out the matching opening on the job. Pass `opening_id` to identify which opening on the job the candidate fills (required when the job has more than one open… - [Move an application to a different stage within the same job or transfer to another job](https://harvestdocs.greenhouse.io/reference/post_v3-applications-id-move.md): 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. Provide `to_stage_id` to… - [Reject application](https://harvestdocs.greenhouse.io/reference/post_v3-applications-id-reject.md): 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. Pass a… - [Unreject application](https://harvestdocs.greenhouse.io/reference/post_v3-applications-id-unreject.md): Reverse a rejection, putting the application back into the in-process state on the stage it was rejected from. The previously recorded rejection reason and notes are cleared. Use this when a… - [Search applications](https://harvestdocs.greenhouse.io/reference/get_v3-applications-search.md): Search applications through Greenhouse's full-text candidate search index, returning the same application shape as `GET /v3/applications` with richer pipeline filters (job status, department, office,… - [Bulk move applications](https://harvestdocs.greenhouse.io/reference/post_v3-applications-move-bulk.md): Move many applications between stages, or to other jobs, in a single request. Each row in `data` is the body of `POST /v3/applications/{id}/move` plus the application `id`; rows are processed… - Applied Candidate Tags - [Create applied candidate tag](https://harvestdocs.greenhouse.io/reference/post_v3-applied-candidate-tags.md): Apply an existing tag to a candidate. Both `candidate_id` and `candidate_tag_id` are required; the tag must already exist in the organization's candidate-tag dictionary (create it via `POST… - [List applied candidate tags](https://harvestdocs.greenhouse.io/reference/get_v3-applied-candidate-tags.md): Applied candidate tags are the join rows between candidates and the organization's candidate-tag dictionary — one row per (candidate, tag) pair. Filter with `candidate_ids` to list every tag on a set… - [Delete applied candidate tag](https://harvestdocs.greenhouse.io/reference/delete_v3-applied-candidate-tags-id.md): Detach a single tag from a candidate. The `{id}` here is the applied-tag row id (returned by list/create), not the candidate id or the candidate_tag id; resolve it via `GET… - Approval Flows - [Create approval flow](https://harvestdocs.greenhouse.io/reference/post_v3-approval-flows.md): Create a multi-step approval flow on a job (and optionally a specific offer), seeded with the supplied approver groups. Each job allows at most one flow per `approval_type`: one `open_job` flow… - [List approval flows](https://harvestdocs.greenhouse.io/reference/get_v3-approval-flows.md): Approval flows are the multi-step approval definitions attached to a job or to a candidate's offer. Each flow has an ordered list of approver groups (`/v3/approver_groups?approval_flow_ids=`), and… - [Replace approver groups](https://harvestdocs.greenhouse.io/reference/put_v3-approval-flows-id-replace-approver-groups.md): 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. The flow must be in `pending` status;… - [Request approvals](https://harvestdocs.greenhouse.io/reference/post_v3-approval-flows-id-request-approvals.md): Start an existing `pending` approval flow by emailing its initial approver(s) and recording who requested the approvals. This is the V3 equivalent of the in-app "Request Approval" button: until it is… - [Update approval flow](https://harvestdocs.greenhouse.io/reference/patch_v3-approval-flows-id.md): 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). The flow must be in `pending` status — once… - Approver Groups - [List approver groups](https://harvestdocs.greenhouse.io/reference/get_v3-approver-groups.md): Approver groups are the ordered tiers of approvers inside a single approval flow on a job or offer. Each group has its own `approvals_required` threshold (e.g., "any 1 of 3" or "all 4") and resolves… - [Replace approver](https://harvestdocs.greenhouse.io/reference/put_v3-approver-groups-id-replace-approver.md): Swap one approver in an approver group for another user without rebuilding the rest of the approval flow — the V3 replacement for V1 `PUT… - Approvers - [List approvers](https://harvestdocs.greenhouse.io/reference/get_v3-approvers.md): Approvers are the individual users assigned to approve a job, offer, or other approvable resource. Each approver belongs to an approver group (`/v3/approver_groups`), and the group in turn belongs to… - Attachments - [Create attachment](https://harvestdocs.greenhouse.io/reference/post_v3-attachments.md): Attach a file to an existing application. Supply the bytes inline as base64-encoded `content`, or point Greenhouse at a publicly fetchable `url` and we will download the file on your behalf — exactly… - [List attachments](https://harvestdocs.greenhouse.io/reference/get_v3-attachments.md): Attachments are files associated with an application — resumes, cover letters, take-home tests, offer documents, e-signed agreements, and other supporting documents. Each attachment belongs to one… - [Delete attachment](https://harvestdocs.greenhouse.io/reference/delete_v3-attachments-id.md): Permanently remove an attachment from its application. The underlying file is also cleaned up if no other attachment references it. Deleting a `resume` clears the application's resume score and… - Blocked Spam Sources - [Bulk create blocked spam sources](https://harvestdocs.greenhouse.io/reference/post_v3-blocked-spam-sources-bulk.md): Adds multiple blocked spam sources in a single request, typically used to sync the blocklist from an external security tool. Each item in `data` is validated and persisted independently — per-item… - [Bulk delete blocked spam sources](https://harvestdocs.greenhouse.io/reference/delete_v3-blocked-spam-sources-bulk.md): Removes multiple blocked spam sources in a single request, identified by id. Future applications from the previously blocked sources will no longer be auto-rejected; applications already rejected… - [Bulk update blocked spam sources](https://harvestdocs.greenhouse.io/reference/patch_v3-blocked-spam-sources-bulk.md): Updates the `note` on multiple blocked spam sources in a single request. Each item in `data` must include the `id` of the target entry; `source_type` and `value` cannot be changed via this endpoint.… - [Create blocked spam source](https://harvestdocs.greenhouse.io/reference/post_v3-blocked-spam-sources.md): Adds a new IP address, CIDR range, email address, or email domain to the organization's spam blocklist. Once added, future applications arriving from a matching source are auto-rejected at intake;… - [List blocked spam sources](https://harvestdocs.greenhouse.io/reference/get_v3-blocked-spam-sources.md): Lists the IP addresses, CIDR ranges, email addresses, and email domains the organization has blocked from submitting applications. Entries are managed under Configure > Real Talent > Spam in the… - [Delete blocked spam source](https://harvestdocs.greenhouse.io/reference/delete_v3-blocked-spam-sources-id.md): Removes a blocked spam source. Future applications from the previously blocked IP, CIDR range, email address, or domain will no longer be auto-rejected at intake; applications already rejected… - [Update blocked spam source](https://harvestdocs.greenhouse.io/reference/patch_v3-blocked-spam-sources-id.md): 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. - Bulk Requests - [Bulk requests](https://harvestdocs.greenhouse.io/reference/get_v3-bulk-requests.md): Bulk requests track the asynchronous bulk operations submitted to Harvest V3. Each time a partner hits a `/v3//bulk` endpoint, Greenhouse creates a bulk request, returns its… - [Bulk request (single)](https://harvestdocs.greenhouse.io/reference/get_v3-bulk-requests-bulk-action-uuid.md): Retrieve a single bulk request, including the per-row success and failure result files. Each call mints fresh short-lived (5 minute) S3 URLs for `success_results_url` and `failure_results_url`;… - Candidate Attribute Types - [List candidate attribute types](https://harvestdocs.greenhouse.io/reference/get_v3-candidate-attribute-types.md): 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… - Candidate Educations - [Create candidate education](https://harvestdocs.greenhouse.io/reference/post_v3-candidate-educations.md): 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… - [List candidate educations](https://harvestdocs.greenhouse.io/reference/get_v3-candidate-educations.md): Candidate educations are the school/degree/discipline entries on a candidate's profile — one row per education entry. V3 flattens what V1 nested under `/v1/candidates/{id}/educations`; filter with… - [Delete candidate education](https://harvestdocs.greenhouse.io/reference/delete_v3-candidate-educations-id.md): Remove a single education entry from a candidate's profile. Because V3 has no update endpoint for educations, corrections are made by deleting the stale entry and creating a new one. Deleting the… - Candidate Employments - [Create candidate employment](https://harvestdocs.greenhouse.io/reference/post_v3-candidate-employments.md): 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… - [List candidate employments](https://harvestdocs.greenhouse.io/reference/get_v3-candidate-employments.md): Candidate employments are the work history entries on a candidate's profile — one row per employer/title the candidate has held. V3 flattens what V1 nested under `/v1/candidates/{id}/employments`;… - [Delete candidate employment](https://harvestdocs.greenhouse.io/reference/delete_v3-candidate-employments-id.md): Remove a single employment entry from a candidate's profile. Because V3 has no update endpoint for employments, corrections to `company_name`, `title`, or dates are made by deleting the stale entry… - Candidate Tags - [Create candidate tag](https://harvestdocs.greenhouse.io/reference/post_v3-candidate-tags.md): 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.… - [List candidate tags](https://harvestdocs.greenhouse.io/reference/get_v3-candidate-tags.md): Candidate tags are the org-wide library of tag names available to apply to candidates (e.g. `engineering`, `referral`, `2026-grad`). This endpoint returns the dictionary of available tags — to see… - [Delete candidate tag](https://harvestdocs.greenhouse.io/reference/delete_v3-candidate-tags-id.md): Remove a tag from your organization's candidate-tag dictionary. The tag is also removed from every candidate it was applied to — there's no need to delete the corresponding `applied_candidate_tags`… - Candidates - [Anonymize candidates](https://harvestdocs.greenhouse.io/reference/patch_v3-candidates-id-anonymize.md): Anonymize selected categories of personally identifiable data on a candidate (for GDPR, CCPA, or other right-to-be-forgotten requests). The `fields` array selects which data groups to scrub — see the… - [Create candidate](https://harvestdocs.greenhouse.io/reference/post_v3-candidates.md): Create a new candidate profile in your organization. `first_name` and `last_name` are required; all other profile fields are optional. A candidate is always created with one application. Pass a… - [List candidates](https://harvestdocs.greenhouse.io/reference/get_v3-candidates.md): Candidates are the people your organization is recruiting — both active applicants and prospects. A candidate record holds the personal profile (names, contact methods, tags, custom fields) and is… - [Delete candidate](https://harvestdocs.greenhouse.io/reference/delete_v3-candidates-id.md): Permanently delete a candidate and all of their applications, attachments, scorecards, notes, and other associated records. This action cannot be undone; for GDPR or right-to-be-forgotten workflows… - [Update candidate](https://harvestdocs.greenhouse.io/reference/patch_v3-candidates-id.md): Patch an existing candidate's profile fields. Only the keys included in the request body are modified; omitted keys are left untouched. Array fields (`phone_numbers`, `addresses`, `email_addresses`,… - [Merge candidates](https://harvestdocs.greenhouse.io/reference/post_v3-candidates-id-merge.md): Merge two candidate profiles by collapsing the candidate identified by `secondary_candidate_id` into the candidate at `{id}`. The primary candidate (`{id}`) survives and absorbs the secondary's… - [Search candidates](https://harvestdocs.greenhouse.io/reference/get_v3-candidates-search.md): Search candidates through Greenhouse's full-text candidate search index, returning the same candidate shape as `GET /v3/candidates` with richer pipeline filters (job, stage, recruiter, coordinator,… - [Bulk create candidates](https://harvestdocs.greenhouse.io/reference/post_v3-candidates-bulk.md): Asynchronously create many candidate profiles in a single call, typically for HRIS sync workflows that create a batch of candidates at once. Each item follows the same shape as `POST /v3/candidates`,… - Close Reasons - [List close reasons](https://harvestdocs.greenhouse.io/reference/get_v3-close-reasons.md): 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`). Each closed `opening`… - Custom Field Departments - [Create custom field department](https://harvestdocs.greenhouse.io/reference/post_v3-custom-field-departments.md): Restrict a custom field's visibility to one additional department. Each call adds one (custom_field_id, department_id) pair; repeat the call for each department the field should appear under. Once… - [List custom field departments](https://harvestdocs.greenhouse.io/reference/get_v3-custom-field-departments.md): 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. A custom field with no rows… - [Delete custom field department](https://harvestdocs.greenhouse.io/reference/delete_v3-custom-field-departments-id.md): Remove a department from a custom field's visibility scope. Deleting the last custom_field_department row for a field restores its default behavior of being visible to every department. - Custom Field Offices - [Create custom field office](https://harvestdocs.greenhouse.io/reference/post_v3-custom-field-offices.md): Restrict a custom field's visibility to one additional office. Each call adds one (custom_field_id, office_id) pair; repeat the call for each office the field should appear under. Once any… - [List custom field offices](https://harvestdocs.greenhouse.io/reference/get_v3-custom-field-offices.md): 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. A custom field with no rows in this list… - [Delete custom field office](https://harvestdocs.greenhouse.io/reference/delete_v3-custom-field-offices-id.md): Remove an office from a custom field's visibility scope. Deleting the last custom_field_office row for a field restores its default behavior of being visible to every office — useful when an org… - Custom Field Options - [Create custom field option](https://harvestdocs.greenhouse.io/reference/post_v3-custom-field-options.md): Add a new selectable value to a `single_select` or `multi_select` custom field. The parent field is identified by `custom_field_id` in the request body. If an archived option with the same name… - [List custom field options](https://harvestdocs.greenhouse.io/reference/get_v3-custom-field-options.md): 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`. Filter to a specific… - [Update custom field option](https://harvestdocs.greenhouse.io/reference/patch_v3-custom-field-options-id.md): Edit the display label, sort order, or external id of an existing custom field option. The parent `custom_field_id` cannot be moved through this endpoint — options stay attached to the field they… - [Delete custom field option](https://harvestdocs.greenhouse.io/reference/delete_v3-custom-field-options-id.md): Archive a custom field option so it can no longer be selected on new records. Deletes are soft: the row stays in the database with `active: false`, historical selections on candidates, jobs, and… - [Bulk create custom field options](https://harvestdocs.greenhouse.io/reference/post_v3-custom-field-options-bulk.md): Asynchronously add many options at once, typically for HRIS sync workflows that replace or extend a dropdown's option set in a single pass. Each item includes its own `custom_field_id`, so one batch… - [Bulk delete custom field options](https://harvestdocs.greenhouse.io/reference/delete_v3-custom-field-options-bulk.md): Asynchronously archive many options at once by id. Like the single-resource DELETE, this is a soft archive — rows are flagged `active: false`, historical selections are preserved, and archived… - [Bulk update custom field options](https://harvestdocs.greenhouse.io/reference/patch_v3-custom-field-options-bulk.md): 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. Each item… - Custom Fields - [Create custom field](https://harvestdocs.greenhouse.io/reference/post_v3-custom-fields.md): Add a new custom field to your organization's dictionary. `name`, `field_type`, and `value_type` are required. The request body shape varies by `field_type` — `job`, `offer`, `opening`, and… - [List custom fields](https://harvestdocs.greenhouse.io/reference/get_v3-custom-fields.md): Custom fields are the org-defined dictionary of structured data your organization layers onto core resources — jobs, offers, openings, candidates, applications, and users. Each row defines one field:… - [Delete custom field](https://harvestdocs.greenhouse.io/reference/delete_v3-custom-fields-id.md): 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… - [Update custom field](https://harvestdocs.greenhouse.io/reference/patch_v3-custom-fields-id.md): Edit the definition of an existing custom field. `field_type` and `value_type` are immutable — to change either, create a new field. As with create, the accepted properties vary by the field's… - Default Interviewers - [List default interviewers](https://harvestdocs.greenhouse.io/reference/get_v3-default-interviewers.md): Default interviewers are the users pre-selected as the interview panel for a specific stage on a job. When a candidate reaches that stage, these users are auto-populated as interviewers on a new… - Demographic Answer Options - [List demographic answer options](https://harvestdocs.greenhouse.io/reference/get_v3-demographic-answer-options.md): Demographic answer options are the selectable choices on a `demographic_question`. Each option belongs to a single question; multi-select and single-select questions both draw their choices from this… - Demographic Answers - [List demographic answers](https://harvestdocs.greenhouse.io/reference/get_v3-demographic-answers.md): 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… - Demographic Question Sets - [List demographic question sets](https://harvestdocs.greenhouse.io/reference/get_v3-demographic-question-sets.md): 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… - Demographic Questions - [List demographic questions](https://harvestdocs.greenhouse.io/reference/get_v3-demographic-questions.md): 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… - Departments - [Bulk update departments](https://harvestdocs.greenhouse.io/reference/patch_v3-departments-bulk.md): Asynchronously update many departments in a single request. Each item in `data` accepts the same fields as `PATCH /v3/departments/{id}` and must include the department's `id`. The request returns… - [Create department](https://harvestdocs.greenhouse.io/reference/post_v3-departments.md): Create a department in the caller's organization. Supply `parent_id` (or `external_parent_id`) to nest the new record under an existing department; omit both to create a top-level department. Set… - [List departments](https://harvestdocs.greenhouse.io/reference/get_v3-departments.md): Departments are the organizational units jobs are assigned to (e.g. `Engineering`, `Marketing`). Each organization maintains its own department tree, with `parent_id` linking a department to its… - [Update department](https://harvestdocs.greenhouse.io/reference/patch_v3-departments-id.md): Update an existing department's name, `external_id`, or position in the department tree. Use `parent_id` (or `external_parent_id`) to re-parent the department; both are optional on update and the… - EEOC - [List EEOC](https://harvestdocs.greenhouse.io/reference/get_v3-eeoc.md): 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… - Email Templates - [List email templates](https://harvestdocs.greenhouse.io/reference/get_v3-email-templates.md): Email templates are reusable subject/body pairs your organization uses to communicate with candidates, prospects, and the hiring team. Each template is categorized by `email_type` (e.g.… - Focus Candidate Attributes - [List focus candidate attributes](https://harvestdocs.greenhouse.io/reference/get_v3-focus-candidate-attributes.md): 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… - Future Job Permissions - [Create future job permission](https://harvestdocs.greenhouse.io/reference/post_v3-future-job-permissions.md): Grant a user a Job Admin role on future jobs matching an optional department and/or office scope. Pass `department_id` (or `external_department_id`) and/or `office_id` (or `external_office_id`) to… - [List future job permissions](https://harvestdocs.greenhouse.io/reference/get_v3-future-job-permissions.md): 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… - [Delete future job permission](https://harvestdocs.greenhouse.io/reference/delete_v3-future-job-permissions-id.md): Revoke a single future job permission by id. Previously-created jobs that already granted the user a role via this permission are not affected; only future jobs stop matching. Deactivated users'… - Interview Kits - [List interview kits](https://harvestdocs.greenhouse.io/reference/get_v3-interview-kits.md): 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… - Interview Media - [List interview media](https://harvestdocs.greenhouse.io/reference/get_v3-interview-media.md): Interview media contains recordings and transcripts created by Greenhouse AI notetaking. Each item belongs to an interview and identifies its application; filter by `interview_ids` or… - Interviewer Tags - [List interviewer tags](https://harvestdocs.greenhouse.io/reference/get_v3-interviewer-tags.md): 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… - Interviewers - [List interviewers](https://harvestdocs.greenhouse.io/reference/get_v3-interviewers.md): Interviewers are the panel members on actual scheduled interviews — each row pairs one interview with one user (or, for external attendees, one email address). When an interview is scheduled, the… - Interviews - [Create interview](https://harvestdocs.greenhouse.io/reference/post_v3-interviews.md): Record an interview that is already scheduled on an external calendar against a candidate's application at a specific slot on the job's interview plan. This endpoint does not create a calendar event… - [List interviews](https://harvestdocs.greenhouse.io/reference/get_v3-interviews.md): 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,… - [Delete interview](https://harvestdocs.greenhouse.io/reference/delete_v3-interviews-id.md): Cancel and delete a scheduled interview. Removes the Greenhouse interview record along with its interviewer assignments, scorecards-in-progress, and reminders. Only interviews in `scheduled` or… - [Update interview](https://harvestdocs.greenhouse.io/reference/patch_v3-interviews-id.md): Patch a scheduled interview's time, location, video conferencing link, external calendar event id, or interviewer panel. Reassign the panel by passing a full `interviewers` array (each entry must… - Job Board Custom Locations - [List job board custom locations](https://harvestdocs.greenhouse.io/reference/get_v3-job-board-custom-locations.md): Job board custom locations are the curated list of location strings a site admin maintains for posting jobs to a given job board. Each row belongs to exactly one `greenhouse_job_board` and backs the… - Job Boards - [List job boards](https://harvestdocs.greenhouse.io/reference/get_v3-job-boards.md): 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… - Job Candidate Attributes - [List job candidate attributes](https://harvestdocs.greenhouse.io/reference/get_v3-job-candidate-attributes.md): 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. This is… - Job Hiring Managers - [Create job hiring manager](https://harvestdocs.greenhouse.io/reference/post_v3-job-hiring-managers.md): Assign a user as a hiring manager on a job. The user must already exist in your organization and have permissions on the job; assigning a hiring manager is the V3 replacement for the V1 `PUT… - [List job hiring managers](https://harvestdocs.greenhouse.io/reference/get_v3-job-hiring-managers.md): 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… - [Delete job hiring manager](https://harvestdocs.greenhouse.io/reference/delete_v3-job-hiring-managers-id.md): Unassign a hiring manager from a job by deleting the join row. The `{id}` is the `id` of the `job_hiring_managers` row, not the `user_id` or `job_id`. The underlying user is not affected — only their… - Job Interview Stages - [List job interview stages](https://harvestdocs.greenhouse.io/reference/get_v3-job-interview-stages.md): Interview stages are the steps of a job's interview plan — for example `Application Review`, `Phone Screen`, `Onsite`, and `Offer`. Each stage belongs to a job and is referenced by `job_interviews`… - Job Interviews - [List job interviews](https://harvestdocs.greenhouse.io/reference/get_v3-job-interviews.md): 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… - Job Notes - [Create job note](https://harvestdocs.greenhouse.io/reference/post_v3-job-notes.md): Create a free-form note attached to a job. The note is anchored to the job referenced by `job_id` and authored on behalf of `user_id`; the resulting note is visible according to its `visibility`… - [List job notes](https://harvestdocs.greenhouse.io/reference/get_v3-job-notes.md): Job notes are free-form, organization-internal notes attached to a job (the requisition). They capture hiring-team context about the role itself and are distinct from candidate notes, which are… - [Delete job note](https://harvestdocs.greenhouse.io/reference/delete_v3-job-notes-id.md): Permanently delete a job note. The note is removed from the job's notes list and the deletion cannot be reversed. - [Update job note](https://harvestdocs.greenhouse.io/reference/patch_v3-job-notes-id.md): Update an existing job note. Any subset of `body`, `visibility`, `job_id`, or `user_id` may be supplied; fields that are omitted are left unchanged. Changing `visibility` immediately tightens or… - Job Owners - [Create job owner](https://harvestdocs.greenhouse.io/reference/post_v3-job-owners.md): Add a user to a job's hiring team as a `recruiter`, `sourcer`, or `coordinator`. The user must already exist in your organization and have permission to edit the job. For `recruiter` and… - [List job owners](https://harvestdocs.greenhouse.io/reference/get_v3-job-owners.md): 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. Each row pairs one user with one job in… - [Delete job owner](https://harvestdocs.greenhouse.io/reference/delete_v3-job-owners-id.md): Remove a user from the hiring team in one role by deleting the join row. The `{id}` is the `id` of the `job_owners` row, not the `user_id` or `job_id`. Only the user's assignment in this specific… - Job Post Locations - [Create job post location](https://harvestdocs.greenhouse.io/reference/post_v3-job-post-locations.md): Attach a location to an existing `job_post`. The supplied `type` must match the parent job board's location configuration — boards set to `office` or `custom_list` reject `free_text` values, and a… - [List job post locations](https://harvestdocs.greenhouse.io/reference/get_v3-job-post-locations.md): 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… - [Delete job post location](https://harvestdocs.greenhouse.io/reference/delete_v3-job-post-locations-id.md): Detach a single location from a job post. The `{id}` here is the `job_post_locations` row id (returned by list/create), not the `job_post_id`, `office_id`, or `custom_location_id`; resolve it via… - Job Post Searchable Locations - [List job post searchable locations](https://harvestdocs.greenhouse.io/reference/get_v3-job-post-searchable-locations.md): 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),… - Job Posts - [Create job post](https://harvestdocs.greenhouse.io/reference/post_v3-job-posts.md): Create a new job post by duplicating an existing one. The new post is attached to the same parent job as the template (`template_job_post_id`) and published to the supplied `job_board_id`. Use this… - [List job posts](https://harvestdocs.greenhouse.io/reference/get_v3-job-posts.md): Job posts are the candidate-facing listings of a job. A single job can have multiple posts — typically one per locale, geography, or audience — each published to either an external `job_board` (a… - [Update job post](https://harvestdocs.greenhouse.io/reference/patch_v3-job-posts-id.md): Edit a job post in place — change its public title, replace its HTML body, or transition its publication status between `draft` and `live`. Content updates route to `internal_content` for internal… - Jobs - [Bulk create jobs](https://harvestdocs.greenhouse.io/reference/post_v3-jobs-bulk.md): Asynchronously create many jobs in a single call, typically for HRIS sync workflows that open a batch of requisitions at once. Each item follows the same shape as `POST /v3/jobs`, with… - [Create job](https://harvestdocs.greenhouse.io/reference/post_v3-jobs.md): 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… - [List jobs](https://harvestdocs.greenhouse.io/reference/get_v3-jobs.md): Jobs are the open requisitions and hiring plans your organization is recruiting against. A job carries the role's department, offices, hiring team, interview plan, and custom fields, and is the… - [Update job](https://harvestdocs.greenhouse.io/reference/patch_v3-jobs-id.md): Patch an existing job's editable fields. Only the keys included in the request body are modified; omitted keys are left untouched. `office_ids` / `external_office_ids` and `custom_fields` replace… - [Search jobs](https://harvestdocs.greenhouse.io/reference/get_v3-jobs-search.md): Search jobs by free-text term, returning the same job shape as `GET /v3/jobs` with hiring-team and custom-field filters (assigned user and role, department, office, external posting, custom field… - Notes - [Create note](https://harvestdocs.greenhouse.io/reference/post_v3-notes.md): 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… - [List notes](https://harvestdocs.greenhouse.io/reference/get_v3-notes.md): Notes are free-form entries on a candidate's profile — candidate notes, logged emails, system activity, interview feedback, and other entries that appear in the candidate activity feed. Each note is… - [Delete note](https://harvestdocs.greenhouse.io/reference/delete_v3-notes-id.md): Permanently delete a candidate note. The note is removed from the candidate's activity feed and the deletion cannot be reversed. Deleted notes are not returned by `GET /v3/notes` and leave no record… - [Update note](https://harvestdocs.greenhouse.io/reference/patch_v3-notes-id.md): Update a candidate note. Fields that are omitted are left unchanged, and the acting user must be a Site Admin or the note's author. The endpoint follows the Greenhouse UI: `body` and `visibility` can… - [Bulk update notes](https://harvestdocs.greenhouse.io/reference/patch_v3-notes-bulk.md): Asynchronously patch many candidate notes in a single call, for example to correct the `body` or `visibility` of a batch of notes imported from another system. Each item follows the same shape as… - Offers - [Create offer](https://harvestdocs.greenhouse.io/reference/post_v3-offers.md): 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… - [List offers](https://harvestdocs.greenhouse.io/reference/get_v3-offers.md): Offers are the formal job offers extended to a candidate's application. Each offer belongs to one application and carries a `status` (`Created`, `Accepted`, `Rejected`, or `Deprecated`), a proposed… - [Update offer](https://harvestdocs.greenhouse.io/reference/patch_v3-offers-id.md): Patch fields on an existing offer. Only the keys included in the request body are modified; omitted keys are left untouched. Updates to `starts_on`, `opening_id` (when your organization versions… - Offices - [Bulk update offices](https://harvestdocs.greenhouse.io/reference/patch_v3-offices-bulk.md): Update up to the bulk-endpoint cap of offices in a single request. Each item in `data` must include the `id` of the target office plus the fields to change (same body shape as `PATCH… - [Create office](https://harvestdocs.greenhouse.io/reference/post_v3-offices.md): Create a new office for the organization. Provide a `name` and, optionally, a `location`, an `external_id`, a `primary_in_house_contact_user_id`, and a parent reference (either `parent_id` or… - [List offices](https://harvestdocs.greenhouse.io/reference/get_v3-offices.md): 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… - [Update office](https://harvestdocs.greenhouse.io/reference/patch_v3-offices-id.md): Update an existing office. Any subset of `name`, `location`, `external_id`, `parent_id` (or `external_parent_id`), and `primary_in_house_contact_user_id` may be supplied; fields that are omitted are… - Openings - [Bulk create openings](https://harvestdocs.greenhouse.io/reference/post_v3-openings-bulk.md): 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. Each item follows the same shape… - [Bulk delete openings](https://harvestdocs.greenhouse.io/reference/delete_v3-openings-bulk.md): Asynchronously remove many openings in a single call. Each item is an opening ID and is processed independently. The same constraints as `DELETE /v3/openings/{id}` apply per item, so only closed… - [Bulk update openings](https://harvestdocs.greenhouse.io/reference/patch_v3-openings-bulk.md): 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`… - [Create opening](https://harvestdocs.greenhouse.io/reference/post_v3-openings.md): 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… - [List openings](https://harvestdocs.greenhouse.io/reference/get_v3-openings.md): Openings are the individual headcount slots beneath a job — one opening per seat you intend to hire for. Each opening is filled when a candidate is hired against it (`status` becomes `closed` and… - [Delete opening](https://harvestdocs.greenhouse.io/reference/delete_v3-openings-id.md): Permanently remove an opening from its job. Only closed openings with no attached offer and no filling application can be deleted — openings that are still `open`, or that were closed as a hire… - [Update opening](https://harvestdocs.greenhouse.io/reference/patch_v3-openings-id.md): Patch an existing opening's editable fields, or change its status. Only the keys included in the request body are modified; omitted keys are left unchanged. Pass `status: "closed"` to close an open… - Pay Input Ranges - [List pay input ranges](https://harvestdocs.greenhouse.io/reference/get_v3-pay-input-ranges.md): 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. Each range belongs to one `pay_input` and one… - Pay Inputs - [List pay inputs](https://harvestdocs.greenhouse.io/reference/get_v3-pay-inputs.md): Pay inputs are the individual compensation components (e.g. `Base Salary`, `Sign-on Bonus`, `Equity`) that make up a Greenhouse pay transparency rule. Site Admins configure them under Configure >… - Prospect Details - [List prospect details](https://harvestdocs.greenhouse.io/reference/get_v3-prospect-details.md): 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… - Prospect Pool Stages - [List prospect pool stages](https://harvestdocs.greenhouse.io/reference/get_v3-prospect-pool-stages.md): 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… - Prospect Pools - [List prospect pools](https://harvestdocs.greenhouse.io/reference/get_v3-prospect-pools.md): 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. Each pool has… - Referrers - [List referrers](https://harvestdocs.greenhouse.io/reference/get_v3-referrers.md): 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… - [Create referrer](https://harvestdocs.greenhouse.io/reference/post_v3-referrers.md): Create a referrer that has no Greenhouse user account, such as an outside referrer, so applications can be credited to them. Pass the returned `id` as `referrer_id` when creating or updating an… - Rejection Details - [List rejection details](https://harvestdocs.greenhouse.io/reference/get_v3-rejection-details.md): 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… - [Update rejection detail](https://harvestdocs.greenhouse.io/reference/patch_v3-rejection-details-id.md): Patch the rejection reason or rejection question custom field answers on a rejected application without changing its `rejected_at` timestamp. The `{id}` path parameter is the rejection detail record… - Rejection Reasons - [List rejection reasons](https://harvestdocs.greenhouse.io/reference/get_v3-rejection-reasons.md): 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`,… - [Retrieve rejection reason](https://harvestdocs.greenhouse.io/reference/get_v3-rejection-reasons-id.md): Retrieve a single rejection reason by id. Use this to resolve the human-readable `name` and the categorization `type` (`We rejected them`, `They rejected us`, `None specified`, or `Security concern`)… - Scorecard Candidate Attributes - [List scorecard candidate attributes](https://harvestdocs.greenhouse.io/reference/get_v3-scorecard-candidate-attributes.md): 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. Each row pairs… - [Create scorecard candidate attribute](https://harvestdocs.greenhouse.io/reference/post_v3-scorecard-candidate-attributes.md): **Deprecated** — where available, prefer the nested `candidate_attributes` array on `POST`/`PATCH /v3/scorecards`, which writes ratings atomically with the scorecard. This endpoint remains fully… - [Updates scorecard candidate attributes](https://harvestdocs.greenhouse.io/reference/patch_v3-scorecard-candidate-attributes-id.md): **Deprecated** — where available, prefer the nested `candidate_attributes` array on `PATCH /v3/scorecards/{id}`, which updates ratings by `job_candidate_attribute_id` with no row ids needed. This… - Scorecard Question Answer Options - [List scorecard question answer options](https://harvestdocs.greenhouse.io/reference/get_v3-scorecard-question-answer-options.md): 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`,… - [Create scorecard question answer option](https://harvestdocs.greenhouse.io/reference/post_v3-scorecard-question-answer-options.md): **Deprecated** — where available, prefer the nested `question_answers` array on `POST`/`PATCH /v3/scorecards`, where a select question's `value` replaces the whole selection as a set (the only way to… - Scorecard Question Answers - [List scorecard question answers](https://harvestdocs.greenhouse.io/reference/get_v3-scorecard-question-answers.md): A scorecard question answer is one interviewer's response to a single question on a scorecard. Each row pairs a `scorecard` with a `scorecard_question` and carries the response in `answer` (for… - [Create scorecard question answer](https://harvestdocs.greenhouse.io/reference/post_v3-scorecard-question-answers.md): **Deprecated** — where available, prefer the nested `question_answers` array on `POST`/`PATCH /v3/scorecards`, which writes answers atomically with the scorecard and supports every answer type… - [Update scorecard question answer](https://harvestdocs.greenhouse.io/reference/patch_v3-scorecard-question-answers-id.md): **Deprecated** — where available, prefer the nested `question_answers` array on `PATCH /v3/scorecards/{id}`, which updates answers by `scorecard_question_id` with no answer-row ids needed. This… - Scorecard Question Candidate Attributes - [List scorecard question candidate attributes](https://harvestdocs.greenhouse.io/reference/get_v3-scorecard-question-candidate-attributes.md): Scorecard question candidate attributes are the join that tells an interviewer which focus attributes a given scorecard question is asking them to assess. Each row pairs one `scorecard_question` with… - Scorecard Question Options - [List scorecard question options](https://harvestdocs.greenhouse.io/reference/get_v3-scorecard-question-options.md): Scorecard question options are the multiple-choice values shown to interviewers for `single_select` and `multi_select` `scorecard_questions`. Each option belongs to a single parent question; the… - Scorecard Questions - [List scorecard questions](https://harvestdocs.greenhouse.io/reference/get_v3-scorecard-questions.md): Scorecard questions are the prompts configured on an `interview_kit` that interviewers answer when submitting a scorecard. Each question has a `question` body and an `answer_type` (`text`, `yes_no`,… - Scorecards - [List scorecards](https://harvestdocs.greenhouse.io/reference/get_v3-scorecards.md): 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. A… - [Create scorecard](https://harvestdocs.greenhouse.io/reference/post_v3-scorecards.md): 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… - [Update scorecard](https://harvestdocs.greenhouse.io/reference/patch_v3-scorecards-id.md): Patch an existing scorecard. The body replaces values wholesale on the fields it includes — sending a new `notes` value overwrites the previous one rather than appending. Set `status` to `complete`… - Sources - [List sources](https://harvestdocs.greenhouse.io/reference/get_v3-sources.md): 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… - Tracking Links - [List tracking links](https://harvestdocs.greenhouse.io/reference/get_v3-tracking-links.md): 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… - User Emails - [List user emails](https://harvestdocs.greenhouse.io/reference/get_v3-user-emails.md): User emails are the email addresses attached to a Greenhouse user. A user can hold multiple addresses — typically one work email plus aliases or historical addresses — but only one is the primary,… - [Create user email](https://harvestdocs.greenhouse.io/reference/post_v3-user-emails.md): Attach an additional email address to a Greenhouse user — the V3 replacement for V1 `POST /users/{id}/email_addresses`. This only adds secondary addresses; it cannot change the user's primary email… - User Job Permissions - [List user job permissions](https://harvestdocs.greenhouse.io/reference/get_v3-user-job-permissions.md): User job permissions are the per-user, per-job access grants that pair a user with a Job Admin role on a specific job. Each row represents one `(user_id, job_id, role_id)` assignment; a user with… - [Create user job permission](https://harvestdocs.greenhouse.io/reference/post_v3-user-job-permissions.md): Grant a user a Job Admin role on a single job. The `role_id` must reference a Job Admin role; site admin and deprecated role types are rejected. Site admins already have access to every… - [Delete user job permission](https://harvestdocs.greenhouse.io/reference/delete_v3-user-job-permissions-id.md): Revoke a single user job permission by id, removing that user's Job Admin role on the job. Does not affect site admin access (site admins are not represented in this resource) and does not remove any… - [Bulk create user job permissions](https://harvestdocs.greenhouse.io/reference/post_v3-user-job-permissions-bulk.md): Asynchronously grant Job Admin roles on specific jobs to many users in a single call. Each item follows the same shape as `POST /v3/user_job_permissions`, with `job_id`, `user_id`, and `role_id`… - User Roles - [List user roles](https://harvestdocs.greenhouse.io/reference/get_v3-user-roles.md): User roles are the organization-wide dictionary of access levels a user can hold — the categories themselves, not the per-user assignments. Each role has a `role_type` of `job_admin` or `site_admin`… - Users - [List users](https://harvestdocs.greenhouse.io/reference/get_v3-users.md): Users are the Greenhouse accounts inside your organization — recruiters, hiring managers, interviewers, coordinators, sourcers, and site admins. Each user has a `primary_email` (sign-in identifier),… - [Create user](https://harvestdocs.greenhouse.io/reference/post_v3-users.md): 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. Set… - [Deactivate a user](https://harvestdocs.greenhouse.io/reference/post_v3-users-id-deactivate.md): Deactivate a Greenhouse user. The user can no longer sign in or be assigned to new jobs, but all of their historical activity (notes, scorecards, emails, applications they own) is preserved. Existing… - [Activate a user](https://harvestdocs.greenhouse.io/reference/post_v3-users-id-activate.md): Reactivate a previously deactivated user so they can sign in to Greenhouse and be assigned to new jobs again. The user keeps their prior job permissions, interviewer tags, and office/department… - [Bulk create users](https://harvestdocs.greenhouse.io/reference/post_v3-users-bulk.md): Create up to the bulk-endpoint cap of users in a single request. Pass an array of user payloads in `data`, each matching the body shape of `POST /v3/users`. Each row is processed independently and… - [Bulk update users](https://harvestdocs.greenhouse.io/reference/patch_v3-users-bulk.md): Update up to the bulk-endpoint cap of users in a single request. Pass an array of user payloads in `data`; each entry must include the target `id` plus the same patchable fields accepted by `PATCH… - [Bulk deactivate users](https://harvestdocs.greenhouse.io/reference/post_v3-users-deactivate-bulk.md): Deactivate up to the bulk-endpoint cap of users in a single request. Pass an array of user ids in `data`; each id is processed independently and the response reports per-row success or failure.… - [Bulk activate users](https://harvestdocs.greenhouse.io/reference/post_v3-users-activate-bulk.md): Reactivate up to the bulk-endpoint cap of users in a single request. Pass an array of user ids in `data`; each id is processed independently and the response reports per-row success or failure.… - [Bulk revoke permissions](https://harvestdocs.greenhouse.io/reference/post_v3-users-revoke-permissions-bulk.md): Demote up to the bulk-endpoint cap of site admins to Basic users in a single request. Pass an array of user ids in `data`; each id is processed independently and the response reports per-row success… - [Revoke user permissions](https://harvestdocs.greenhouse.io/reference/post_v3-users-id-revoke-permissions.md): Demote a Site Admin to a Basic user, removing their organization-wide access. This also clears the user's existing per-job role grants (`user_job_permissions`). Safe to call on a user who is already… - [Update user](https://harvestdocs.greenhouse.io/reference/patch_v3-users-id.md): Patch an existing user's profile fields. Only the keys included in the request body are modified; all other fields are left unchanged. Array assignments (`office_ids`, `department_ids`,… ## Changelog - [cc9538d7fbd83b1aa2ec654d29e8a3a0a12b2449](https://harvestdocs.greenhouse.io/changelog/cc9538d7fbd83b1aa2ec654d29e8a3a0a12b2449.md) - [063f8a0637d3d878e95681f289231c2e5a662dd1](https://harvestdocs.greenhouse.io/changelog/063f8a0637d3d878e95681f289231c2e5a662dd1.md) - [3bd3fffeb45b537cba095661d865cfa2f9ca9319](https://harvestdocs.greenhouse.io/changelog/3bd3fffeb45b537cba095661d865cfa2f9ca9319.md) - [d5a234aab4d35b3fd2d0f8e28f43f031d0f8595e](https://harvestdocs.greenhouse.io/changelog/d5a234aab4d35b3fd2d0f8e28f43f031d0f8595e.md) - [d399a0683a95a85f4622e1300b9d7581550c2617](https://harvestdocs.greenhouse.io/changelog/d399a0683a95a85f4622e1300b9d7581550c2617.md) - [e0409a09f8bca81b996343df8f06de879121c93b](https://harvestdocs.greenhouse.io/changelog/e0409a09f8bca81b996343df8f06de879121c93b.md) - [b9fcd566de247e00c90e261d2ba9c5449b94b267](https://harvestdocs.greenhouse.io/changelog/b9fcd566de247e00c90e261d2ba9c5449b94b267.md) - [eff4cd8af67fe291abd1a0a2a047a4a65cbe6a31](https://harvestdocs.greenhouse.io/changelog/eff4cd8af67fe291abd1a0a2a047a4a65cbe6a31.md) - [bd361633a08826af02b5a8d147cfedac060ef08b](https://harvestdocs.greenhouse.io/changelog/bd361633a08826af02b5a8d147cfedac060ef08b.md) - [3c0c21c7bd3d884350427a4a6dbf3b3e6cfaca71](https://harvestdocs.greenhouse.io/changelog/3c0c21c7bd3d884350427a4a6dbf3b3e6cfaca71.md)