---
title: "List the import jobs of a schema"
method: GET
path: "/v1/entity:importHistory"
tags: ["Import-Export"]
---

# List the import jobs of a schema

`GET /v1/entity:importHistory`

## Request

- Base URL: `https://entity.sls.epilot.io`
- URL: `https://entity.sls.epilot.io/v1/entity:importHistory`
- Auth: one of:
  - HTTP bearer
  - API key in header `x-epilot-org-id`

Lists the import jobs (imports and dry runs) of a schema in the organization, newest first: the
running job, if any, then the jobs that ended in the last 30 days. Every caller with access sees
every job. Without jobs the list is empty; this operation does not answer 404.

## Query parameters

- `schema` string, required
- `limit` integer

## Response `200`

The import jobs of the schema, newest first.

- object
  - `jobs` ImportJobSummary[], required
    - `job_id` string, required: The ID of the import job, as returned in `jobPollId`. Poll it to resume the job.
    - `schema` string, required
    - `status` 'PROCESSING' | 'COMPLETED' | 'FAILED' | 'CANCELLED', required
    - `dry_run` boolean, required
    - `trigger_automations` boolean
    - `started_by` string: User id of whoever started the job.
    - `started_at` string, date-time, required
    - `finished_at` string, date-time
    - `file_name` string: Name of the imported file, for display.
    - `total` integer
    - `importedEntitiesCount` integer
    - `failedEntitiesCount` integer
    - `outcome_counts` ImportRowOutcomeCounts: Number of rows per outcome, in the order the outcomes are evaluated.
      - `error` integer
      - `skipped_empty_key` integer
      - `skipped_duplicate_in_file` integer
      - `skipped_id_not_found` integer
      - `skipped_ambiguous` integer
      - `create` integer
      - `unchanged` integer
      - `update` integer
    - `failure_code` 'invalid_csv_bad_headers' | 'dry_run_required' | 'dry_run_mismatch' | 'dry_run_expired' | 'import_file_changed' | 'prescan_missing' | 'import_too_large' | 'token_expired' | 'max_duration_exceeded' | 'no_progress' | 'internal_error': Machine readable reason of a failed job. `failure_reason` holds the human text. - `invalid_csv_bad_headers`: the file has neither a `_schema` nor an `_id` column - `dry_run_required`, `dry_run_mismatch`, `dry_run_expired`: the dry-run rule rejected the commit before any row - `import_file_changed`: the file was replaced after the pre-scan - `prescan_missing`: the job cannot be continued after an update - `import_too_large`: the file has more rows than a single job can report on - `token_expired`: the session that started the job expired before it finished - `max_duration_exceeded`: the job ran longer than allowed - `no_progress`: consecutive runs made no progress - `internal_error`: an unexpected error ended the job
    - `unique_key` string[]

## Other responses

- `400`: Bad Request
- `403`: Forbidden
- `429`: Too many requests

## Changes

- **2026-10-15** `299db8038dd4`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/epilot/apis/entity-api/changes/v1/entity:importHistory/get.md)

---

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