Skip to main content
POST
/
api
/
ats
/
v1
/
jobs
Create Job
curl --request POST \
  --url https://api.bindbee.dev/api/ats/v1/jobs \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'x-connector-token: <x-connector-token>' \
  --data '{
  "name": "SOFTWARE ENGINEER",
  "description": "We are looking for a software engineer to join our team.",
  "code": "SE-2021-01",
  "status": "OPEN",
  "job_posting_urls": [
    "https://www.company.com/careers/software-engineer"
  ],
  "confidential": false,
  "departments": [
    "018b4bfb-5ece-70b1-ad5e-862a9433aa65",
    "018b4bfb-5ece-70b1-ad5e-862a9433aa23"
  ],
  "offices": [
    "018b4bfb-5ece-70b1-ad5e-862a9433aa65",
    "018b4bfb-5ece-70b1-ad5e-862a9433aa23"
  ],
  "hiring_managers": [
    "018b4bfb-5ece-70b1-ad5e-862a9433aa65",
    "018b4bfb-5ece-70b1-ad5e-862a9433aa23"
  ],
  "recruiters": [
    "018b4bfb-5ece-70b1-ad5e-862a9433aa65"
  ],
  "template_id": "018b4bfb-5ece-70b1-ad5e-862a9433aa65",
  "remote_user_id": "018b4bfb-5ece-70b1-ad5e-862a9433aa65",
  "openings": 3
}'
"<any>"
This endpoint creates a Job in the connected ATS via Bindbee’s unified Job model.

Provider-specific behavior

Different ATS providers can have slightly different requirements and behaviors when creating jobs. Use the accordions below to see details for each provider.

When the underlying ATS is Greenhouse, a job can be created using a payload like:

{
  "remote_user_id": "019a2903-74af-78eb-8beb-d9bfce1895c7",
  "template_id": "4033879009",
  "name": "Sales Manager",
  "departments": [
    "019a1041-57f8-752d-bd75-6f5136196765"
  ],
  "offices": [
    "019a1041-5980-724f-a669-9e904be609de",
    "019a1041-5980-7d5f-ae13-0eab242cfafc"
  ],
  "openings": 1
}

Required fields

For Greenhouse, the following fields are required when creating a job through Bindbee:
  • template_id
  • remote_user_id
  • openings
All IDs (remote_user_id, departments, offices) should be the Bindbee model IDs returned from the respective unified endpoints, not raw Greenhouse IDs.

How to get template_id

  1. Fetch jobs from the Greenhouse connector using the Bindbee Jobs list endpoint.
  2. In the raw_data of each job, look for entries where is_template is true.
  3. Use either the id or remote_id from that record as the template_id when creating a job.

Greenhouse-specific notes

  • Single department only: Greenhouse allows only one department per job. Even though the Bindbee model accepts an array in departments, you should send at most one department ID for Greenhouse.
  • Multiple offices allowed: You can associate multiple offices with a job by passing multiple Bindbee office IDs in the offices array.
  • Use unified IDs: Always use IDs from Bindbee’s unified models (e.g., Departments, Offices, Remote Users) so that the same payload structure works consistently across ATS providers.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Headers

x-connector-token
string
required

Body

application/json
name
string | null

The name of the job.

Example:

"SOFTWARE ENGINEER"

description
string | null

A detailed description of the job.

Example:

"We are looking for a software engineer to join our team."

code
string | null

The internal or external code that identifies the job.

Example:

"SE-2021-01"

status
string | null

The current status of the job posting.

Example:

"OPEN"

job_posting_urls
AtsUrl · object[] | null

A list of URLs where the job is posted.

Example:
[
"https://www.company.com/careers/software-engineer"
]
confidential
boolean | null

Whether the job posting is confidential.

Example:

false

departments
string<uuid>[] | null

A list of department identifiers associated with the job.

Example:
[
"018b4bfb-5ece-70b1-ad5e-862a9433aa65",
"018b4bfb-5ece-70b1-ad5e-862a9433aa23"
]
offices
string<uuid>[] | null

A list of office identifiers where the job is located.

Example:
[
"018b4bfb-5ece-70b1-ad5e-862a9433aa65",
"018b4bfb-5ece-70b1-ad5e-862a9433aa23"
]
hiring_managers
string<uuid>[] | null

A list of identifiers for hiring managers associated with the job.

Example:
[
"018b4bfb-5ece-70b1-ad5e-862a9433aa65",
"018b4bfb-5ece-70b1-ad5e-862a9433aa23"
]
recruiters
string<uuid>[] | null

A list of identifiers for recruiters associated with the job.

Example:
["018b4bfb-5ece-70b1-ad5e-862a9433aa65"]
template_id
string | null

The template id associated with the job.

Example:

"018b4bfb-5ece-70b1-ad5e-862a9433aa65"

remote_user_id
string<uuid>

The remote user's id who is creating the job.

Example:

"018b4bfb-5ece-70b1-ad5e-862a9433aa65"

openings
integer | null

Number of openings for the job.

Example:

3

Response

Successful Response

The response is of type any.