---
title: "Initiate Bulk Add"
method: POST
path: "/manager/employees/bulk-add"
tags: ["manager"]
---

# Initiate Bulk Add

`POST /manager/employees/bulk-add`

Initiate bulk employee addition operation.
Returns immediately with operation_id for status polling.
Each employee addition is atomic (Clerk + DB or rollback).

The operation runs in the background and updates progress in the database.
Use GET /manager/employees/bulk-add/{operation_id} to check status.

## Request body

- BulkAddRequest
  - `technicians` AddEmployeeRequest[], required
    - `id` string, nullable
    - `email` string, required
    - `phone_number` string, required
    - `login_name` string, required
    - `person_type` 'technician' | 'admin'
    - `trades` string[]

## Response `202`

Successful Response

- BulkOperationInitiateResponse
  - `operation_id` string, required
  - `operation_type` string, required
  - `message` string, required
  - `status` string, required
  - `total_count` integer, required
  - `poll_url` string, required

## Other responses

- `404` — Not found
- `422` — Validation Error

## Changes

- **2026-09-09** `a786fa3c27df` — 2 info
  - the request property `technicians/items/id` became optional
  - request property `technicians/items/id` list-of-types was widened by adding types `null` to media type `application/json`

[Change history](https://skmtc.dev/noso/apis/crucible-backend-api/changes/manager/employees/bulk-add/post.md)

---

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