---
title: "Create scorecard"
method: POST
path: "/v3/scorecards"
tags: ["Scorecards"]
---

# Create scorecard

`POST /v3/scorecards`

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 the application's job. Send `status: "draft"` to stash an in-progress scorecard, or `status: "complete"` to submit immediately — submitting stamps `submitted_at` and locks the scorecard outside the organization's edit window.

## Request body

- object
  - `interview_kit_id` integer, required — Id of the interview kit this scorecard is filled out against. Must belong to the same job as the `application_id`.
  - `interviewer_id` integer, required — Id of the Greenhouse user this scorecard is assigned to (the interviewer being scored against).
  - `interviewed_at` string, date-time, required — Timestamp the interview took place, in ISO 8601. Used to compute time-to-submit and to align the scorecard with the interview slot.
  - `notes` string — Free-text "key takeaways" the interviewer is recording (pros, cons, follow-ups). Plain text; `@`-mentions are accepted and stored alongside the rendered names.
  - `candidate_rating` 'strong_no' | 'no' | 'yes' | 'strong_yes' | 'no_decision' — Overall recommendation for the candidate. One of `strong_no` ("Definitely Not"), `no`, `yes`, `strong_yes`, or `no_decision`. Pass `no_decision` to submit the scorecard without picking a recommendation.
  - `private_notes` string — Free-text private notes; only users with the "see private notes" permission can read these back.
  - `status` 'draft' | 'complete' — Initial lifecycle status. Send `draft` to create an in-progress scorecard, or `complete` to submit it immediately — sending `complete` also stamps `submitted_at`.
  - `public_notes` string — Free-text "note to other interviewers" shared with the rest of the hiring team.
  - `application_id` integer, required — Id of the application the scorecard belongs to. The application's job must own the supplied `interview_kit_id`.
  - `submitter_id` integer, required — Id of the user submitting the scorecard. Usually matches `interviewer_id`; set differently when an admin is filing the scorecard on the interviewer's behalf.

## Response `201`

Successful

- object
  - `id` integer
  - `created_at` string, date-time
  - `updated_at` string, date-time
  - `interview_kit_id` integer — Id of the interview kit this scorecard was filled out against. The kit determines the questions, focus attributes, and rating scale on the scorecard. The kit also identifies which interview slot on the job's interview plan produced this scorecard.
  - `interviewer_id` integer — Id of the Greenhouse user who participated in the interview and to whom this scorecard is assigned. Each interviewer on a multi-interviewer interview gets their own scorecard.
  - `interviewed_at` string, date-time, nullable — Timestamp the interview took place, in ISO 8601. Mirrors the underlying interview's scheduled time and is set when the scorecard is created (manual scorecards may set this independently).
  - `notes` string, nullable — Free-text "key takeaways" the interviewer recorded on the scorecard (pros, cons, follow-ups). Plain text with `@`-mentions rendered as user names; use `notes_with_tags` for the version where mentions are tagged for downstream parsing.
  - `notes_with_tags` string, nullable — `notes` with `@`-mentions rendered as embedded user tags (e.g. `@[User Name](user:123)`) instead of plain user names, for partners that need to resolve mentioned users.
  - `submitter_id` integer — Id of the Greenhouse user who actually submitted the scorecard. Usually the same as `interviewer_id`, but differs when an admin submits a scorecard on another interviewer's behalf.
  - `candidate_rating` string — Interviewer's overall recommendation on whether the candidate passed the interview. One of `strong_no` ("Definitely Not" in the UI), `no`, `yes`, `strong_yes`, or `no_decision`. `no_decision` is recorded when the interviewer submitted the scorecard without choosing a recommendation.
  - `private_notes` string, nullable — Free-text private notes visible only to users with the "see private notes" permission. Plain text with `@`-mentions rendered as user names; use `private_notes_with_tags` for the tagged version.
  - `private_notes_with_tags` string, nullable — `private_notes` with `@`-mentions rendered as embedded user tags instead of plain user names.
  - `status` 'draft' | 'complete' — Lifecycle status of the scorecard. `draft` is in-progress and not yet submitted; `complete` is submitted (and `submitted_at` is set). Only complete scorecards count toward interview completion and downstream analysis.
  - `public_notes` string, nullable — Free-text "note to other interviewers" the interviewer leaves for the rest of the hiring team. Plain text with `@`-mentions rendered as user names; use `public_notes_with_tags` for the tagged version.
  - `public_notes_with_tags` string, nullable — `public_notes` with `@`-mentions rendered as embedded user tags instead of plain user names.
  - `application_id` integer — Id of the application this scorecard belongs to. Use it to look up the candidate via the applications endpoint.
  - `submitted_at` string, date-time, nullable — Timestamp the scorecard was submitted (moved from `draft` to `complete`), in ISO 8601. `null` while `status` is `draft`. The delta between `interviewed_at` and `submitted_at` is a common "time to submit scorecard" measure.

## Other responses

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

---

[API](https://skmtc.dev/greenhouse/apis/auth-api.md) · [All operations](https://skmtc.dev/greenhouse/apis/auth-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/greenhouse/auth-api/revisions/9517a2e54640/schema)
