Overview
Job feeds allow you to easily synchronize the job postings you have in your database with AI Apply. For each of your job inventory sources, set up a job feed, and periodically send an up-to-date list of all job postings using our bulk import endpoint. Kombo takes care of job posting creation, archival, updates, and more. A single job feed holds the jobs from one source, like a recruitment marketing partner or a specific employer with which you have a relationship.How an import works
The bulk import response confirms that your records are stored, not that parsing has finished. New postings start withavailability: PENDING. They become APPLYABLE after a successful parse, or UNAVAILABLE if parsing fails.
The AI Apply data-changed webhook notifies you when a posting finishes parsing or an import archives one. The webhook identifies the changed model, not individual postings. After receiving it, fetch GET Job Postings with updated_after to find the postings and their current availability.
Creating a job feed
You must create the job feed before being able to bulk import. This can be done either in the Kombo Dashboard or through the API. Via API, the POST Job Feeds endpoint returns the new feed:id identifies the feed in every import you send afterwards. You can look it up again at any time with GET Job Feeds.
Sending an import
Each import sends a newline-separated list of JSON records (NDJSON) as the request body, with one record per job posting.Query parameters in the posting URL can affect the parsed form. See Query
parameters.
How postings are matched
Inside a feed, a posting is identified by its career site label, its URL, and its job code:- A record whose combination we have seen before updates that posting.
- A new combination creates a posting and queues it for parsing.
- A posting from an earlier import that is missing from the current one is archived. Its parsed data is kept, so a later import containing it again can revive it.
Limits and failures
- Send the body as
application/x-ndjson. - A request may be at most 35 MB and take at most 5 minutes.
- Only one import can run per job feed at a time.
Example responses
A successful import responds with what happened to your postings:processed: records we read from your request.created: postings that did not exist yet and are now queued for parsing.archived: postings from earlier imports that were missing from this one.
code as the field to branch on:
API reference
- POST Bulk Import, including every error this endpoint can return
- POST Job Feeds
- GET Job Feeds