---
title: "Create scorecard candidate attribute"
method: POST
path: "/v3/scorecard_candidate_attributes"
tags: ["Scorecard Candidate Attributes"]
deprecated: true
---

# Create scorecard candidate attribute

`POST /v3/scorecard_candidate_attributes`

## Request

- Base URL: `https://harvest.greenhouse.io`
- URL: `https://harvest.greenhouse.io/v3/scorecard_candidate_attributes`
- Auth: one of:
  - OAuth 2
    - Authorization code: `https://auth.greenhouse.io/authorize`
    - Client credentials
    - Token URL: `https://auth.greenhouse.io/token` scopes: `harvest:scorecard_candidate_attributes:create`
  - HTTP bearer

> **Deprecated.**

**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 supported for existing integrations. Record an interviewer's rating on one focus attribute of one scorecard. Both `scorecard_id` and `job_candidate_attribute_id` are required, and the referenced `job_candidate_attribute` must be a focus attribute on the scorecard's interview kit; submitted scorecards reject new ratings. A row may carry only a `note` with no `candidate_attribute_rating` (rating defaults to `no_decision`).

## Request body

- object
  - `scorecard_id` integer, required: Id of the scorecard this attribute rating attaches to. The scorecard's interview kit must include the referenced `job_candidate_attribute` as a focus attribute, and submitted scorecards cannot have new attribute ratings added.
  - `candidate_attribute_rating` 'definitely_not' | 'no' | 'yes' | 'strong_yes' | 'mixed' | 'no_decision': Rating to record for this attribute. One of `definitely_not`, `no`, `yes`, `strong_yes`, `mixed`, or `no_decision`. Omit to leave the attribute unrated (e.g. when only a `note` is being captured).
  - `job_candidate_attribute_id` integer, required: Id of the job's `job_candidate_attribute` (from `/v3/job_candidate_attributes`) being rated. Must be a focus attribute on the scorecard's interview kit.
  - `note` string: Optional free-text note explaining the rating.

## Response `201`

Successful

- object
  - `id` integer
  - `created_at` string, date-time
  - `updated_at` string, date-time
  - `scorecard_id` integer: Id of the scorecard this attribute rating belongs to. One row per (scorecard, attribute) pair — the interviewer rated this candidate on this attribute on this scorecard.
  - `candidate_attribute_rating` string: Interviewer's rating for the attribute on this scorecard. One of `definitely_not`, `no`, `yes`, `strong_yes`, `mixed`, or `no_decision`. `no_decision` is recorded when the row exists (e.g. a `note` was left) but no rating was selected.
  - `job_candidate_attribute_id` integer: Id of the job's `job_candidate_attribute` being rated (the per-job attribute catalogue entry on `/v3/job_candidate_attributes`). The attribute's display name and `candidate_attribute_type` live on that record.
  - `note` string, nullable: Free-text note the interviewer left for this attribute (e.g. a brief justification for the rating). `null` when no note was provided.
  - `value` string: Read-only alias of `candidate_attribute_rating`, in the same vocabulary the nested write path accepts (`candidate_attributes[].value` on `POST`/`PATCH /v3/scorecards`). A rating cleared with `value: null` reads back as `no_decision`.

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `422`: Unprocessable Content

---

[API](https://skmtc.dev/greenhouse/apis/harvest-api.md) - [All operations](https://skmtc.dev/greenhouse/apis/harvest-api/llms.txt) - [OpenAPI document](https://skmtc.dev/greenhouse/apis/harvest-api/revisions/822822e3f771?raw)
