Skip to main content
Bulk work assignment operations create or update many work assignments in one API call. They follow the same shape as Bulk Line Item Operations and Bulk Recurrence Operations, with two differences:
  • Create selects payees (employees and contractors) and creates one work assignment per payee on a pay schedule.
  • Update selects work assignments directly, within a single business entity.
There is no bulk delete for work assignments.

Asynchronous Execution

Bulk work assignment operations are asynchronous. Every bulk endpoint returns an async_task handle that you use to track completion and retrieve the affected entities. The task may or may not have completed by the time you receive the response. data.status could be processing or completed. Partners must always check data.status and not assume the work has finished. You have two ways to observe completion:
  • Poll the URL in links.self on the response until data.status is completed (or error).
  • Subscribe to the async_task_completed webhook event, which fires when the task finishes.
data.results contains one entry per affected work assignment, with only the id and object. To retrieve full work assignment bodies, follow up with a list query (filtered by the returned IDs) or fetch individual work assignments by ID. Note: scope endpoints (/bulk/*/scope) are previews with no side effects and are synchronous - they return 200 OK with the inline list of matched entities.

Bulk Create Work Assignments

Nmbr’s API allows you to create a work assignment for select payees on a single pay schedule. This endpoint is useful when you need to add a group of employees or contractors to a pay schedule in one API call, such as onboarding a new team onto a bi-weekly schedule.

Endpoint

POST /work_assignments/bulk/create

Request

Request Properties

The work assignment’s business entity is taken from the pay schedule, so there is no top-level business_entity_id on create.

Payee Criteria Objects

include and exclude can be objects with one or more of the following properties:
  • ids: Array of employee/contractor IDs to include or exclude
  • payee_type: "employee" or "contractor"
  • payee_names: Name search (partial match)
  • archived: true to select archived payees, false (default) to select active payees
When you combine properties, they apply together. For example, { "payee_type": "employee", "archived": false } selects active employees only. include can also be the string "all" to include all payees.

Data Properties

The data object contains the work assignment properties to apply to each created work assignment. For example: The payee for each work assignment comes from your selection. Don’t set employee_id or contractor_id in data. These properties are documented in more detail in the API reference for work assignments.

Response

On success, the operation returns 202 Accepted with an async_task handle. See Asynchronous Execution for how to track completion. ⚠️ Partners must treat any 200-level response as success. ⚠️ For example, the response might look like:
Once the task completes, data.results will contain one entry per created work assignment:
On failure, the operation will return 422 Unprocessable Entity with standard validation messages.

Notes

  • The same work assignment properties (other than the payee) are applied to every created work assignment.
  • The business entity is taken from the pay schedule. You don’t pass a business_entity_id.
  • Payees that already have a work assignment on that pay schedule are skipped. There is one work assignment per pay schedule per payee. Skipped payees won’t appear in data.results.
  • Each new work assignment generates its draft pay stubs on upcoming draft payrolls for that pay schedule, the same as creating a single work assignment.
  • Validation runs against every selected payee before any work assignment is created. If validation fails, no work assignments are created.
  • Invalid payee IDs in the include.ids or exclude.ids arrays are silently ignored and won’t cause an error.
  • When both include and exclude criteria are provided, exclusions are applied after inclusions.

Examples

Create work assignments for all employees on a pay schedule

POST /work_assignments/bulk/create

Create work assignments for specific payees

POST /work_assignments/bulk/create

Create work assignments for all payees, excluding specific payees

POST /work_assignments/bulk/create

Create work assignments with a pay split for all contractors

POST /work_assignments/bulk/create

Bulk Create Work Assignments Scope

The create scope endpoint previews which payees will receive a new work assignment from a bulk create operation. It accepts the same request body as the bulk create endpoint, but instead of creating work assignments, it returns the payees that match the criteria. Because the work assignments don’t exist yet, this endpoint returns payees, not work assignments. Payees that already have a work assignment on the target pay schedule are excluded, matching the create behavior. This is useful for confirming which payees a bulk create will affect before executing it.

Endpoint

POST /work_assignments/bulk/create/scope

Request

The request body is the same as the bulk create endpoint.

Response

On success, the operation will return 200 OK with an array of the payees that the bulk create would create work assignments for. The array can contain both employees and contractors:

Bulk Update Work Assignments

Nmbr’s API allows you to update select work assignments within a single business entity. This endpoint is useful when you need to update the same property on a group of work assignments in one API call, such as moving a team onto a pay split or archiving a set of work assignments.

Endpoint

POST /work_assignments/bulk/update

Request

Request Properties

Work Assignment Criteria Objects

include and exclude can be objects with one or more of the following properties:
  • ids: Array of work assignment IDs to include or exclude
  • payee_type: "employee" or "contractor"
  • pay_schedule_id: ID of the pay schedule to include or exclude
  • archived: true to select archived work assignments, false (default) to select active ones
  • payee_names: Name search (partial match)
When you combine properties, they apply together. include can also be the string "all" to include all work assignments.

Data Properties

The data object contains the work assignment properties to update. For example: You cannot change a work assignment’s business entity, pay schedule, or payee. Sending business_entity_id, pay_schedule_id, employee_id, or contractor_id in data fails validation. These properties are documented in more detail in the API reference for work assignments.

Response

On success, the operation returns 202 Accepted with an async_task handle whose data.results enumerates the updated work assignments. See Asynchronous Execution for how to track completion and Bulk Create Work Assignments › Response for an example response shape. data.type will be bulk_update. ⚠️ Partners must treat any 200-level response as success. ⚠️ On failure, the operation will return 422 Unprocessable Entity with standard validation messages. If any matched work assignment fails per-model validation, the entire request fails and no work assignments are updated.

Notes

  • The same update properties are applied to all selected work assignments.
  • The operation only affects work assignments within the specified business entity.
  • You cannot change a work assignment’s business entity, pay schedule, or payee.
  • Validation is all-or-nothing. If any matched work assignment fails validation, the entire request fails and no work assignments are updated.
  • Invalid work assignment IDs in the include.ids or exclude.ids arrays are silently ignored and won’t cause an error.
  • When both include and exclude criteria are provided, exclusions are applied after inclusions.

Examples

Update the title on all work assignments

POST /work_assignments/bulk/update

Archive work assignments on a specific pay schedule

POST /work_assignments/bulk/update

Update a pay split for all employees, excluding specific work assignments

POST /work_assignments/bulk/update

Add a tag to all work assignments without replacing existing allocations

POST /work_assignments/bulk/update

Bulk Update Work Assignments Scope

The update scope endpoint previews which work assignments will be updated by a bulk update operation. It accepts the same request body as the bulk update endpoint, but instead of updating work assignments, it returns the work assignments that match the criteria.

Endpoint

POST /work_assignments/bulk/update/scope

Request

The request body is the same as the bulk update endpoint.

Response

On success, the operation will return 200 OK with an array of the work assignments that would be updated: