---
title: "Update rejection detail"
method: PATCH
path: "/v3/rejection_details/{id}"
tags: ["Rejection Details"]
---

# Update rejection detail

`PATCH /v3/rejection_details/{id}`

## Request

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

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 id, not the application id — fetch it from `GET /v3/rejection_details?application_ids={application_id}` first. The application must already be rejected; this endpoint cannot reject an application that is still in process. Only the keys included in the request body are modified; `custom_fields` replaces the listed rejection question values wholesale.

## Path parameters

- `id` integer, required

## Request body

- object
  - `rejection_reason_id` integer: Id of the rejection reason to associate with the application. Must reference a `/v3/rejection_reasons` row in the same organization. Updating this value does not change the application's existing `rejected_at` timestamp.
  - `custom_fields` union[]: Values for the application's rejection question custom fields. Each entry sets one custom field by name or id; only fields configured as rejection questions on the organization apply. Replaces the listed fields wholesale — omit entries you do not want to modify.
    - union
      - object
        - `name_key` string, required: Required if custom_field_id is not provided. Exactly one of name_key or custom_field_id must be specified.
        - `custom_field_id` integer: Required if name_key is not provided. Exactly one of name_key or custom_field_id must be specified.
        - `value` union
          - string
          - string
          - string
          - string
          - string
          - boolean
          - number: User ID
          - union
            - number
            - string
          - union
            - string[]
            - number[]
          - number
          - object
            - `amount` number, required
            - `currency_code` string, required
          - object
            - `min_amount` number, required
            - `max_amount` number, required
            - `currency_code` string, required
          - object
            - `min_value` number, required
            - `max_value` number, required
      - object
        - `name_key` string: Required if custom_field_id is not provided. Exactly one of name_key or custom_field_id must be specified.
        - `custom_field_id` integer, required: Required if name_key is not provided. Exactly one of name_key or custom_field_id must be specified.
        - `value` union
          - string
          - string
          - string
          - string
          - string
          - boolean
          - number: User ID
          - union
            - number
            - string
          - union
            - string[]
            - number[]
          - number
          - object
            - `amount` number, required
            - `currency_code` string, required
          - object
            - `min_amount` number, required
            - `max_amount` number, required
            - `currency_code` string, required
          - object
            - `min_value` number, required
            - `max_value` number, required

## Response `200`

Successful

- object
  - `id` integer
  - `created_at` string, date-time
  - `updated_at` string, date-time
  - `application_id` integer: Id of the application this rejection record belongs to. Rejection details exist only for rejected applications; there is one record per rejected application.
  - `rejected_by_id` integer, nullable: Id of the user who rejected the application. `null` for system-initiated rejections such as auto-rejection workflows.
  - `rejection_note_id` integer, nullable: Id of the note created on the application capturing the free-text rejection message, or `null` when no note was entered. The note body itself is not returned here — fetch it through `/v3/notes/{id}`.
  - `rejection_reason_id` integer, nullable: Id of the rejection reason selected for the application. References a `/v3/rejection_reasons` row scoped to the organization. `null` when the application was rejected without a reason.
  - `rejected_at` string, date-time, nullable: Timestamp the application was rejected, in ISO 8601. `null` only for legacy or partially backfilled rejection records.
  - `question_custom_fields` object, nullable

## 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)
