Skip to main content

Overview

The Jobs API creates and organizes job postings within your company. A job groups contacts and the conversations held about it — the backbone of a hiring workflow, and optional everywhere else.

Resource Structure

Required Scopes

Creating Jobs

Basic Job Creation

Create Job from URL

You can also create a job by providing a URL to an existing job posting. The API will scrape the page, extract structured data using AI, and create the job automatically. Set createJob to false to only extract data without creating a job entity:
Set createJob to false to preview extracted data without creating a job. The response returns 200 (instead of 201) and data contains a preview with all extracted fields — id and timestamps will be empty strings.
This endpoint has a stricter rate limit of 5 requests per minute due to web scraping and AI processing.

Comprehensive Job Creation

Listing Jobs

List All Jobs

Filter by Status

Search Jobs

Best Practice: For production integrations, always implement request timeouts.

Updating Jobs

Partial Update

Best Practice: For production integrations, always implement request timeouts.

Change Job Status

Job Status Management

Available Statuses

Job is open for applications - Can schedule conversations against it - Accepts new applications

Status Workflow

Location and Work Mode

Work Modes

Location Structure

Examples

Salary Information

Salary Structure

Examples

Skills Management

Best Practices

Deleting Jobs

Soft Delete

Jobs are soft-deleted by default:
This is a hard delete, and it cascades. The job goes, and so does every contact whose job it is — and with them their conversations, transcripts, recordings and analyses. A contact assigned to this job and others goes too: the cascade follows the job, not “contacts left with no job”. None of it is readable through the API afterwards.To stop using a job without losing anything, set its status to CLOSED instead. See Delete Job.

Before Deleting

Consider the impact:

Common Patterns

Bulk Job Creation

Job Synchronization

Job Analytics

Validation Rules

string
required
Job title (1-200 characters)
string
Detailed job description (max 10,000 characters)
array
Array of required skills (max 50 items, each max 100 chars)
enum
One of: REMOTE, ONSITE, HYBRID
string
required
ISO 3166-1 alpha-2 country code (e.g., “US”, “GB”, “DE”)
string
ISO 4217 currency code (e.g., “USD”, “EUR”, “GBP”)
enum
One of: OPEN, CLOSED, UNDEFINED Note: In practice, use OPEN (accepting applications) or CLOSED (no longer hiring)

Error Scenarios

Errors answer with the flat body described in Error Handling: a statusCode, a message, a traceId, and — on a rejected request body — an errors array with one entry per rejected constraint.
workMode is one of ONSITE, REMOTE, HYBRID or UNDEFINED.
Every by-id route (GET, PATCH, DELETE) answers this for an id that exists nowhere and for an id that belongs to another company — same status, same body. The two are deliberately indistinguishable, so a 404 never confirms that an id exists somewhere else. Do not branch on it to detect a permission problem; treat it as “this job is not available to this key”.

Best Practices

Use Draft Status

Create jobs as drafts while preparing content

Consistent Skills

Maintain a standardized skill taxonomy

Include Salary

Transparency improves who applies

Update Regularly

Keep job descriptions current and accurate

Next Steps

Contacts

Add contacts to your jobs

Conversations

Call the contacts on a job

API Reference

View complete Jobs API reference

Best Practices

Production integration patterns