---
title: "Preview or cancel a bounded scheduled batch"
method: POST
path: "/v1/posts/bulk/cancel"
tags: ["Posts"]
---

# Preview or cancel a bounded scheduled batch

`POST /v1/posts/bulk/cancel`

## Request

- Base URL: `https://api.postlake.dev`
- URL: `https://api.postlake.dev/v1/posts/bulk/cancel`
- Auth: `bearerAuth` (a scheme the document does not define)

Supply 1 to 200 unique IDs, one profile, and an inclusive timezone-qualified scheduled-time window. dryRun returns a snapshot of all stored post fields and the selection scope. Send it on apply to reject any intervening change, including media/options edits. Cancellation is all-or-none, scheduled-only and never retracts published content. Legacy calls without a snapshot retain execution-time compare-and-swap protection only.

## Request body

- object
  - `ids` string[], required: Exact IDs of scheduled posts to preview or cancel.
  - `profile` string, required: Every target of every selected post must belong to this profile.
  - `from` string, date-time, required: Inclusive earliest scheduled time, with Z or an explicit offset.
  - `to` string, date-time, required: Inclusive latest scheduled time, with Z or an explicit offset.
  - `dryRun` boolean: Preview the selection without cancelling anything.
  - `snapshot` string: Full-post and selection snapshot returned by preview. Apply rejects changed content or scope with HTTP 409.

## Response `200`

Preview or all posts cancelled

- object
  - `dryRun` boolean, required
  - `snapshot` string, required
  - `matched` integer, required
  - `results` object[], required
    - `id` string, required
    - `cancelled` boolean, required
    - `error` string

## Other responses

- `400`: Invalid selection
- `409`: Selection changed or publishing started; no posts cancelled

---

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