---
title: "Preview a GMV Max per-campaign exclusion"
method: POST
path: "/gmv-max/campaign-exclusions/preview"
tags: ["GMV Max"]
---

# Preview a GMV Max per-campaign exclusion

`POST /gmv-max/campaign-exclusions/preview`

## Request

- Base URL: `https://api.reacherapp.com/public/v1`
- URL: `https://api.reacherapp.com/public/v1/gmv-max/campaign-exclusions/preview`
- Auth: API key in header `x-api-key` and API key in header `x-shop-id`

Dry-run: report what excluding `video_ids` from `campaign_ids` would do, per campaign — which videos would be newly excluded (with the last 7 days of spend at stake), which are already excluded, and which are not in the campaign. Writes nothing and does not require an Idempotency-Key. Single shop only.

## Request body

- GmvMaxCampaignExclusionPreviewRequest: POST /gmv-max/campaign-exclusions/preview request body — dry-run. Reports, per campaign, which videos would be excluded (with 7-day spend at stake), which are already excluded, and which are not in that campaign.
  - `campaign_ids` string[], required: TikTok campaign ids to scope the exclusion to (max 100 per call) — the same campaign ids returned by GET /gmv-max/campaigns.
  - `video_ids` string[], required: TikTok video ids to exclude from the named campaigns (max 500 per call). Pasted URLs are unwrapped; ids that are not a numeric TikTok video id are returned in `invalid`, never silently dropped.

## Response `200`

Successful Response

- GmvMaxCampaignExclusionPreviewResponse: POST /gmv-max/campaign-exclusions/preview — dry-run, writes nothing.
  - `data` GmvMaxCampaignExclusionPreviewResult, required
    - `campaigns` GmvMaxCampaignExclusionPreviewCampaign[], required
      - `campaign_id` string, required: The TikTok campaign id.
      - `will_exclude` GmvMaxCampaignExclusionToExclude[], required: Videos that would be newly excluded from this campaign.
        - `video_id` string, required: The TikTok video id.
        - `spend_7d` number, required: Spend on this video in this campaign over the last 7 days.
        - `orders_7d` integer, required: Orders attributed to this video in this campaign over the last 7 days.
        - `roi_7d` number, nullable: Revenue / spend over the last 7 days; null when there was no spend.
      - `already_excluded` string[], required: Video ids already excluded from (or not delivering in) this campaign.
      - `not_in_campaign` string[], required: Video ids that are not placements in this campaign.
    - `invalid` string[], required: Inputs that are not a numeric TikTok video id (not excluded).
    - `will_exclude_count` integer, required: Total (campaign, video) placements that would be newly excluded.
    - `spend_at_stake_7d` number, required: Total last-7-day spend across every placement that would be excluded.

## Other responses

- `422`: Validation Error

## Changes

> 76 revisions in range; 1 not diffed.

- **2026-10-14** `2a7ed9f8c407`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/reacherapp/apis/reacher-data-api/changes/gmv-max/campaign-exclusions/preview/post.md)

---

[API](https://skmtc.dev/reacherapp/apis/reacher-data-api.md) - [All operations](https://skmtc.dev/reacherapp/apis/reacher-data-api/llms.txt) - [OpenAPI document](https://skmtc.dev/reacherapp/apis/reacher-data-api/revisions/63ce74b30b5a?raw)
