Skip to main content
POST
Create job

Authorizations

Authorization
string
header
required

Authenticate with a Bearer token: API key, OAuth token, or session token.

Query Parameters

include
string

Comma-separated extra sections. Value: job_status_changes. Embeds the recorded status history on the job, oldest first. Omit to leave status history off the response. Pipeline stages, custom fields, client contacts, share links, linked deals, and fees are always returned on GET /v1/jobs/{id} and on the create response.

Body

application/json
title
string
required

Job title (required). E.g. "Senior Software Engineer".

Minimum string length: 1
company_name
string

Client company name. At least one of company_name, company_domain, or company_linkedin_url required.

company_domain
string

Client company website domain (e.g. "acme.com"). Used for matching or creating the company.

company_linkedin_url
string<uri>

Client company LinkedIn URL. Used for matching or creating the company.

pipeline_template_name
string

Pipeline template name to use. Defaults to "Default Template" if omitted.

team_members
object[]

Team members to assign with their roles.

job_description
string

Plain-text job description. Returned as description in job detail, list, and search responses.

location
string

Job location (e.g. "San Francisco, CA").

primary_url
string<uri>

Primary job posting URL.

currency_code
string

ISO 4217 currency code (e.g. "USD", "EUR", "GBP").

Pattern: ^[A-Z]{3}$
job_function
string

Department or function (e.g. "Engineering", "Marketing").

open_date
string

Job opening date (YYYY-MM-DD).

Pattern: ^\d{4}-\d{2}-\d{2}$
end_date
string

Target close date (YYYY-MM-DD).

Pattern: ^\d{4}-\d{2}-\d{2}$
salary_min
integer

Minimum annual salary.

Required range: x >= 0
salary_max
integer

Maximum annual salary.

Required range: x >= 0
salary_range
string

Salary range as a single number ("120000") or a dash-separated range ("80000-120000"). Parsed into the same structured range as salary_min/salary_max. Cannot be combined with salary_min or salary_max in the same request.

Maximum string length: 50
salary_details
string

Free-text salary details that complement the structured range (e.g. "+ 0.5% equity, signing bonus negotiable"). Max 500 characters.

Maximum string length: 500
fee
number

Placement fee amount.

Required range: x >= 0
billing_contact_name
string

Name of the client-side billing contact for this job (max 255 characters).

Maximum string length: 255
billing_contact_email
string<email>

Email of the client-side billing contact for this job. Must be a valid email.

Maximum string length: 255
firm_commission_percent
number

Firm commission percentage of the placement fee (0–100).

Required range: 0 <= x <= 100
deal_ids
string<uuid>[]

Deal UUIDs to link to this job on creation via the deal_jobs join table. Each deal must belong to the same team; otherwise the request is rejected with a validation error. Resolve IDs via POST /v1/deals/search. Max 50 deals per request.

Maximum array length: 50
client_contact_ids
string<uuid>[]

Client contact UUIDs to assign to this job as client contacts. Each contact must already exist in your workspace, otherwise the request is rejected. Resolve IDs via GET /v1/client-contacts, or create contacts with POST /v1/client-contacts. Max 50 per request.

Maximum array length: 50
job_status_id
string<uuid>

Job status UUID to assign on creation. Get valid IDs from GET /v1/jobs/statuses. Defaults to the team default status when omitted.

Response

Job created

success
enum<boolean>
required
Available options:
true
data
object
required