> ## Documentation Index
> Fetch the complete documentation index at: https://snowseo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Bulk prospect actions

> Preview, delete, block, find people at, or re-check many outreach prospects at once.

Every bulk action takes a `selection` and works through it in batches:

* `selection` is either `{ mode: "ids", ids: [prospectId, ...] }` or `{ mode: "all", filters: { ready?, search?, groups? }, excludedIds: [...] }` (every prospect matching the filters, minus the excluded ids).
* Call `POST /v3/outreach/prospects/bulk-preview` with the `selection` and an `action` (`delete`, `block`, `find-people` or `recheck`) first. It changes nothing and returns `eligibility`: `{ selected, eligible, skipped, byReason }`, e.g. sites skipped because a search is already running.

| Action | Endpoint | Rows per call | Notes |
| - | - | - | - |
| Delete | `POST /v3/outreach/prospects/bulk-delete` | 50 | Removes the rows and blocks their sites. A creator-platform prospect with no known creator is removed without a block. |
| Block | `POST /v3/outreach/prospects/bulk-block` | 50 | Body `reason` (up to 200 characters). An ordinary site is blocked by domain, so other rows on that domain are removed too. A creator-platform prospect blocks only that creator. |
| Find people | `POST /v3/outreach/prospects/bulk-find-people` | 10 | Body `terms` (3-25 distinct job titles; omit for the defaults, `400` for overlapping terms). 5 AI credits per site, `402` when you lack credits, refunded when a site yields nobody new. Skipped at no cost: searches already running, creator platforms, opportunities that are not earned by writing to someone, and sites that already link to you. |
| Re-check links | `POST /v3/outreach/prospects/bulk-recheck` | 10 | One page crawl per page, `402` when you lack page audits. Sites already being checked are skipped. |

Each call processes one batch of eligible prospects and returns `{ success, succeeded, failed, nextCursor, eligibility, results }`. While `nextCursor` is not `null`, call again with the same `selection` and `afterId` set to `nextCursor`. `results` has one entry per prospect with `id`, `success` and `error` when it failed. Find people adds `creditsCharged`, re-check adds `pages`, and block adds `blocked` and `removed`.

Find people and re-check run in the background. Poll [Outreach Prospects](https://snowseo.com/docs/api-reference/endpoints/outreach-prospects.md) while a site's `status` is `finding_people` or its `analysis` is `rechecking`, then read [Outreach Contacts](https://snowseo.com/docs/api-reference/endpoints/outreach-contacts.md) or `linkStatus`. Finding people does not buy email addresses; use [Bulk people actions](https://snowseo.com/docs/api-reference/endpoints/outreach-people-bulk.md).

`POST /v3/outreach/prospects/selection` returns the prospect rows a `selection` matches, for reads too large for a query string.

For a single prospect, use [Delete prospect](https://snowseo.com/docs/api-reference/endpoints/outreach-prospects-delete.md). To reverse a block, see [Unblock a domain](https://snowseo.com/docs/api-reference/endpoints/outreach-prospects-unblock.md).


## OpenAPI

````yaml POST /v3/outreach/prospects/bulk-preview
openapi: 3.0.0
info:
  title: SnowSEO API
  description: API documentation for SnowSEO
  version: 1.0.0
servers:
  - url: https://api.snowseo.com
    description: Production server
security:
  - bearerAuth: []
  - apiKey: []
externalDocs:
  url: https://snowseo.com/docs
  description: Find more info here
paths:
  /v3/outreach/prospects/bulk-preview:
    post:
      tags:
        - Outreach
      summary: Count which selected prospects a bulk action applies to
      description: >-
        Read-only. For a selection of prospects (explicit ids, or all matching
        filters minus exclusions), reports how many the given bulk action would
        act on and why the rest would be skipped. Call it before a bulk action
        and confirm the counts with the user.
      operationId: outreachProspectsBulkPreview
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - selection
                - action
              properties:
                teamId:
                  type: string
                selection:
                  oneOf:
                    - type: object
                      required:
                        - mode
                        - ids
                      additionalProperties: false
                      properties:
                        mode:
                          type: string
                          enum:
                            - ids
                        ids:
                          type: array
                          items:
                            type: string
                    - type: object
                      required:
                        - mode
                        - filters
                        - excludedIds
                      additionalProperties: false
                      properties:
                        mode:
                          type: string
                          enum:
                            - all
                        filters:
                          type: object
                          properties:
                            ready:
                              type: boolean
                            search:
                              type: string
                            groups:
                              type: object
                              additionalProperties:
                                type: array
                                items:
                                  type: string
                        excludedIds:
                          type: array
                          items:
                            type: string
                action:
                  type: string
                  enum:
                    - delete
                    - block
                    - find-people
                    - recheck
                  description: The bulk action to count eligible rows for.
                reason:
                  type: string
                  maxLength: 200
                  description: Why they were blocked, shown in the blocked list.
                terms:
                  type: array
                  minItems: 3
                  maxItems: 25
                  items:
                    type: string
                  description: >-
                    Job titles to search for, matched as substrings and OR'd
                    together - 'editor' finds 'Managing Editor'. Between 3 and
                    25 distinct terms; omit to use a sensible default covering
                    editorial, SEO, marketing and owners.
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  eligibility:
                    type: object
                    required:
                      - selected
                      - eligible
                      - skipped
                      - byReason
                    properties:
                      selected:
                        type: number
                      eligible:
                        type: number
                      skipped:
                        type: number
                      byReason:
                        type: object
                        additionalProperties:
                          type: number
        '500':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                properties:
                  success:
                    type: boolean
                  error:
                    type: string
                  code:
                    type: string
                  message:
                    type: string
                  reference:
                    type: string
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Your SnowSEO API key (sk_...).
    apiKey:
      type: apiKey
      name: x-api-key
      in: header

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.