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

# List Members

> Get a paginated list of members in the workspace

## Overview

This endpoint returns a paginated list of members in the workspace. You can filter the results by name or email using the `search` parameter.

## Authentication

All API requests must use `Authorization: Bearer <API_KEY>`. This endpoint requires the `users` scope.

<ParamField header="Authorization" type="string" required>
  Bearer token. Format: `Bearer <API_KEY>`.
</ParamField>

## Query Parameters

<ParamField query="limit" type="number" default="20">
  Number of items per page (1-100).
</ParamField>

<ParamField query="offset" type="number" default="0">
  Starting position.
</ParamField>

<ParamField query="search" type="string">
  Search by name or email.
</ParamField>

## Response

<ResponseField name="items" type="object[]">
  List of workspace members.

  <Expandable title="properties">
    <ResponseField name="id" type="string">
      Unique identifier for the user in the workspace (user ID).
    </ResponseField>

    <ResponseField name="name" type="string">
      User name.
    </ResponseField>

    <ResponseField name="email" type="string">
      User email.
    </ResponseField>

    <ResponseField name="profileUrl" type="string | null">
      Profile image URL.
    </ResponseField>

    <ResponseField name="role" type="string">
      User role in the workspace.
    </ResponseField>

    <ResponseField name="createdAt" type="string">
      ISO8601 timestamp of when the user joined.
    </ResponseField>

    <ResponseField name="folders" type="object[]">
      User folders.

      <Expandable title="properties">
        <ResponseField name="id" type="string">
          Folder ID.
        </ResponseField>

        <ResponseField name="name" type="string">
          Folder name.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="groups" type="object[]">
      User groups (v1 alias for folders, same data as `folders`).
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="pagination" type="object">
  Pagination metadata.

  <Expandable title="properties">
    <ResponseField name="limit" type="number">
      Number of items per page.
    </ResponseField>

    <ResponseField name="nextOffset" type="number | null">
      Offset for the next page, null if last page.
    </ResponseField>

    <ResponseField name="isLast" type="boolean">
      Whether this is the last page.
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash curl theme={null}

  curl -X GET "https://api.caret.so/v1/workspace/members?limit=20&offset=0" \
       -H "Authorization: Bearer your_api_key_here"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://api.caret.so/v1/workspace/members?limit=20&offset=0',
    {
      headers: {
        Authorization: 'Bearer your_api_key_here',
      },
    },
  );

  const data = await response.json();
  console.log(data);
  ```

  ```python Python theme={null}
  import requests

  url = "https://api.caret.so/v1/workspace/members"
  params = {
      "limit": "20",
      "offset": "0"
  }
  headers = {
      "Authorization": "Bearer your_api_key_here"
  }

  response = requests.get(url, headers=headers, params=params)
  print(response.json())
  ```
</RequestExample>

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "items": [
      {
        "id": "user_123456789",
        "name": "John Doe",
        "email": "john@example.com",
        "profileUrl": "https://example.com/profile.jpg",
        "role": "admin",
        "createdAt": "2023-01-01T00:00:00Z",
        "folders": [
          {
            "id": "folder_123",
            "name": "Product"
          }
        ],
        "groups": [
          {
            "id": "folder_123",
            "name": "Product"
          }
        ]
      }
    ],
    "pagination": {
      "limit": 20,
      "nextOffset": null,
      "isLast": true
    }
  }
  ```

  ```json 401 Unauthorized theme={null}
  {
    "error": {
      "code": "unauthorized",
      "message": "Invalid or missing API key"
    }
  }
  ```

  ```json 403 Forbidden theme={null}
  {
    "error": {
      "code": "forbidden",
      "message": "Missing required scope: users"
    }
  }
  ```
</ResponseExample>
