Get jobs
Changed onRetrieve all jobs.
Visit our in-depth guides to learn more about:
- 🔄 Getting updates of the data
- ❗ Handling failing syncs
- 🔍 Letting your customer choose which jobs to expose
- 🔗 Matching jobs in your database to ATS jobs
- 🗑️ Reacting to deleted/closed jobs
Top level filters use AND, while individual filters use OR if they accept multiple arguments. That means filters will be resolved like this: (id IN ids) AND (remote_id IN remote_ids)
Request
- Base URLhttps://api.kombo.dev/v1
- AuthHTTP bearer
- TypeScriptA function with typed inputs. Its response is checked against the schema.
Query parameters
An optional cursor string used for pagination. This can be retrieved from the next property of the previous page response.
The number of results to return per page. Maximum is 250.
Filter the entries based on the modification date in format YYYY-MM-DDTHH:mm:ss.sssZ. Returns records where either the record itself OR its nested data has been updated since this timestamp, even if the record's own changed_at field remains unchanged.
If you want to track entry deletion, also set the include_deleted=true query parameter, because otherwise, deleted entries will be hidden.
For more details, see Understanding changed_at vs updated_after Behavior.
For this endpoint, updated_after matches when the returned record changed, or when related data changed as described below.
| Path | Added/Removed | Linked Record |
|---|---|---|
| stages | ✓ Yes | ✗ No |
| screening_questions | ✓ Yes | ✓ Yes |
| job_postings | ✓ Yes | ✓ Yes |
| hiring_team | ✓ Yes | ✗ No |
Added/Removed: Whether adding or removing entries from this list triggers an update (n/a for single records). Linked Record: Whether changes to the linked record itself trigger an update.
By default, deleted entries are not returned. Use the include_deleted query param to include deleted entries too.
When set to true, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
Filter by a comma-separated list of IDs such as 222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3.
Filter by a comma-separated list of remote IDs.
Filter by a comma-separated list of job codes.
Filter by the post_url field. Can be used to find a job based on its public posting URL.
(⚠️ Deprecated - Use the statuses filter instead.) Filter by the status field. Can be used to find a job based on its status.
Filter by a comma-separated list of OPEN, CLOSED, DRAFT, ARCHIVED
Leave this blank to get results matching all values.
Filter by a comma-separated list of FULL_TIME, PART_TIME, CONTRACT, SEASONAL, INTERNSHIP
Leave this blank to get results matching all values.
Filter by a comma-separated list of PUBLIC, INTERNAL, UNLISTED, CONFIDENTIAL
Leave this blank to get results matching all values.
Filter jobs by the day they were created in the remote system. This allows you to get jobs that were created on or after a certain day.
Filter by the name field. Can be used to find a job by keywords present in the job name.
Headers
ID of the integration you want to interact with.
Response
GET /ats/jobs Positive response
Example response
{
"data": {
"next": "eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=",
"results": [
{
"id": "H5daSm8e85Dmvmne3wLeCPhX",
"remote_id": "32",
"name": "Backend Engineer",
"job_code": "BE-2021-01",
"description": "<p>Kombo is hiring engineers! If you are reading this and you are located in Berlin, Germany, feel free to contact us about this position.</p>",
"confidential": false,
"weekly_hours": 37,
"employment_type": "FULL_TIME",
"status": "OPEN",
"visibility": "PUBLIC",
"category": "Technical Job",
"department": "Engineering",
"post_url": "https://jobs.example.com/post/159829112",
"experience_level": "Mid-Senior",
"remote_work_status": "HYBRID",
"salary_amount": 4200,
"salary_amount_from": null,
"salary_amount_to": null,
"salary_currency": "EUR",
"salary_period": "MONTH",
"location": {
"city": "Berlin",
"country": "DE",
"raw": "Berlin, Germany",
"state": "Berlin",
"street_1": "Lohmühlenstraße 65",
"street_2": null,
"zip_code": "12435"
},
"custom_fields": {},
"integration_fields": [],
"remote_url": "https://app.greenhouse.io/jobs/32",
"opened_at": "2022-08-07T14:01:29.196Z",
"closed_at": null,
"remote_created_at": "2022-08-07T14:01:29.196Z",
"remote_updated_at": "2022-08-07T14:01:29.196Z",
"contact_id": "6gT2yLMBEipd3zpezATv3Rhu",
"remote_data": null,
"changed_at": "2022-08-07T14:01:29.196Z",
"remote_deleted_at": null,
"stages": [
{
"id": "5J7L4b48wBfffYwek9Az9pkM",
"remote_id": "32",
"name": "Initial Screening",
"status": "ACTIVE",
"custom_fields": {},
"integration_fields": [],
"remote_data": null,
"index": 0
}
],
"screening_questions": [
{
"id": "26vafvWSRmbhNcxJYqjCzuJg",
"remote_id": "48b4d36a-1d4b-4c50-ada7-9519078e65b4",
"title": "Which is your primary programming language?",
"description": "Please enter the language you are most comfortable with.",
"format": {
"display_type": "SINGLE_LINE",
"max_length": null,
"type": "TEXT"
},
"category": null,
"index": 0,
"required": true,
"precondition_question_id": "4ZVteCSSgDw3BdwGzcQqGEPk",
"precondition_options": [
"7qd5qjPwDHarsMLFMGzXYG1K"
]
}
],
"job_postings": [
{
"id": "26vafvWSRmbhNcxJYqjCzuJg",
"remote_id": "48b4d36a-1d4b-4c50-ada7-9519078e65b4",
"title": "Frontend Engineer",
"description_html": "<p>We are looking for a Frontend Engineer.</p>",
"status": "ACTIVE",
"visibility": "PUBLIC",
"url": "https://jobs.example.com/post/159829112",
"remote_data": null
}
],
"hiring_team": [
{
"id": "26vafvWSRmbhNcxJYqjCzuJg",
"remote_id": "32",
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@kombo.dev",
"hiring_team_roles": [
"RECRUITER",
"HIRING_MANAGER"
],
"job_roles": [
{
"remote_id": "1",
"remote_label": "Hiring Manager",
"unified_type": "HIRING_MANAGER",
"scope": "JOB"
}
]
}
]
}
]
}
}Changes
- info
added the required property
/////to the response with the status - info
added the required property
/////to the response with the status - info
added the required property
/////to the response with the status
- info
- breaking
the
//response's property type changed from no type toobjectfor status - info
added the new optional
queryrequest parameteremployment_types - info
added the new optional
queryrequest parameterignore_unsupported_filters - info
added the new optional
queryrequest parameterjob_codes - info
added the new optional
queryrequest parametername_contains - info
added the new optional
queryrequest parameterremote_created_after - info
added the new optional
queryrequest parameterstatus - info
added the new optional
queryrequest parameterstatuses - info
added the new optional
queryrequest parametervisibilities - info
removed the pattern
/^([\da-z]{24}(,[\da-z]{24})*)?$/ifrom thequeryrequest parameterids - info
removed the non-success response with the status
- info
removed the non-success response with the status
- info
removed the non-success response with the status
- info
removed the non-success response with the status
- info
removed the non-success response with the status
- info
added the optional property
///to the response with the status - info
added the optional property
///to the response with the status - info
added the optional property
///to the response with the status - info
added the optional property
///to the response with the status - info
added the optional property
///to the response with the status - info
added the optional property
///to the response with the status - info
removed
subschema #1subschema #2from the//response propertyallOflist for the response status - info
the
response property const valuesuccesswas added for the status - info
removed the
successenum value from theresponse property for the response status - info
added the required property
///to the response with the status - info
added the required property
///to the response with the status - info
added the required property
///to the response with the status - info
added the required property
///to the response with the status - info
added the required property
///to the response with the status - info
added the required property
///to the response with the status - info
added the required property
///to the response with the status - info
added the required property
///to the response with the status - info
added the required property
///to the response with the status - info
added the required property
///to the response with the status - info
added the required property
///to the response with the status - info
added the required property
///to the response with the status - info
added the required property
///to the response with the status - info
added the required property
///to the response with the status - info
added the required property
///to the response with the status - info
added the required property
///to the response with the status - info
added the required property
///to the response with the status - info
added the required property
///to the response with the status - info
added the required property
///to the response with the status - info
added the required property
///to the response with the status - info
added the required property
///to the response with the status - info
added the required property
///to the response with the status - info
added the required property
///to the response with the status - info
added the required property
///to the response with the status - info
added the required property
///to the response with the status - info
added the required property
///to the response with the status - info
added the required property
///to the response with the status - info
added the required property
///to the response with the status - info
added the required property
///to the response with the status - info
added the required property
///to the response with the status
- breaking