> ## 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.

Like [Count app users](/api-reference/count-app-users), 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. 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.


        Like [Count app users](/api-reference/count-app-users), 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. 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, `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.
components:
  securitySchemes:
    PersonalAccessTokenAuth:
      type: http
      scheme: bearer
      description: 'Personal access token, sent as `Authorization: Bearer <token>`.'

````