---
title: "Count which selected prompts a bulk action applies to"
method: POST
path: "/v3/ai-tracker/prompts/bulk-preview"
tags: ["AI Tracker"]
---

# Count which selected prompts a bulk action applies to

`POST /v3/ai-tracker/prompts/bulk-preview`

## Request

- Base URL: `https://api.snowseo.com`
- URL: `https://api.snowseo.com/v3/ai-tracker/prompts/bulk-preview`
- Auth: one of:
  - HTTP bearer
  - API key in header `x-api-key`
- TypeScript: <https://skmtc.dev/snowseo/apis/snowseo-api/docs/v3/ai-tracker/prompts/bulk-preview/post.ts> (a function with typed inputs; its response is checked against the schema)

Read-only. For a selection of tracked prompts (explicit ids, or all matching the filters minus exclusions), reports how many the given bulk action would change and why the rest would be skipped. Call it before a bulk action and confirm the counts with the user.

## Request body

- object
  - `teamId` string
  - `selection` union, required
    - object
      - `mode` 'ids', required
      - `ids` string[], required
    - object
      - `mode` 'all', required
      - `filters` object, required
        - `platform` string
        - `competitor` string
        - `country` string
        - `startDate` string
        - `endDate` string
        - `promptBrand` string
        - `tracking` string
        - `intent` string
        - `search` string
      - `excludedIds` string[], required
  - `action` 'track' | 'untrack' | 'refresh' | 'set-regions' | 'delete', required: The bulk action to count eligible rows for.
  - `enqueue` boolean: When false, saves the change without running the prompts now. Tracked prompts are still picked up by the scheduled refresh, which bills for them.
  - `regions` object[]
    - `type` 'country' | 'state' | 'city', required
    - `city` string
    - `state` string
    - `country` string, required
    - `iso2` string, required
    - `iso3` string

## Response `200`

Default Response

- object
  - `eligibility` object
    - `selected` number, required
    - `eligible` number, required
    - `skipped` number, required
    - `byReason` object, required

## Other responses

- `500`: Default Response

## Changes

- **2026-11-03** `31b321592ad7`: 4 info
  - added the optional property `code` to the response with the `500` status
  - added the optional property `message` to the response with the `500` status
  - added the optional property `reference` to the response with the `500` status
  - added the optional property `success` to the response with the `500` status
- **2026-11-01** `6d1dc4928d97`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/snowseo/apis/snowseo-api/changes/v3/ai-tracker/prompts/bulk-preview/post.md)

---

[API](https://skmtc.dev/snowseo/apis/snowseo-api.md) - [All operations](https://skmtc.dev/snowseo/apis/snowseo-api/llms.txt) - [OpenAPI document](https://skmtc.dev/snowseo/apis/snowseo-api/revisions/f64935aae2ec?raw)
