---
title: "Bulk-assign workflows to one or more users"
method: POST
path: "/monitoring-workflows/assignments"
tags: ["MonitoringWorkflow"]
---

# Bulk-assign workflows to one or more users

`POST /monitoring-workflows/assignments`

Distributes multiple monitoring workflows evenly across the provided user IDs using round-robin assignment. Use this endpoint to assign many workflows in a single call instead of one at a time via `POST /monitoring-workflows/{id}/assignment`. The request body must supply either `workflowIds` or `filter` to identify which workflows to assign — at least one is required. Workflows currently in `REVIEWED_BY_CERTIFYOS` status are automatically excluded from assignment and appear in the response `failed` array. Requires one of: `MONITORING_WORKFLOW_ASSIGN`, `MONITORING_WORKFLOW_ASSIGN_SELF`, or `MONITORING_WORKFLOW_BULK_ASSIGN`. The `tenant-id` header is mandatory. Always returns HTTP 200, even when every individual assignment fails — check the `successful` and `failed` arrays for per-workflow outcomes.

## Headers

- `tenant-id` string, required

## Request body

- BulkAssignMonitoringWorkflowRequest — Request to assign multiple monitoring workflows
  - `workflowIds` string[] — List of monitoring workflow IDs to assign. Either workflowIds or filter must be provided.
  - `assignTo` string[], required — List of user IDs to assign workflows to. Workflows will be evenly distributed across these users
  - `filter` string — Filter criteria as JSON string (URL encoded). Used to fetch workflow IDs when workflowIds is not provided. See GET /monitoring-workflows endpoint documentation for filter format.

## Response `200`

Bulk assignment completed. `successful`/`failed` are arrays of `{workflowId, assignment: {assignedTo, assignedBy, assignedAt}, error}` — `assignment` is populated on success, `error` on failure. `totalProcessed`, `successCount`, and `failureCount` summarize the batch.

- BulkAssignMonitoringWorkflowResponse — Response containing results of bulk assignment of monitoring workflows
  - `successful` AssignmentResult2[] — List of successful assignments
    - `workflowId` string — ID of the credentialing workflow
    - `assignment` AssignmentEntry2
      - `assignedTo` string — User ID the assignment changed to
      - `assignedBy` string — User ID who made the assignment change
      - `assignedAt` string — Timestamp when the assignment was changed
    - `error` string — Error message if assignment failed
  - `failed` AssignmentResult2[] — List of failed assignments with error details
    - `workflowId` string — ID of the credentialing workflow
    - `assignment` AssignmentEntry2
      - `assignedTo` string — User ID the assignment changed to
      - `assignedBy` string — User ID who made the assignment change
      - `assignedAt` string — Timestamp when the assignment was changed
    - `error` string — Error message if assignment failed
  - `totalProcessed` integer — Total number of workflows processed
  - `successCount` integer — Number of successful assignments
  - `failureCount` integer — Number of failed assignments

## Other responses

- `400` — Invalid request data, e.g. neither workflowIds nor filter was supplied
- `401` — Unauthorized - Authentication required
- `403` — Forbidden - User does not have required permissions
- `500` — Internal Server Error - An unexpected error occurred

---

[API](https://skmtc.net/certifyos/apis/certify-api-layer.md) · [All operations](https://skmtc.net/certifyos/apis/certify-api-layer/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/certifyos/certify-api-layer/revisions/563848e0ecc0/schema)
