---
title: "Update application"
method: PATCH
path: "/v3/applications/{id}"
tags: ["Applications"]
---

# Update application

`PATCH /v3/applications/{id}`

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 — use the `move`, `reject`, `unreject`, `hire`, or `convert_to_candidate` endpoints to advance the application's lifecycle. Only keys present in the request body are modified; omitted keys are left untouched.

## Path parameters

- `id` integer, required

## Request body

- object
  - `source_id` integer
  - `referrer_id` integer
  - `recruiter_id` integer
  - `coordinator_id` integer
  - `prospect_pool_id` number
  - `prospect_stage_id` number
  - `rejected_at` string, date
  - `created_at` string, date
  - `custom_fields` union[]
    - 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
          - boolean
          - number — User ID
          - union
            - string[]
            - number[]
          - number
          - object
            - `amount` number, required
            - `currency_code` string, 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
          - boolean
          - number — User ID
          - union
            - string[]
            - number[]
          - number
          - object
            - `amount` number, required
            - `currency_code` string, required

## Response `200`

Successful

- object
  - `id` integer
  - `created_at` string, date-time
  - `updated_at` string, date-time
  - `agency_note_id` integer, nullable — Id of the note created when the candidate was submitted by an agency, or `null` if the application did not come through an agency.
  - `candidate_id` integer — Id of the candidate (person) this application belongs to.
  - `coordinator_id` integer, nullable — Id of the user assigned as coordinator on the application's job, or `null` when unassigned.
  - `job_id` integer, nullable — Id of the job this application is on. `null` for jobless prospect applications.
  - `job_post_id` integer, nullable — Id of the job post the candidate applied through, or `null` if the application was created internally rather than from a posted role.
  - `recruiter_id` integer, nullable — Id of the user assigned as recruiter on the application's job, or `null` when unassigned.
  - `referrer_id` integer, nullable — Id of the referrer who credited this application, or `null` if there was no referral. References a referrer, not a Greenhouse user.
  - `source_id` integer, nullable — Id of the source the application is attributed to (e.g. a job board, an event, an employee referral source). `null` if no source is set.
  - `stage_id` integer, nullable — Id of the interview stage the candidate is currently in for this application. `null` for prospect applications and applications in a terminal state.
  - `job_interview_stage_id` integer, nullable — Id of the job interview stage definition (see `GET /v3/job_interview_stages`) the candidate is currently in for this application. `null` for prospect applications and applications in a terminal state.
  - `stage_name` string, nullable — Display name of the candidate's current interview stage on this application.
  - `status` 'rejected' | 'hired' | 'converted' | 'in_process' — Lifecycle status of the application. `in_process` for active candidates, `rejected` for rejected applications, `hired` once an offer is closed and the hire endpoint has fired, and `converted` for prospect applications that have been promoted to a candidate application via `convert_to_candidate`.
  - `needs_decision` boolean, nullable — `true` when the application is waiting on a hiring-team decision (scorecard completion, advance/reject, etc.) in its current stage.
  - `prospect` boolean — `true` for prospect applications (sourced candidates not yet attached to a single job), `false` for candidate applications on a specific job.
  - `rejected_at` string, date-time, nullable — Timestamp the application was rejected, in ISO 8601. `null` for applications that have not been rejected.
  - `last_activity_at` string, date-time, nullable — Timestamp of the most recent activity on this application (notes, emails, stage changes, etc.), in ISO 8601.
  - `location_address` string, nullable — Free-form location string captured on the application (typically from the job post's location question).
  - `answers` object[], nullable — Free-text answers the candidate provided on the job post application form. Each entry pairs the question text with the candidate's answer.
    - `question` string — Application-form question the candidate answered.
    - `answer` string — Candidate's free-text answer to the question.
  - `prospective_job_ids` integer[] — For prospect applications, the ids of jobs the prospect is being considered for. Empty for non-prospect applications and for jobless prospects.
  - `custom_fields` object, nullable

## Other responses

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

---

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