> ## 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 app users

> <Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Returns the app's users: the people who signed up to it, or who accepted an invitation and signed in. Someone you've invited who hasn't signed in yet isn't listed.

It leaves out accounts Base44 added to the app on its own, such as workspace admins and support staff granted access, and the short-lived accounts a test run creates. Unless your own account has a Base44 or Wix email address, [Count app users](/api-reference/count-app-users) also leaves out accounts with one. This list includes them, so the two can differ. Row-level security on the `User` entity applies, so rules that narrow reads narrow this list too.

Filter with `q`, or by passing a field name directly as a query parameter for an exact match, as in `?role=admin`. Users come back in the order they joined unless you set `sort`.

<Warning>Each user includes fields beyond the ones documented here. Don't rely on undocumented response fields, as they can change at any time.</Warning>

<Note>This endpoint accepts a personal API key belonging to a user with editor access to the app, including a read-only key. Workspace API keys are not accepted.</Note>



## OpenAPI

````yaml /developers/references/app-management/app-management-openapi.json get /api/apps/{app_id}/entities/User
openapi: 3.1.0
info:
  title: Base44 App Management API
  version: 1.0.0
servers:
  - url: https://app.base44.com
security:
  - PersonalAccessTokenAuth: []
paths:
  /api/apps/{app_id}/entities/User:
    get:
      summary: List app users
      description: >-
        <Info>This API is in beta. Endpoints, fields, and behavior may still
        change, so avoid depending on it in production.</Info>


        Returns the app's users: the people who signed up to it, or who accepted
        an invitation and signed in. Someone you've invited who hasn't signed in
        yet isn't listed.


        It leaves out accounts Base44 added to the app on its own, such as
        workspace admins and support staff granted access, and the short-lived
        accounts a test run creates. Unless your own account has a Base44 or Wix
        email address, [Count app users](/api-reference/count-app-users) also
        leaves out accounts with one. This list includes them, so the two can
        differ. Row-level security on the `User` entity applies, so rules that
        narrow reads narrow this list too.


        Filter with `q`, or by passing a field name directly as a query
        parameter for an exact match, as in `?role=admin`. Users come back in
        the order they joined unless you set `sort`.


        <Warning>Each user includes fields beyond the ones documented here.
        Don't rely on undocumented response fields, as they can change at any
        time.</Warning>


        <Note>This endpoint accepts a personal API key belonging to a user with
        editor access to the app, including a read-only key. Workspace API keys
        are not accepted.</Note>
      operationId: list_users_api_apps__app_id__entities_User_get
      parameters:
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the app whose users you want to list.
            title: App Id
          description: ID of the app whose users you want to list.
          example: 6820f3a4e7b91d003c45a1f2
        - name: q
          in: query
          required: false
          description: >-
            Filter as a JSON object of field names and values, for example
            `{"status": "paid"}` for an exact match, or using an operator such
            as `$gt` for a comparison. See [Filtering, sorting, and
            paging](/developers/references/apps-api/sections/entities#filtering-sorting-and-paging)
            for a full list of operators.
          example: '{"role": "admin"}'
          schema:
            type: string
        - name: limit
          in: query
          required: false
          description: >-
            Maximum number of users to return, from 1 to 10000. Leave it out to
            get every matching user in one response.
          example: 100
          schema:
            type: integer
        - name: skip
          in: query
          required: false
          description: >-
            Number of users to skip before the ones you get back, 0 or more.
            Defaults to 0. Use it with `limit` to page through a long list.
          example: 100
          schema:
            type: integer
            default: 0
        - name: sort
          in: query
          required: false
          description: >-
            Single field to sort by, prefixed with `-` for descending. For
            example, `-created_date` returns newest first. Sorting by more than
            one field isn't supported.
          example: '-created_date'
          schema:
            type: string
        - name: fields
          in: query
          required: false
          description: >-
            Comma-separated list of fields to return, which reduces the response
            size on a wide entity. Reach a field inside an object with dots, as
            in `customer.email`. Each record still carries its `id` whether you
            ask for it or not.
          example: email,full_name,role
          schema:
            type: string
      responses:
        '200':
          description: The app's users.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  additionalProperties: true
                  description: One user of an app.
                  properties:
                    id:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: ID of the user.
                      example: 6874b0c2e1a94d0031bb77de
                      title: Id
                    email:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: Email the user signs in with.
                      example: jane@acme.com
                      title: Email
                    full_name:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: The user's name, or `null` if they haven't given one.
                      example: Jane Cooper
                      title: Full Name
                    role:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        The user's role in the app. `user` and `admin` are built
                        in, and an app can define its own.
                      example: user
                      title: Role
                    collaborator_role:
                      anyOf:
                        - const: editor
                          type: string
                        - type: 'null'
                      description: >-
                        `editor` when the user can also edit the app in Base44,
                        otherwise `null`.
                      example: editor
                      title: Collaborator Role
                    created_date:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        When the user joined the app, as a UTC timestamp in ISO
                        8601 format.
                      example: '2026-06-01T09:23:41.481000Z'
                      title: Created Date
                    updated_date:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        When the user's record last changed, as a UTC timestamp
                        in ISO 8601 format.
                      example: '2026-06-04T14:07:02.115000Z'
                      title: Updated Date
                  title: AppUserRecord
                title: AppUsers
        '400':
          description: >-
            `q` isn't a JSON object or isn't a filter Base44 can run, `limit` or
            `skip` is out of range or not a whole number, or `sort` names more
            than one field.
        '401':
          description: Missing or invalid credentials.
        '403':
          description: You don't have editor access to this app.
        '404':
          description: App not found.
        '422':
          description: >-
            A filter you passed as its own query parameter doesn't match the
            type the `User` schema declares for that field.
        '429':
          description: >-
            Rate limit exceeded. The base limit is 100 requests per minute, and
            this endpoint shares it with [Count app
            users](/api-reference/count-app-users). See [Rate
            limits](/developers/references/apps-api/get-started/rate-limits) for
            the multiplier your plan gets.
      security:
        - PersonalAccessTokenAuth:
            - read_only
components:
  securitySchemes:
    PersonalAccessTokenAuth:
      type: http
      scheme: bearer
      description: >-
        Personal access token, sent as `Authorization: Bearer <token>`. Each
        operation lists the permission it needs: `read_only` or `full_access`. A
        full-access token can call every operation. A read-only token can call
        only the operations that list `read_only`; anything else returns 403
        `read_only_credential_route_not_allowed`.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.