> ## Documentation Index
> Fetch the complete documentation index at: https://developers.cutshort.io/llms.txt
> Use this file to discover all available pages before exploring further.

# PATCH /jobs/{id} — Partially Update or Close a Job

> Update a job posting's fields or change its status. Use status=closed to close a role, or status=paused to temporarily halt candidate sourcing.

Update any field on an existing job posting, or change its status to pause or close it. Partial updates are supported — only include the fields you want to change.

## Endpoint

```http theme={null}
PATCH https://api.cutshort.io/v1/jobs/{id}
```

## Path Parameters

<ParamField path="id" type="string" required>
  The unique Cutshort job ID of the posting you want to update (e.g., `job_4xRt2wPv`).
</ParamField>

## Request Body

All fields are optional. Include only the fields you want to update.

<ParamField body="title" type="string">
  Updated job title. Maximum 150 characters.
</ParamField>

<ParamField body="description" type="string">
  Updated job description. Markdown is supported.
</ParamField>

<ParamField body="skills_required" type="array">
  Revised list of required technical skills.
</ParamField>

<ParamField body="skills_preferred" type="array">
  Revised list of preferred (nice-to-have) skills.
</ParamField>

<ParamField body="experience_min" type="integer">
  Updated minimum years of experience required.
</ParamField>

<ParamField body="experience_max" type="integer">
  Updated maximum years of experience.
</ParamField>

<ParamField body="location" type="string">
  Updated city name or `Remote`.
</ParamField>

<ParamField body="remote_type" type="string">
  Updated work arrangement. One of `onsite`, `remote`, or `hybrid`.
</ParamField>

<ParamField body="salary_min" type="integer">
  Updated minimum salary in INR (annual).
</ParamField>

<ParamField body="salary_max" type="integer">
  Updated maximum salary in INR (annual).
</ParamField>

<ParamField body="status" type="string">
  Updated job status. One of `active`, `paused`, or `closed`.
</ParamField>

## Example: Close a Job

<CodeGroup>
  ```bash cURL theme={null}
  curl -X PATCH 'https://api.cutshort.io/v1/jobs/job_4xRt2wPv' \
    -H 'Authorization: Bearer YOUR_API_KEY' \
    -H 'Content-Type: application/json' \
    -d '{"status": "closed"}'
  ```

  ```python Python theme={null}
  import requests

  response = requests.patch(
      "https://api.cutshort.io/v1/jobs/job_4xRt2wPv",
      json={"status": "closed"},
      headers={"Authorization": "Bearer YOUR_API_KEY"}
  )
  data = response.json()
  ```
</CodeGroup>

## Example: Update Salary Range

<CodeGroup>
  ```bash cURL theme={null}
  curl -X PATCH 'https://api.cutshort.io/v1/jobs/job_4xRt2wPv' \
    -H 'Authorization: Bearer YOUR_API_KEY' \
    -H 'Content-Type: application/json' \
    -d '{"salary_min": 2500000, "salary_max": 4000000}'
  ```

  ```python Python theme={null}
  import requests

  response = requests.patch(
      "https://api.cutshort.io/v1/jobs/job_4xRt2wPv",
      json={"salary_min": 2500000, "salary_max": 4000000},
      headers={"Authorization": "Bearer YOUR_API_KEY"}
  )
  data = response.json()
  ```
</CodeGroup>

## Response

Returns `200 OK` with the full updated job object reflecting your changes.

```json theme={null}
{
  "id": "job_4xRt2wPv",
  "title": "Senior Backend Engineer",
  "status": "closed",
  "location": "Bengaluru",
  "remote_type": "hybrid",
  "skills_required": ["Python", "Django", "PostgreSQL"],
  "skills_preferred": ["Redis", "Celery"],
  "experience_min": 4,
  "experience_max": 8,
  "salary_min": 2500000,
  "salary_max": 4000000,
  "shortlist_count": 23,
  "created_at": "2024-01-10T09:00:00Z"
}
```

<Note>
  **Partial updates only** — omit any field you do not want to change; PATCH will not overwrite it.

  **Status transitions:** `active` ↔ `paused` are reversible. Setting `status: closed` is **permanent** — a closed job cannot be reopened via the API. Closing a job immediately stops all sourcing activity. Candidates already in the pipeline are not affected.
</Note>
