Skip to main content

Use case

Exclusions keep known records out of search results — existing customers, accounts your sales team is already working, seed profiles that shouldn’t appear in lookalike results, or people and companies that should never be contacted. The API searches first, then removes excluded records before returning results. Matching behavior is unchanged.

Errors

For error responses (400, 403, 422, etc.), see Handling Errors.

Choosing an approach

NeedUse
Exclude a few people in one requestexclude_entity_ids
Exclude a few companies in one requestexclude_entity_ids
Reuse a large suppression listexclude_list_ids
Build a saved list from IDs in the requestPOST /search/exclusion-lists with source.type = "entity_ids"
Build a saved list from a CSV uploadPOST /search/exclusion-lists with source.type = "resource_handle"
Build a saved list from a completed searchPOST /search/exclusion-lists with source.type = "search_id"

Supported endpoints

EndpointSupports exclusions?Notes
POST /search/queryYesPrimary paginated search endpoint. Send exclusions on the first request. Cursor requests must send only cursor.
POST /search/start-deep-searchYesDeep search accepts the same exclusion fields. See Deep search.
GET /search/status/{task_id}N/APolls deep-search status. Completed responses include the search_id used for later /search/query browsing.
POST /search/exclusion-listsYesCreates reusable saved exclusion lists.
GET /search/exclusion-listsN/ALists saved exclusion lists for the organization.
GET /search/exclusion-lists/{list_id}N/AGets status and size for one saved list.
DELETE /search/exclusion-lists/{list_id}N/ADeletes a saved list.

Inline exclusions

Inline exclusions apply only to the request that sends them.

People

Use exclude_entity_ids. In people mode it accepts LinkedIn public IDs or LinkedIn profile URLs:
{
  "mode": "people",
  "query": "VP Engineering in New York",
  "exclude_entity_ids": ["jane-doe", "https://linkedin.com/in/john-smith"]
}

Companies

Company searches use exclude_entity_ids:
{
  "mode": "company",
  "simple_filters": {
    "hq_country_iso2": { "$eq": "US" }
  },
  "exclude_entity_ids": [
    "1441",
    "linkedin.com/company/openai",
    "stripe.com"
  ]
}
Company identifiers can be:
  • Numeric LinkedIn company IDs
  • LinkedIn company URLs
  • LinkedIn company slugs
  • Exact website domains
Identifiers that match no company (unresolvable) or more than one (ambiguous) are skipped.

Saved exclusion lists

Saved lists are reusable, organization-scoped suppression lists. Each list has an entity_type of person or company; a person list can only be used in people search, and a company list only in company search. Creating a list is asynchronous. A successful request returns 202 Accepted with the list id and status: "pending":
{
  "id": "11111111-1111-1111-1111-111111111111",
  "status": "pending"
}
Poll GET /search/exclusion-lists/{list_id} and use the list only after status is ready.

Create from inline IDs

Use source.type = "entity_ids" for both people and companies. People:
{
  "name": "Do not contact people",
  "entity_type": "person",
  "source": {
    "type": "entity_ids",
    "entity_ids": ["jane-doe", "https://linkedin.com/in/john-smith"]
  }
}
Companies:
{
  "name": "Customer accounts",
  "entity_type": "company",
  "source": {
    "type": "entity_ids",
    "entity_ids": ["1441", "linkedin.com/company/openai", "stripe.com"]
  }
}

Create from a CSV upload

Upload the CSV first to get a resource_handle_id, then create the list:
{
  "name": "CSV suppression list",
  "entity_type": "company",
  "source": {
    "type": "resource_handle",
    "resource_handle_id": "8f14e45f-1111-2222-3333-abcdefabcdef",
    "id_column": "company_url"
  }
}
id_column is optional if the API can detect the right column. Recognized column names:
entity_typeRecognized columns
personpublic_id, publicId, linkedin_url, linkedinUrl
companyentity_id, company_id, companyId, linkedin_url, linkedinUrl, website, domain
Use source.type = "search_id" to turn a completed search into a reusable list. The source search mode must match the list entity_type: a people search produces a person list, a company search a company list.
{
  "name": "Companies from last search",
  "entity_type": "company",
  "source": {
    "type": "search_id",
    "search_id": "22222222-2222-2222-2222-222222222222",
    "max_results": 5000
  }
}
The source can carry its own exclusions, so the list is built from the search results minus another list:
{
  "name": "Search results except current customers",
  "entity_type": "company",
  "source": {
    "type": "search_id",
    "search_id": "22222222-2222-2222-2222-222222222222",
    "max_results": 5000,
    "exclude_list_ids": ["11111111-1111-1111-1111-111111111111"]
  }
}
search_id stores only the query — not any exclusions you applied when browsing the results. If the list should match what you previewed, send the same exclusions in the source.
Pass the list ID in exclude_list_ids:
{
  "mode": "company",
  "simple_filters": {
    "hq_country_iso2": { "$eq": "US" }
  },
  "exclude_list_ids": ["11111111-1111-1111-1111-111111111111"]
}
Saved lists and inline exclusions combine in the same request:
{
  "mode": "company",
  "simple_filters": {
    "hq_country_iso2": { "$eq": "US" }
  },
  "exclude_list_ids": ["11111111-1111-1111-1111-111111111111"],
  "exclude_entity_ids": ["stripe.com"]
}

Limits

LimitValue
Saved lists per request (exclude_list_ids)5
Inline IDs per request1,000
IDs per entity_ids source10,000
Members per saved list250,000

Pagination

Send exclusions only on the first /search/query request. Cursor requests must send only cursor — no exclude_*, mode, query, or page_size. First page:
{
  "mode": "people",
  "query": "Founders in San Francisco",
  "exclude_entity_ids": ["jane-doe"],
  "page_size": 25
}
Next page:
{
  "cursor": "eyJ..."
}
With exclusions, a page can contain fewer rows than page_size — even zero rows while has_more is still true. Keep paging until next_cursor is null.
Don’t rely on total_available to size pagination or count how many records were excluded. Page until next_cursor is null to retrieve every eligible row.
POST /search/start-deep-search accepts the same exclusion fields: exclude_entity_ids and exclude_list_ids.
{
  "query": "VP Engineering at Series B SaaS companies in New York",
  "mode": "people",
  "max_results": 500,
  "exclude_list_ids": ["11111111-1111-1111-1111-111111111111"],
  "exclude_entity_ids": ["jane-doe"]
}
For output_mode: "csv", Sixtyfour applies exclusions before producing the CSV. For output_mode: "query_only", the returned search_id stores the query, not your exclusions — send them again when browsing:
  1. Call POST /search/start-deep-search and save the returned task_id.
  2. Poll GET /search/status/{task_id} until the search is completed.
  3. Read search_id from the completed status response.
  4. Call POST /search/query with that search_id and any exclusions to apply.
{
  "search_id": "22222222-2222-2222-2222-222222222222",
  "exclude_list_ids": ["11111111-1111-1111-1111-111111111111"],
  "exclude_entity_ids": ["jane-doe"]
}