---
title: "Preview a bulk max videos change (dry-run)"
method: POST
path: "/accounts/tracked/max-videos/preview"
tags: ["Track Accounts"]
---

# Preview a bulk max videos change (dry-run)

`POST /accounts/tracked/max-videos/preview`

## Request

- Base URL: `https://viral.app/api/v1`
- URL: `https://viral.app/api/v1/accounts/tracked/max-videos/preview`
- Auth: API key in header `x-api-key`

Runs the bulk max videos update's checks without writing: the accounts the ids or scope select, the per-platform clamp, the plan-meter units the change would add, and every refusal (plan feature, account or video limit) it would hit.

## Request body

- object: Request body for updating multiple tracked account settings: accountIds, or a scope that targets every tracked account it names
  - `accountIds` string[]: The tracked accounts to change (at least one), unless scope is given.
  - `scope` 'internal' | 'competitors' | 'all': Targets every tracked account of the organization instead of a list of ids: internal = the organization's own accounts, competitors = competitor accounts, all = both. Paused accounts (limit 0) are left out unless includePaused is true.
  - `includePaused` boolean: With scope: also target paused accounts (limit 0), which a limit resumes. Leave it out unless the user asks to resume paused accounts too.
  - `newMaxVideos` union, required: Video tracking limit for an account. Allowed values: 0, 10, 30, 60, 100, 200, 300, 400, 500, 1000, 2000, 999999999. Use 0 to pause tracking: nothing syncs for the account until a limit is set again (resume), and its existing videos stay available; pausing requires the Data Retention plan feature. Finite values (10, 30, 60, 100, 200, 300, 400, 500, 1000, 2000) sync that many latest videos and are subject to plan limits. Use 999999999 for unlimited account video tracking; this requires the Unlimited Video Tracking plan feature.
    - unknown
    - unknown
    - unknown
    - unknown
    - unknown
    - unknown
    - unknown
    - unknown
    - unknown
    - unknown
    - unknown
    - unknown

## Response `200`

OK

- object: Dry run of a bulk tracking-limit change: its effect and refusals, nothing written
  - `ok` boolean, required: True when the write would go through as previewed.
  - `issues` object[], required: Every refusal the write would hit; empty when ok.
    - `code` 'ACCOUNTS_NOT_FOUND' | 'LIMIT_LOOKUP_FAILED' | 'LIMIT_REACHED' | 'DATA_RETENTION_NOT_AVAILABLE' | 'UNLIMITED_VIDEO_TRACKING_NOT_AVAILABLE', required
    - `message` string, required
  - `newMaxVideos` number, required
  - `matchedAccounts` number, required: Accounts the ids or the scope select.
  - `notFoundAccountIds` string[]: Requested ids that are not tracked accounts of this organization.
  - `changingAccounts` number, required: Accounts whose limit would change.
  - `resumingAccounts` number, required: Paused accounts (limit 0) that would start tracking again.
  - `pausingAccounts` number, required: Accounts that would be paused.
  - `clampedAccounts` object[], required: Per platform, how many selected accounts cannot take the requested limit and get maxVideos instead (Snapchat: Pause, 10 or 30).
    - `platform` 'facebook' | 'instagram' | 'tiktok' | 'youtube' | 'snapchat', required: Social media platform (facebook, instagram, tiktok, youtube, snapchat)
    - `maxVideos` number, required
    - `count` number, required
  - `trackedVideosAdded` number, required: Units the write adds to the tracked-videos plan meter (0 with the Unlimited Video Tracking feature, whose account videos do not count). Meter units, not credits.
  - `trackedAccountsAdded` number, required: Units the write adds to the tracked-accounts plan meter.

## Other responses

- `400`: 400
- `401`: 401
- `402`: 402
- `404`: 404
- `408`: 408
- `429`: 429
- `500`: 500

---

[API](https://skmtc.dev/viral/apis/viral-app-api.md) · [All operations](https://skmtc.dev/viral/apis/viral-app-api/llms.txt) · [OpenAPI document](https://skmtc.dev/viral/apis/viral-app-api/revisions/31e97fa79ef1?raw)
