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

# List users

> Returns a list of all users in the workspace with their profile and credit consumption data.

    You can use the `from` and `to` parameters to specify the date range for credit consumption. If not specified, defaults to consumption during the current billing period.

    You can use the returned `user_id` values to call:
    - [`Get user`](/api-reference/users/get-user): For user consumption data for a specific user over a custom date range.
    - [`List user apps`](/api-reference/users/list-user-apps): To see a specific user's app IDs.

    Results are paginated. Check `has_more` in the response and use the returned `cursor` to fetch additional pages.



## OpenAPI

````yaml /developers/references/monitoring-api/monitoring-openapi.json get /{workspace_id}/users
openapi: 3.1.0
info:
  title: Base44 Workspace Monitoring API
  description: |2-

        Workspace monitoring and analytics API.
        
        Access usage analytics, user engagement metrics, and governance data for your workspace.
        
        **Features:**
        - Workspace-level analytics and KPIs
        - User activity tracking and credit consumption
        - app engagement metrics and security governance
        
        **Authentication:** Required for all endpoints (admin or owner role)
        
        Use the 🔒 **Authorize** button above to enter your API key.
        
        **Rate Limits:**
        - Analytics endpoints: 50 requests per minute per user
        - User list: 50 requests per minute per user
        - User detail: 75 requests per minute per user
        - User apps: 50 requests per minute per user
        - App list: 50 requests per minute per user
        - App analytics: 50 requests per minute per user
        
        Enterprise workspaces get 2x these limits.
        
        Rate limits are applied per authenticated user and enforced using token-bucket algorithm.
        
  version: 1.2.1
servers:
  - url: https://app.base44.com/api/v1/monitoring
    description: Monitoring API
security:
  - ApiKeyAuth: []
tags:
  - name: analytics
    description: >-
      Workspace-level analytics and KPIs including usage, engagement, and cost
      metrics.
  - name: users
    description: User management, activity tracking, and credit consumption data.
  - name: apps
    description: App-level analytics, engagement metrics, and governance flags.
  - name: superagents
    description: Super Agent inventory and analytics.
