AI Opt-Out Statuses

List AI opt-out statuses

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 apply — the decision is recorded against their email address and a job, not against a candidate record. Opt-out is per job: opting out of one job says nothing about any other job the same candidate applies to. A row appears only once the decision is confirmed and the candidate has an application on that job, and only the most recently confirmed decision per candidate and job is returned. Rows persist when a candidate opts back in, carrying opted_out: false, so a partner syncing on updated_at can observe the reversal — treat a candidate with no row at all as never having made a decision, not as having opted in. Behavioral notes: confirming an opt-out deletes any Talent Matching match scores already computed for that candidate on that job, except where a recruiter has manually overridden the match strength or the application has already been rejected or hired, and no further scores are computed. Because those applications then have no AI score, they remain in the job's "Needs manual review" queue for a recruiter to assess by hand rather than being filtered out of it. This endpoint never exposes match scores. Access requires the Talent Matching product; requests from organizations without it are rejected. Beyond the harvest:ai_opt_out_statuses:list scope, a user-scoped token must belong to a site admin or to a job admin whose level grants "Can view AI opt-out status" on the job, and is otherwise rejected rather than returned an empty list.

get/v3/ai_opt_out_statuses

Request

  • Base URL
    https://harvest.greenhouse.io
  • URL
    https://harvest.greenhouse.io/v3/ai_opt_out_statuses
  • Auth
    • OAuth 2
      Authorization code: https://auth.greenhouse.io/authorize
      Client credentials
      Token URL: https://auth.greenhouse.io/token scopes: harvest:ai_opt_out_statuses:list
    • or HTTP bearer

Query parameters

cursorstring

Cursor link for pagination from previous page response header. Do not use any other parameters when using this.

per_pageinteger

Number of results per page

idsinteger[]

Comma separated list

gtestring date-time
ltestring date-time
gtstring date-time
ltstring date-time
gtestring date-time
ltestring date-time
gtstring date-time
ltstring date-time
job_idsinteger[]

Comma separated list

candidate_idsinteger[]

Comma separated list

fieldsstring[]

Comma separated list of fields to return

opted_outboolean

Filter to candidates currently opted out (true) or to those who have confirmed opting back in (false). Omit to return every recorded decision.

Response

Successful

idinteger
created_atstring date-time
updated_atstring date-time
job_idinteger

Id of the job this decision applies to. Opt-out is recorded per job, not per candidate — a candidate who opts out of one job is unaffected on every other job.

candidate_idsinteger[]

Ids of the candidates this decision currently applies to. Almost always exactly one. A decision is recorded against an email address rather than a candidate, so it lists more than one id when several candidate records share that email address and each has an application on this job.

opted_outboolean

true when the candidate has opted out of AI-assisted review for this job; false when they previously opted out and have since confirmed opting back in. Candidates who have never made a decision have no record here at all — absence is not the same as false.

featurestring

The AI feature this decision covers. Currently always talent_matching. New values may be added, so filter on this field rather than assuming every record refers to Talent Matching.

confirmed_atstring date-time

Timestamp the candidate confirmed this decision by email, in ISO 8601. Only confirmed decisions appear in this list — an unverified submission is not yet in effect. Where a candidate has confirmed more than once for a job, only the most recent decision is returned.

Changes

No recorded changes to this operation across all 1 revision of this API.