---
title: "Bulk import job postings"
method: POST
path: "/ai-apply/job-feeds/{job_feed_id}/bulk-import"
tags: ["AI Apply"]
---

# Bulk import job postings

`POST /ai-apply/job-feeds/{job_feed_id}/bulk-import`

## Request

- Base URL: `https://api.kombo.dev/v1`
- URL: `https://api.kombo.dev/v1/ai-apply/job-feeds/{job_feed_id}/bulk-import`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/kombo/apis/kombo-api/docs/ai-apply/job-feeds/:job_feed_id/bulk-import/post.ts> (a function with typed inputs; its response is checked against the schema)

Bulk import job postings into a job feed using NDJSON (newline-delimited JSON) format.

**Request Format:**
Send one JSON object per line. Each line represents a job posting to import.

**Example Request Body:**
```
{"url":"https://careers.acme.com/job/1","career_site_label":"ACME Corp"}
{"url":"https://careers.acme.com/job/2","career_site_label":"ACME Corp","job_code":"ENG-123"}
{"url":"https://careers.acme.com/job/3","career_site_label":"ACME Corp","location":{"country":"US","postal_code":"94115"}}
```

**Behavior:**
- Career sites are automatically created based on unique `career_site_label` values
- Job postings are identified by the combination of URL + career_site_label + job_code
- Existing job postings are updated; new ones are created and queued for parsing
- Job postings from previous imports that are not included in the current import are archived

**Constraints:**
- Maximum request size: 35 MB
- Timeout: 5 minutes
- One concurrent import per job feed

## Path parameters

- `job_feed_id` string, required

## Request body `application/x-ndjson`

- string: NDJSON stream - each line is a JSON object representing a job posting

## Response `200`

Import completed successfully

- BulkImportResponse: Response from the bulk import endpoint
  - `status` 'success', required
  - `data` object, required
    - `created` integer, required: Number of new job postings created
    - `processed` integer, required: Number of job postings processed
    - `archived` integer, required: Number of job postings archived (not included in this import)

## Other responses

- `default`: The standard error response with the error codes for AI Apply.

## Changes

- **2026-08-14** `4700ff777f86`: 1 warning
  - added the new `AI_APPLY.JOB_POSTING_ALREADY_EXISTS` enum value to the `error/code` response property for the response status `default`
- **2026-07-13** `d0e06abf1118`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/kombo/apis/kombo-api/changes/ai-apply/job-feeds/:job_feed_id/bulk-import/post.md)

---

[API](https://skmtc.dev/kombo/apis/kombo-api.md) - [All operations](https://skmtc.dev/kombo/apis/kombo-api/llms.txt) - [OpenAPI document](https://skmtc.dev/kombo/apis/kombo-api/revisions/2eba6bd4a150?raw)
