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

# Jobs

> API reference for Essal Careers job postings — create, publish, pause, close, and manage application forms.

## List Jobs

`GET /v1/careers/jobs`

**Query Parameters**

| Parameter    | Type   | Description                                          |
| ------------ | ------ | ---------------------------------------------------- |
| `status`     | enum   | `draft`, `published`, `paused`, `closed`, `archived` |
| `department` | string | Filter by department name                            |

***

## Get a Job

`GET /v1/careers/jobs/{id}`

***

## Create a Job

`POST /v1/careers/jobs`

```json theme={null}
{
  "title": "Senior Backend Engineer",
  "department": "Engineering",
  "location": "Remote — EU",
  "employment_type": "full_time",
  "description": "<p>We are looking for a senior engineer...</p>",
  "pipeline_id": "cpl_01HXYZ1111"
}
```

**Response** — `201 Created`

```json theme={null}
{
  "id": "job_01HXYZJOB1",
  "title": "Senior Backend Engineer",
  "status": "draft",
  "created_at": "2026-07-10T09:00:00Z"
}
```

***

## Publish a Job

`POST /v1/careers/jobs/{id}/publish`

```json theme={null}
{ "channels": ["careers_site", "linkedin"] }
```

***

## Pause a Job

`POST /v1/careers/jobs/{id}/pause`

Hides the posting from job boards but preserves existing applications.

***

## Close a Job

`POST /v1/careers/jobs/{id}/close`

```json theme={null}
{ "close_reason": "Position filled" }
```

***

## Update Application Form

`PATCH /v1/careers/jobs/{id}`

```json theme={null}
{
  "application_form": {
    "fields": [
      { "name": "cv", "required": true },
      { "name": "cover_letter", "required": false }
    ]
  }
}
```

***

## Delete a Job

`DELETE /v1/careers/jobs/{id}`

Archived jobs can only be deleted if they have no applications.
