Job SyncJob Sync

Job Sync

How jobs get into Kini — pushed through the API, pulled from the company's ATS, or crawled from the company's career page — and how to keep them up to date.

How Jobs Reach Kini

Jobs enter the platform in one of four ways:

SourceHow it works
API pushThe partner creates and updates jobs via POST /jobs and PATCH /jobs/{id}.
Managed ATS syncKini pulls jobs directly from the company's connected ATS on a regular schedule.
Career page crawlingKini crawls the company's career page and imports the published jobs automatically.
Manual creationUsers create and edit jobs by hand in the Kini App.

Regardless of the source, jobs look the same in the API: the import_source field tells you where a job came from (for example crawler for crawled jobs or manual for jobs created in the app), and all jobs trigger the same Job Updates webhook events.


Pushing Jobs via the API

Creating jobs

Create jobs with POST /jobs. Always include your external_id — it identifies the job in your system, and applications can reference it via external_job_id (see Application Flow).

POST /jobs is not an upsert: every request creates a new job. To check whether a job already exists, query it first:

GET /jobs?external_id=YOUR-JOB-ID

Updating jobs

Update existing jobs with PATCH /jobs/{id}, using the Kini job ID from the create response or from a GET /jobs?external_id=… lookup. Changes to screening_questions also refresh the job's application_form_fields.

Job statuses

StatusMeaning
activeThe job is live and can receive applications.
archivedThe job is no longer available at its source.
deletedThe job was deleted.

Career Page Crawling

For companies without an ATS connection or API integration, Kini can import jobs by crawling the company's career page:

  • Kini sets up a crawler for the company's career page and runs it on a regular schedule.
  • Published jobs are imported and kept up to date automatically; jobs that disappear from the career page are archived.
  • Crawled jobs carry import_source: "crawler" and behave like any other job — same fields, same webhooks, same application flow.

Crawling is configured by Kini per company. If you work with a company whose jobs should be imported this way, contact tech@getkini.com.


Keeping Jobs in Sync

  • Push: subscribe to the Job Updates webhook. The event field distinguishes CREATED, UPDATED (re-fetch the job and refresh cached questions), and ARCHIVED (remove the job from your system).
  • Pull: poll GET /jobs and use the last_content_update_at filter to fetch only jobs whose content changed since your last sync — see Filtering.