paths:
  /{workspace_id}/users:
    get:
      tags:
        - users
      summary: List users
      description: >-
        Returns a list of all users in the workspace with their profile and
        credit consumption data.

            You can use the `from` and `to` parameters to specify the date range for credit consumption. If not specified, defaults to consumption during the current billing period.

            You can use the returned `user_id` values to call:
            - [`Get user`](/api-reference/users/get-user): For user consumption data for a specific user over a custom date range.
            - [`List user apps`](/api-reference/users/list-user-apps): To see a specific user's app IDs.

            Results are paginated. Check `has_more` in the response and use the returned `cursor` to fetch additional pages.
      operationId: list_users__workspace_id__users_get
      parameters:
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
            title: Workspace Id
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 50
            minimum: 1
            description: Items per page. Max 50.
            default: 50
            title: Limit
          description: Items per page. Max 50.
        - name: cursor
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Pagination cursor from previous response.
            title: Cursor
          description: Pagination cursor from previous response.
        - name: active_only
          in: query
          required: false
          schema:
            type: boolean
            description: Filter to users who consumed message credits in the last 30 days.
            default: false
            title: Active Only
          description: Filter to users who consumed message credits in the last 30 days.
        - name: tier
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Filter by workspace tier, such as `"builder"`, `"pro"`, or
              `"enterprise"`. Use the base tier name, which matches its numbered
              sub-tiers. Preferred over the deprecated `seat_type`.
            title: Tier
          description: >-
            Filter by workspace tier, such as `"builder"`, `"pro"`, or
            `"enterprise"`. Use the base tier name, which matches its numbered
            sub-tiers. Preferred over the deprecated `seat_type`.
        - name: seat_type
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              **Deprecated:** Filter by subscription tier. Use `tier` instead.
              `tier` is the preferred alias for the same filter.
            deprecated: true
            title: Seat Type
          description: >-
            **Deprecated:** Filter by subscription tier. Use `tier` instead.
            `tier` is the preferred alias for the same filter.
          deprecated: true
        - name: over_member_limit
          in: query
          required: false
          schema:
            type: boolean
            description: >-
              Return only members whose consumption has exceeded their
              per-member credit limit in the current credit reset period. Has no
              effect when the workspace tier does not enforce per-member limits.
            default: false
            title: Over Member Limit
          description: >-
            Return only members whose consumption has exceeded their per-member
            credit limit in the current credit reset period. Has no effect when
            the workspace tier does not enforce per-member limits.
        - name: sort
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Sort by `email`, `created_at`, `role`, `seat_type`, `total_apps`,
              `total_superagents`, `active_last_30d`, `total_message_credits`,
              `total_integration_credits`, `total_credits`, `credit_limit`,
              `credit_limit_used`, or `credit_limit_remaining`. Prefix with `-`
              for descending.
            title: Sort
          description: >-
            Sort by `email`, `created_at`, `role`, `seat_type`, `total_apps`,
            `total_superagents`, `active_last_30d`, `total_message_credits`,
            `total_integration_credits`, `total_credits`, `credit_limit`,
            `credit_limit_used`, or `credit_limit_remaining`. Prefix with `-`
            for descending.
        - name: search
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                maxLength: 100
              - type: 'null'
            description: Case-insensitive email search.
            title: Search
          description: Case-insensitive email search.
        - name: role
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Filter by workspace role: `owner`, `admin`, `editor`, `viewer`, or
              `guest`.
            title: Role
          description: >-
            Filter by workspace role: `owner`, `admin`, `editor`, `viewer`, or
            `guest`.
        - name: is_active
          in: query
          required: false
          schema:
            anyOf:
              - type: boolean
              - type: 'null'
            description: >-
              Filter by enabled (`true`) or disabled (`false`) platform user
              account state.
            title: Is Active
          description: >-
            Filter by enabled (`true`) or disabled (`false`) platform user
            account state.
        - name: from
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Start date in `YYYY-MM-DD` format. Required if `to` is provided.
              Defaults to billing period start.
            title: From
          description: >-
            Start date in `YYYY-MM-DD` format. Required if `to` is provided.
            Defaults to billing period start.
          example: '2026-06-01'
        - name: to
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              End date in `YYYY-MM-DD` format. Required if `from` is provided.
              Defaults to current date.
            title: To
          description: >-
            End date in `YYYY-MM-DD` format. Required if `from` is provided.
            Defaults to current date.
          example: '2026-06-30'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnalyticsUserListResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    AnalyticsUserListResponse:
      properties:
        users:
          items:
            $ref: '#/components/schemas/AnalyticsUserRecord'
          type: array
          title: Users
          description: List of users.
        pagination:
          $ref: '#/components/schemas/PaginationMetadata'
          description: Pagination metadata.
      type: object
      required:
        - users
        - pagination
      title: AnalyticsUserListResponse
      description: Paginated list of users.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    AnalyticsUserRecord:
      properties:
        user_id:
          type: string
          title: User Id
          description: Unique user identifier.
          example: usr_abc123
        email:
          type: string
          format: email
          title: Email
          description: User email address.
          example: jane.doe@company.com
        seat_type:
          type: string
          title: Seat Type
          description: >-
            **Deprecated:** Workspace billing tier this user inherits. Use
            `WorkspaceAnalytics.credit_pool.tier` and the per-user
            `member_allocation` block instead. On the current billing model all
            members share the workspace tier, so this value is identical for
            every member.
          deprecated: true
        created_at:
          type: string
          title: Created At
          description: User registration date in `YYYY-MM-DDTHH:MM:SSZ` format.
          example: '2024-03-15T10:30:00Z'
        is_active:
          type: boolean
          title: Is Active
          description: Whether the user account is enabled (not disabled).
          example: true
        role:
          type: string
          title: Role
          description: >-
            Workspace role. One of `"owner"`, `"admin"`, `"editor"`, `"viewer"`,
            `"member"`, or `"guest"`.
          example: member
        total_apps:
          type: integer
          minimum: 0
          title: Total Apps
          description: Total number of active regular apps owned by this user.
          example: 12
        total_superagents:
          type: integer
          minimum: 0
          title: Total Superagents
          description: Total number of Super Agents owned by this user.
          example: 3
        active_last_30d:
          type: boolean
          title: Active Last 30D
          description: Whether the user consumed message credits in the last 30 days.
          example: true
        total_message_credits:
          type: number
          minimum: 0
          title: Total Message Credits
          description: Total message credits consumed in the requested date range.
          example: 1250
        total_integration_credits:
          type: number
          minimum: 0
          title: Total Integration Credits
          description: Total integration credits consumed in the requested date range.
          example: 340
        total_credits:
          type: number
          minimum: 0
          title: Total Credits
          description: Total credits consumed in the requested date range.
          example: 1590
        member_allocation:
          anyOf:
            - $ref: '#/components/schemas/MemberCreditAllocation'
            - type: 'null'
          description: >-
            Per-member credit limit status for the current credit reset period.
            `null` when the workspace tier does not enforce per-member limits.
      type: object
      required:
        - user_id
        - email
        - seat_type
        - created_at
        - is_active
        - role
        - total_apps
        - total_superagents
        - active_last_30d
        - total_message_credits
        - total_integration_credits
        - total_credits
      title: AnalyticsUserRecord
      description: Detailed user information with consumption data.
    PaginationMetadata:
      properties:
        total:
          type: integer
          title: Total
          description: Total number of items.
          example: 156
        limit:
          type: integer
          title: Limit
          description: Number of items per page.
          example: 50
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
          description: >-
            Cursor for fetching the next page. The value is `null` if there are
            no more pages.
          example: eyJsYXN0X2lkIjoiMTIzIn0=
        has_more:
          type: boolean
          title: Has More
          description: Whether there are more items to fetch.
          example: true
      type: object
      required:
        - total
        - limit
        - has_more
      title: PaginationMetadata
      description: Metadata for paginated responses
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    MemberCreditAllocation:
      properties:
        credit_limit:
          anyOf:
            - type: integer
            - type: 'null'
          title: Credit Limit
          description: >-
            Effective per-member message credit limit for the current credit
            reset period. `null` means no limit applies to this member.
          example: 1000
        credit_limit_source:
          anyOf:
            - type: string
            - type: 'null'
          title: Credit Limit Source
          description: >-
            Where the effective limit comes from. One of `"user_override"`,
            `"org_default"`, or `null` when no limit applies.
          example: org_default
        credit_limit_used:
          type: number
          minimum: 0
          title: Credit Limit Used
          description: >-
            Message credits this member consumed in the current credit reset
            period.
          example: 420
        credit_limit_remaining:
          anyOf:
            - type: number
            - type: 'null'
          title: Credit Limit Remaining
          description: Member credits remaining. `null` when `credit_limit` is `null`.
          example: 580
        credit_limit_exceeded:
          type: boolean
          title: Credit Limit Exceeded
          description: Whether the member has exceeded their effective per-member limit.
          example: false
      type: object
      required:
        - credit_limit
        - credit_limit_source
        - credit_limit_used
        - credit_limit_remaining
        - credit_limit_exceeded
      title: MemberCreditAllocation
      description: >-
        Per-member credit limit and usage within the shared credit pool.


        When `AnalyticsUserRecord.member_allocation` is `null`, the workspace
        tier

        does not enforce per-member credit limits, so the member draws from the
        pool

        without a personal limit.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: api_key
      description: >-
        API key for authentication. See the Authentication page for your API for
        details on how to get your key.

````