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

# POST /jobs — Create a New Job Posting on Cutshort

> Create a job posting on Cutshort. Once created, the AI matching engine begins generating a candidate shortlist based on the job's requirements.

Creating a job on Cutshort activates the AI matching engine, which begins surfacing best-fit candidates from the 4M+ talent pool. Provide a detailed description and accurate skill requirements for the best shortlist quality.

## Endpoint

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

## Request Body

<ParamField body="title" type="string" required>
  Job title. Maximum 150 characters.
</ParamField>

<ParamField body="description" type="string" required>
  Full job description. Markdown is supported. Richer, more detailed descriptions produce better AI-generated matches.
</ParamField>

<ParamField body="skills_required" type="array" required>
  Required technical skills for the role (e.g., `["Python", "Django"]`).
</ParamField>

<ParamField body="skills_preferred" type="array">
  Nice-to-have skills that are not strictly required but improve candidate fit.
</ParamField>

<ParamField body="experience_min" type="integer" required>
  Minimum years of professional experience required for this role.
</ParamField>

<ParamField body="experience_max" type="integer">
  Maximum years of experience to consider for this role.
</ParamField>

<ParamField body="location" type="string" required>
  City name (e.g., `Bengaluru`) or `Remote`.
</ParamField>

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

<ParamField body="salary_min" type="integer">
  Minimum salary for this role in INR (annual).
</ParamField>

<ParamField body="salary_max" type="integer">
  Maximum salary for this role in INR (annual).
</ParamField>

## Example Request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST 'https://api.cutshort.io/v1/jobs' \
    -H 'Authorization: Bearer YOUR_API_KEY' \
    -H 'Content-Type: application/json' \
    -d '{
      "title": "Senior Backend Engineer",
      "description": "We are looking for a Senior Backend Engineer to design and scale our core APIs...",
      "skills_required": ["Python", "Django", "PostgreSQL"],
      "skills_preferred": ["Redis", "Celery"],
      "experience_min": 4,
      "experience_max": 8,
      "location": "Bengaluru",
      "remote_type": "hybrid",
      "salary_min": 2000000,
      "salary_max": 4000000
    }'
  ```

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

  payload = {
      "title": "Senior Backend Engineer",
      "description": "We are looking for a Senior Backend Engineer to design and scale our core APIs...",
      "skills_required": ["Python", "Django", "PostgreSQL"],
      "skills_preferred": ["Redis", "Celery"],
      "experience_min": 4,
      "experience_max": 8,
      "location": "Bengaluru",
      "remote_type": "hybrid",
      "salary_min": 2000000,
      "salary_max": 4000000
  }

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

## Response

Returns `201 Created` with the newly created job object.

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

### Response Fields

<ResponseField name="id" type="string">
  Unique Cutshort job ID assigned to the newly created posting.
</ResponseField>

<ResponseField name="status" type="string">
  Initial status of the job. Always `active` on creation.
</ResponseField>

<ResponseField name="shortlist_count" type="integer">
  Number of candidates in the AI shortlist. Starts at `0` and grows as the matching engine runs.
</ResponseField>

<ResponseField name="created_at" type="string">
  ISO 8601 timestamp of when the job was created.
</ResponseField>
