---
title: "Get Batch Remove from List Job"
method: GET
path: "/v1/lists/batch-remove-from-list-jobs/{job_id}"
tags: ["Lists", "v1"]
---

# Get Batch Remove from List Job

`GET /v1/lists/batch-remove-from-list-jobs/{job_id}`

Retrieve the status of a batch remove-from-list job created via `POST /v1/lists/batch-remove-from-list-jobs`.

While `status` is `running`, `results` and `summary` are omitted. Once `status` becomes `completed`, `results` carries the per-item outcome and `summary` carries the per-outcome counts (including `failed_count`) together with `list_size_after`. A job created from an `advanced_search` selection reports `summary` counts only — no per-item `results`. On `failed`, `errors` describes the failure.

Credit Note: This endpoint does not consume credits.

:::info
Requires the `lists:read` OAuth2 scope.
:::

## Path parameters

- `job_id` string, required

## Query parameters

- `account_id` string, required

## Response `200`

Batch remove-from-list job status retrieved

- object
  - `data` BatchRemoveFromListJobV1, required
    - `type` string, required
    - `id` string, required — Unique job identifier
    - `attributes` object, required
      - `status` 'running' | 'completed' | 'failed', required — Current status of the job
      - `configuration` union, required — Echoed request configuration. Present at every status, from the moment the job is created. Carries the `items` array or the `advanced_search` selection the job was created with — exactly one of the two.
        - object
          - `list_id` string, required — The scope-prefixed list identifier the job operates on (e.g. `company_123` or `contact_456`).
          - `items` object[], required — The references supplied in the originating request.
            - `type` 'company' | 'contact', required — The entity type (e.g. `company` or `contact`).
            - `id` string, required — The Dealfront entity ID.
          - `advanced_search` object — The advanced-search selection supplied in the originating request.
            - `filters` object, required — Recursive filter tree applied to the company population. The root is always a `group` whose `items` are either individual filters or further `group` nodes (combined with `and`/`or`).
              - …
            - `sort` object — Ordering applied to the matching companies. Omit to use the default ordering.
              - …
            - `page` object — Bounds how many of the matching companies are selected.
              - …
            - `excluded_company_ids` string[] — Company IDs to remove from the matched set (for example, rows the user deselected). Removed after the `page.size` limit is applied, so the final selection may be smaller than `page.size`.
        - object
          - `list_id` string, required — The scope-prefixed list identifier the job operates on (e.g. `company_123` or `contact_456`).
          - `items` object[] — The references supplied in the originating request.
            - `type` 'company' | 'contact', required — The entity type (e.g. `company` or `contact`).
            - `id` string, required — The Dealfront entity ID.
          - `advanced_search` object, required — The advanced-search selection supplied in the originating request.
            - `filters` object, required — Recursive filter tree applied to the company population. The root is always a `group` whose `items` are either individual filters or further `group` nodes (combined with `and`/`or`).
              - …
            - `sort` object — Ordering applied to the matching companies. Omit to use the default ordering.
              - …
            - `page` object — Bounds how many of the matching companies are selected.
              - …
            - `excluded_company_ids` string[] — Company IDs to remove from the matched set (for example, rows the user deselected). Removed after the `page.size` limit is applied, so the final selection may be smaller than `page.size`.
      - `results` object[] — Per-item outcome of the remove job. Present only when `status` is `completed` and the job was created with an explicit `items` array — a job created from an `advanced_search` selection reports `summary` counts only.
        - `id` string, required — The Dealfront company or contact ID that was processed.
        - `type` 'company' | 'contact', required — The kind of entity this result item refers to.
        - `status` 'removed' | 'not_present' | 'not_found' | 'scope_mismatch', required — Indicative, best-effort status for this item, derived from the underlying backend system. It is not a guaranteed-exact per-item outcome: an item that was not applied may be reported with an approximate status, because the backend cannot always distinguish between cases (for example, `not_present` from `not_found`).
      - `summary` object — Counts of items by outcome, plus the list size after the job applied. Present only when `status` is `completed`. The outcome counts are best-effort: they aggregate the indicative per-item statuses and are not a guaranteed-exact classification.
        - `removed` integer — Number of members removed. For a job created from an `advanced_search` selection, every company in the selection is counted here.
        - `not_present` integer — Number of members not in the list (remove no-op).
        - `not_found` integer — Number of referenced entities that could not be found.
        - `scope_mismatch` integer — Number of references whose type did not match the list scope.
        - `failed_count` integer — Total number of items that did not complete successfully (sum of `not_found` and `scope_mismatch`).
        - `list_size_after` integer — Number of members on the list after the job applied.
      - `errors` object[] — Present only when `status` is `failed`.
        - `code` string, required — Machine-readable error code
        - `title` string, required — Human-readable error description
      - `created_at` string, date-time, required — When the job was created.
      - `completed_at` string, date-time, nullable — When the job finished. Present only once the job has reached `completed` or `failed`.
  - `meta` object, required
    - `request_id` string, required — A unique identifier assigned to each API request for end-to-end traceability.

## Other responses

- `401` — Unauthorized. The request was rejected because the credentials are missing, invalid, expired, or have been revoked. The client must re-authenticate before retrying. Clients can differentiate via the `code` value of the first item in `errors`.
- `403` — Forbidden. The credentials are valid but the caller is not authorized to perform the request — typically because the user lacks the required permission, the OAuth scope is insufficient, the subscription plan does not include the required entitlement, the `account_id` does not belong to the authenticated user, or the target list is read-only and its members cannot be modified. Clients can differentiate via the `code` value of the first item in `errors`.
- `404` — Not found
- `429` — Too many requests. Either the per-second rate limit or the monthly quota configured for the API key / OAuth application has been exceeded. Clients can differentiate via the `code` value of the first item in `errors`.
- `500` — Internal server error
- `504` — Server timeout

---

[API](https://skmtc.net/leadfeeder/apis/leadfeeder-public-api.md) · [All operations](https://skmtc.net/leadfeeder/apis/leadfeeder-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/leadfeeder/leadfeeder-public-api/versions/e494ac05e206/schema)
