---
title: "List file imports"
method: GET
path: "/file_imports"
---

# List file imports

`GET /file_imports`

Returns a cursor-paginated list of file imports across all data streams, newest first. Filter to one stream with `data_stream_key` (equivalent to GET /data_streams/{key}/file_imports, which also returns per-import aggregates).

## Query parameters

- `data_stream_key` string
- `limit` integer
- `cursor` string
- `status` 'pending' | 'processing' | 'replicating' | 'completed' | 'failed' | 'cancelled'
- `source` string
- `created_after` string, date-time
- `created_before` string, date-time

## Response `200`

Cursor-paginated list of file imports

- object
  - `data` FileImport[]
    - `id` integer
    - `status` 'pending' | 'processing' | 'replicating' | 'completed' | 'failed' | 'cancelled'
    - `source` string, nullable — Origin of the import (e.g. `csv`, `nacha`, `bulk_api`)
    - `filename` string, nullable
    - `total_items` integer
    - `processed_items` integer
    - `successful_items` integer
    - `failed_items` integer
    - `skipped_items` integer — Records skipped due to `on_conflict: skip` matching an existing `external_id`
    - `expected_records_count` integer, nullable
    - `progress` integer — processed_items / total_items as a percentage (0-100)
    - `parsing` boolean — True until rows start landing; file totals are unknown while parsing
    - `decimal_places` integer — Number of decimal places (2 for USD)
    - `stuck` boolean — Currently processing with no heartbeat for >5 minutes
    - `on_conflict` string, nullable
    - `error_message` string, nullable
    - `error_details` object, nullable
    - `data_stream_ids` integer[]
    - `created_at` string, date-time
    - `started_at` string, date-time, nullable
    - `records_written_at` string, date-time, nullable
    - `completed_at` string, date-time, nullable
    - `last_progress_at` string, date-time, nullable
    - `cancellation_requested_at` string, date-time, nullable
    - `url` string — e.g. /v1/file_imports/123
    - `records_url` string — e.g. /v1/file_imports/123/records
    - `record_count` integer — Aggregate; stream-scoped index only
    - `total_credits` integer — Aggregate, in cents; stream-scoped index only
    - `total_debits` integer — Aggregate, in cents; stream-scoped index only
    - `net_amount` integer — Aggregate: credits minus debits, in cents; stream-scoped index only
    - `date_range_start` string, date, nullable — Aggregate; stream-scoped index only
    - `date_range_end` string, date, nullable — Aggregate; stream-scoped index only
    - `currency` string, nullable — Aggregate; stream-scoped index only
  - `next_cursor` string, nullable — Pass as `cursor` for the next page; null on the last page
  - `limit` integer

## Other responses

- `401` — Unauthorized

---

[API](https://skmtc.net/endclose/apis/end-close-api.md) · [All operations](https://skmtc.net/endclose/apis/end-close-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/endclose/end-close-api/revisions/613ceff68dc7/schema)
