---
title: "Add Workspace Users"
method: POST
path: "/api/workspace/{workspace_ext_id}/users"
tags: ["workspace"]
---

# Add Workspace Users

`POST /api/workspace/{workspace_ext_id}/users`

Add users to a workspace (bulk operation). Only workspace owners can add users.

Client provides SealedBox-encrypted workspace key via Workspace-Key header.
Server decrypts it using session key, then wraps it with each recipient's public key.
Returns the full WorkspaceUserResponse for each successfully added user.

## Path parameters

- `workspace_ext_id` string, required

## Headers

- `workspace-key` string

## Request body

- AddWorkspaceUsersRequest — Request to add users to a workspace (POST /workspace/{id}/users). All invited users receive the same role.
  - `emails` string[], required
  - `role` 'owner' | 'collaborator' | 'guest' — Role of a user within a workspace.

## Response `201`

Successful Response

- WorkspaceUserResponse[]
  - `user` UserResponse, required — Standard user representation used across all endpoints. Used for: login response, workspace users, contacts (when registered).
    - `external_id` string, required
    - `email` string, required
    - `given_name` string, required
    - `family_name` string, required
    - `picture` string, nullable
    - `encryption_public_key` string, required
  - `role` 'owner' | 'collaborator' | 'guest', required — Role of a user within a workspace.
  - `joined_at` string, date-time, required
  - `conversation_count` integer
  - `document_count` integer

## Other responses

- `422` — Validation Error

## Changes

- **2026-01-17** `b91e4b449d56` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/arbicity/apis/arbi/changes/api/workspace/:workspace_ext_id/users/post.md)

---

[API](https://skmtc.dev/arbicity/apis/arbi.md) · [All operations](https://skmtc.dev/arbicity/apis/arbi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/arbicity/arbi/revisions/1f956ac3d1c1/schema)
