> ## Documentation Index
> Fetch the complete documentation index at: https://docs.taptalent.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Workspace Users

> API endpoints for listing and retrieving workspace users (company members and invited users)

The Workspace Users API lets you list and fetch people in your workspace: active members (recruiters and admins who have joined) and invited users (people who have been invited but not yet accepted).

Use these endpoints when you need to sync your system with TapTalent’s user list, show who can access the workspace, resolve inviter or reporting manager details, or filter users by role, team, or status.

**What you get:** Each user includes an `id`, contact info (`email`, `firstName`, `lastName`), `status` (ACTIVE, INVITED, or EXPIRED), role and company-admin flag, optional `teamId`/`teamIds` and `reportingManagerId`. Use `GET /users/:userId` to resolve an inviter or manager by id, and the [Workspace Teams](/api-reference/teams) API to resolve team names from `teamId` or `teamIds`.

***

## List Workspace Users

Returns a paginated list of everyone in the workspace: active members and invited users (including expired invites). Use query parameters to filter by status, role, company-admin flag, or a search term on name/email.

### `GET /users`

### Authentication

Requires API key authentication via `Authorization: Bearer YOUR_API_KEY` header.

### Query Parameters

| Parameter        | Type    | Required | Description                                                                                          |
| ---------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------- |
| `page`           | integer | No       | Page number (default: 1)                                                                             |
| `perPage`        | integer | No       | Items per page (default: 20, max: 100)                                                               |
| `status`         | string  | No       | Comma-separated list: `ACTIVE`, `INVITED`, `EXPIRED`. Only users with these statuses are returned.   |
| `role`           | string  | No       | Filter by role. Use internal code (`SUPER_ADMIN`, `ADMIN`) or display name ("Super Admin", "Admin"). |
| `isCompanyAdmin` | boolean | No       | If `true`, only company admins. If `false`, only non-admins. Omit for all.                           |
| `search`         | string  | No       | Substring match (case-insensitive) on email, first name, or last name.                               |

### User Object (in list and get-one)

| Field                | Type             | Description                                                                                                                                                            |
| -------------------- | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`                 | string           | Unique identifier for the user or invite                                                                                                                               |
| `email`              | string           | User's email address                                                                                                                                                   |
| `firstName`          | string           | First name                                                                                                                                                             |
| `lastName`           | string           | Last name                                                                                                                                                              |
| `status`             | string           | One of: `ACTIVE` (member), `INVITED` (pending invite), `EXPIRED` (invite expired)                                                                                      |
| `role`               | string or null   | Display name for the user's role (e.g. "Super Admin", "Admin"). Null if not set.                                                                                       |
| `isCompanyAdmin`     | boolean          | Whether the user is a company admin. Always `false` for invited users.                                                                                                 |
| `invitedById`        | string or null   | For invited users, the workspace user id of the person who sent the invite. `null` for active members. Use this id with `GET /users/:userId` to fetch inviter details. |
| `teamId`             | string or null   | Primary team id for the user. First team in `teamIds`. Use with `GET /teams/:teamId` to fetch team details.                                                            |
| `teamIds`            | array of strings | All team ids the user belongs to (active members may have multiple; invited users have one).                                                                           |
| `reportingManagerId` | string or null   | Workspace user id of the user's reporting manager. `null` if not set. Use with `GET /users/:userId` to fetch manager details.                                          |

### Example Request

```bash theme={null}
# List all users (with optional filters)
curl -X GET "https://partner-api.taptalent.io/v1/partner/users?page=1&perPage=20" \
  -H "Authorization: Bearer sk_live_AbCdEfGhIjKlMnOpQrStUv" \
  -H "Content-Type: application/json"

# Filter by status and role
curl -X GET "https://partner-api.taptalent.io/v1/partner/users?status=ACTIVE,INVITED&role=Admin&isCompanyAdmin=false&search=jane" \
  -H "Authorization: Bearer sk_live_AbCdEfGhIjKlMnOpQrStUv"
```

### Example Response

```json theme={null}
{
  "status": "success",
  "data": [
    {
      "id": "user-id-abc123",
      "email": "jane@example.com",
      "firstName": "Jane",
      "lastName": "Doe",
      "status": "ACTIVE",
      "role": "Super Admin",
      "isCompanyAdmin": true,
      "invitedById": null,
      "teamId": "team-uuid-1",
      "teamIds": ["team-uuid-1"],
      "reportingManagerId": null
    },
    {
      "id": "invite-id-xyz789",
      "email": "bob@example.com",
      "firstName": "Bob",
      "lastName": "Smith",
      "status": "INVITED",
      "role": "Admin",
      "isCompanyAdmin": false,
      "invitedById": "user-id-abc123",
      "teamId": "team-uuid-1",
      "teamIds": ["team-uuid-1"],
      "reportingManagerId": "user-id-abc123"
    }
  ],
  "pagination": {
    "page": 1,
    "perPage": 20,
    "total": 5
  }
}
```

***

## Get Workspace User

Returns one user or invite by `userId`. Use this after listing users when you need full details for a single person, or to resolve an inviter (`invitedById`) or reporting manager (`reportingManagerId`) from another user’s payload. The user or invite must belong to your workspace; otherwise the API returns 404.

### `GET /users/:userId`

### Authentication

Requires API key authentication via `Authorization: Bearer YOUR_API_KEY` header.

### Path Parameters

| Parameter | Type   | Required | Description                                 |
| --------- | ------ | -------- | ------------------------------------------- |
| `userId`  | string | Yes      | The unique identifier of the user or invite |

### Example Request

```bash theme={null}
curl -X GET "https://partner-api.taptalent.io/v1/partner/users/user-id-abc123" \
  -H "Authorization: Bearer sk_live_AbCdEfGhIjKlMnOpQrStUv" \
  -H "Content-Type: application/json"
```

### Example Response

```json theme={null}
{
  "status": "success",
  "data": {
    "id": "user-id-abc123",
    "email": "jane@example.com",
    "firstName": "Jane",
    "lastName": "Doe",
    "status": "ACTIVE",
    "role": "Super Admin",
    "isCompanyAdmin": true,
    "invitedById": null,
    "teamId": "team-uuid-1",
    "teamIds": ["team-uuid-1"],
    "reportingManagerId": null
  }
}
```

### Error Response (404)

When the user is not found or does not belong to your workspace:

```json theme={null}
{
  "statusCode": 404,
  "code": "NOT_FOUND",
  "type": "not_found",
  "errorMessage": "User not found in this workspace"
}
```

***

## Related

* [Workspace Teams](/api-reference/teams) — List and fetch teams; use `teamId` or `teamIds` from the user object to get team names.
* [API Reference Overview](/api-reference/overview) — Base URL and authentication for all partner endpoints.
