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

# Post a Job

> Create job postings in Essal Careers, publish them to job boards, and manage their lifecycle via the API.

Essal Careers allows you to create structured job postings, publish them to your careers site and external job boards, and track inbound applications — all through a single API.

## Creating a Job Posting

```bash theme={null}
POST /v1/careers/jobs
{
  "title": "Senior Backend Engineer",
  "department": "Engineering",
  "location": "Remote — EU",
  "employment_type": "full_time",
  "description": "<h2>About the Role</h2><p>We are looking for a senior engineer to join our platform team...</p>",
  "requirements": ["5+ years backend experience", "Proficiency in Go or Rust"],
  "pipeline_id": "cpl_01HXYZ1111"
}
```

```json theme={null}
{
  "id": "job_01HXYZJOB1",
  "title": "Senior Backend Engineer",
  "status": "draft",
  "created_at": "2026-07-10T09:00:00Z",
  "application_url": "https://careers.example.com/jobs/job_01HXYZJOB1"
}
```

## Publishing to Job Boards

Publish a job posting to your careers page and/or external boards:

```bash theme={null}
POST /v1/careers/jobs/job_01HXYZJOB1/publish
{
  "channels": ["careers_site", "linkedin", "indeed"]
}
```

<Note>
  External job board integrations (LinkedIn, Indeed) require connecting credentials in **Careers → Settings → Integrations** before they appear as available channels.
</Note>

Supported channels: `careers_site`, `linkedin`, `indeed`, `glassdoor`, `reed`, `totaljobs`.

## Managing Job Status

| Status      | Description                                         |
| ----------- | --------------------------------------------------- |
| `draft`     | Created but not visible externally                  |
| `published` | Live on all selected channels                       |
| `paused`    | Temporarily hidden; existing applications preserved |
| `closed`    | No longer accepting applications                    |
| `archived`  | Removed from active management                      |

Transition between statuses:

```bash theme={null}
# Pause a live job
POST /v1/careers/jobs/job_01HXYZJOB1/pause

# Close a job (stops applications)
POST /v1/careers/jobs/job_01HXYZJOB1/close
{ "close_reason": "Position filled" }
```

## Application Form Configuration

Control which fields appear on the application form:

```bash theme={null}
PATCH /v1/careers/jobs/job_01HXYZJOB1
{
  "application_form": {
    "fields": [
      { "name": "cover_letter", "required": true },
      { "name": "cv", "required": true },
      { "name": "portfolio_url", "required": false },
      { "name": "linkedin_url", "required": false }
    ],
    "custom_questions": [
      { "question": "What draws you to this role?", "type": "text", "required": true }
    ]
  }
}
```

<Tip>
  Keep application forms concise. Research shows that forms with more than 5 fields see significantly higher abandonment rates.
</Tip>
