> ## 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 analytics event properties

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

Returns the property keys the app has sent with a given event, so you know what you can filter, aggregate, and group by.

Properties are whatever the app passes to `base44.analytics.track()`, so they differ per event. Get the event names first with [List analytics event names](/api-reference/list-analytics-event-names).

To use a key from the response, prefix it with `properties.`. For example, pass `properties.plan` as a filter field in [Query analytics events](/api-reference/query-analytics-events), or as a metric `field` in [Aggregate analytics events by field](/api-reference/aggregate-analytics-events-by-field).

<Warning>Only a key made up of letters, digits, and underscores, starting with a letter or an underscore, can be used that way. An app can track a property whose key holds a space, a hyphen, or a leading digit, and this endpoint returns it, but you cannot filter or aggregate on it. Rename such a property in the app to query it.</Warning>

Keys come from the events retained over the last 60 days. The response returns at most 100 keys and does not say whether it truncated, so an event that carries more than 100 distinct keys reports only some of them.



## OpenAPI

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


        Returns the property keys the app has sent with a given event, so you
        know what you can filter, aggregate, and group by.


        Properties are whatever the app passes to `base44.analytics.track()`, so
        they differ per event. Get the event names first with [List analytics
        event names](/api-reference/list-analytics-event-names).


        To use a key from the response, prefix it with `properties.`. For
        example, pass `properties.plan` as a filter field in [Query analytics
        events](/api-reference/query-analytics-events), or as a metric `field`
        in [Aggregate analytics events by
        field](/api-reference/aggregate-analytics-events-by-field).


        <Warning>Only a key made up of letters, digits, and underscores,
        starting with a letter or an underscore, can be used that way. An app
        can track a property whose key holds a space, a hyphen, or a leading
        digit, and this endpoint returns it, but you cannot filter or aggregate
        on it. Rename such a property in the app to query it.</Warning>


        Keys come from the events retained over the last 60 days. The response
        returns at most 100 keys and does not say whether it truncated, so an
        event that carries more than 100 distinct keys reports only some of
        them.
      operationId: >-
        get_event_property_keys_api_apps__app_id__analytics__event_name__properties_get
      parameters:
        - name: event_name
          in: path
          required: true
          schema:
            type: string
            description: >-
              Name of the event whose property keys to return, exactly as the
              app tracked it. An event the app never tracked returns an empty
              list.
            title: Event Name
          description: >-
            Name of the event whose property keys to return, exactly as the app
            tracked it. An event the app never tracked returns an empty list.
          example: checkout_completed
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the app whose analytics to read.
            title: App Id
          description: ID of the app whose analytics to read.
          example: 6820f3a4e7b91d003c45a1f2
      responses:
        '200':
          description: The event's property keys.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventPropertyKeysResponse'
        '401':
          description: Missing or invalid credentials.
        '403':
          description: You don't have access to this app.
        '404':
          description: App not found.
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    EventPropertyKeysResponse:
      properties:
        event_name:
          type: string
          title: Event Name
          description: Name of the event the property keys belong to.
          example: checkout_completed
        property_keys:
          items:
            type: string
          type: array
          title: Property Keys
          description: >-
            Property keys the app has sent with this event. Prefix a key with
            `properties.` to filter, aggregate, or group by it, which works for
            keys made up of letters, digits, and underscores.
          example:
            - plan
            - amount
            - currency
      type: object
      required:
        - event_name
      title: EventPropertyKeysResponse
      description: Response for event property keys discovery.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    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
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: api_key
      description: Personal API key.

````