---
title: "Create Exclusion List Endpoint"
method: POST
path: "/search/exclusion-lists"
tags: ["Search"]
---

# Create Exclusion List Endpoint

`POST /search/exclusion-lists`

Create an exclusion list (asynchronous materialization).

Lists are immutable in v1: to change one, create a new list and delete
the old. Up to 20 active lists per organization (40 for organizations
with extended exclusion limits).

## Headers

- `x-api-key` string, nullable

## Request body

- CreateExclusionListRequest
  - `name` string, nullable — Required unless source.type is 'search_id' (defaults to a date-stamped name).
  - `entity_type` 'person' | 'company'
  - `source` union, required
    - ResourceHandleSource — Build the list from an uploaded CSV (see POST /storage/csv/upload).
      - `type` 'resource_handle', required
      - `resource_handle_id` string, required
      - `id_column` string, nullable — CSV column containing entity identifiers. People: LinkedIn public IDs or profile URLs. Companies: numeric company IDs, LinkedIn company URLs/slugs, or exact website domains. Auto-detected when omitted.
    - InlineEntityIdsSource — Build the list from inline identifiers (entity-generic). Person lists: LinkedIn public IDs or profile URLs. Company lists: numeric company IDs, LinkedIn company URLs/slugs, or exact website domains.
      - `type` 'entity_ids', required
      - `entity_ids` string[], required
    - SearchIdSource — Build the list from the results of a saved search (mode must match entity_type).
      - `type` 'search_id', required
      - `search_id` string, required
      - `max_results` integer — How many top search results to capture into the list.
      - `exclude_public_ids` string[], nullable — Optional people-mode inline exclusions to re-apply while replaying the saved search. `search_id` itself does not carry exclusions.
      - `exclude_entity_ids` string[], nullable — Optional inline exclusions to re-apply while replaying the saved search. People: LinkedIn public IDs/profile URLs. Companies: numeric company IDs, company URLs/slugs, or exact website domains.
      - `exclude_list_ids` string[], nullable — Optional saved exclusion lists to re-apply while replaying the saved search. `search_id` itself does not carry exclusions.

## Response `202`

Successful Response

- CreateExclusionListResponse
  - `id` string, required — Exclusion list ID; poll GET /search/exclusion-lists/{id} until ready.
  - `status` string, required — Initial status, always 'pending'.

## Other responses

- `400` — Request was rejected by the route's validation rules.
- `401` — Missing or invalid API key.
- `403` — Organization access is locked.
- `422` — Request body failed validation.
- `500` — Unexpected server error. Retry with backoff.

---

[API](https://skmtc.dev/sixtyfour/apis/sixtyfour-api.md) · [All operations](https://skmtc.dev/sixtyfour/apis/sixtyfour-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/sixtyfour/sixtyfour-api/revisions/51f0a2b62b44/schema)
