---
title: "Perform workflow actions on bulk content"
method: POST
path: "/api/v1/workflow/contentlet/actions/_bulkfire"
tags: ["Workflow"]
---

# Perform workflow actions on bulk content

`POST /api/v1/workflow/contentlet/actions/_bulkfire`

This operation allows you to specify a multiple content items (either by query or a list of identifiers), a [workflow action](https://www.dotcms.com/docs/latest/managing-workflows#Actions) to perform on them, and additional parameters as needed by the selected action. Responses are streamed as Server-Sent Events.

⚠️ **Important contract notes:**

- `contentletIds` despite its name expects **inodes**, not identifiers. Passing identifiers results in a silent no-op with no error.
- `additionalParams` must be present, even when empty (`{}`). Omitting it returns a `500` NPE.
- The endpoint is **not step-aware**: if the action is not valid in a contentlet's current step, the input is dropped silently (no `fails[]` entry). Verify post-fire state via `POST /api/content/_search`.
- This endpoint behaves identically to `PUT /api/v1/workflow/contentlet/actions/bulk/fire`; only the response transport differs (SSE here vs JSON there).

## Request body

- FireBulkActionsForm
  - `query` string
  - `contentletIds` string[]
  - `workflowActionId` string
  - `additionalParams` AdditionalParamsBean
    - `pushPublish` PushPublishBean
      - `whereToSend` string
      - `publishDate` string
      - `publishTime` string
      - `expireDate` string
      - `expireTime` string
      - `neverExpire` string
      - `filterKey` string
      - `iWantTo` string
      - `timezoneId` string
      - `iwantTo` string
    - `assignComment` AssignCommentBean
      - `assign` string
      - `comment` string
    - `additionalParamsMap` object
    - `pushPublishBean` PushPublishBean
      - `whereToSend` string
      - `publishDate` string
      - `publishTime` string
      - `expireDate` string
      - `expireTime` string
      - `neverExpire` string
      - `filterKey` string
      - `iWantTo` string
      - `timezoneId` string
      - `iwantTo` string
    - `assignCommentBean` AssignCommentBean
      - `assign` string
      - `comment` string
  - `popupParamsBean` AdditionalParamsBean
    - `pushPublish` PushPublishBean
      - `whereToSend` string
      - `publishDate` string
      - `publishTime` string
      - `expireDate` string
      - `expireTime` string
      - `neverExpire` string
      - `filterKey` string
      - `iWantTo` string
      - `timezoneId` string
      - `iwantTo` string
    - `assignComment` AssignCommentBean
      - `assign` string
      - `comment` string
    - `additionalParamsMap` object
    - `pushPublishBean` PushPublishBean
      - `whereToSend` string
      - `publishDate` string
      - `publishTime` string
      - `expireDate` string
      - `expireTime` string
      - `neverExpire` string
      - `filterKey` string
      - `iWantTo` string
      - `timezoneId` string
      - `iwantTo` string
    - `assignCommentBean` AssignCommentBean
      - `assign` string
      - `comment` string

## Response `200`

Success

- EventOutput
  - `type` object
    - `typeName` string
  - `closed` boolean

## Other responses

- `400` — Bad request
- `401` — Invalid User
- `403` — Forbidden
- `406` — Not Acceptable
- `415` — Unsupported Media Type
- `500` — Internal Server Error

---

[API](https://skmtc.dev/jostens/apis/dotcms-rest-api.md) · [All operations](https://skmtc.dev/jostens/apis/dotcms-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/jostens/dotcms-rest-api/revisions/a088fe9f515c/schema)
