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

# Get App Analytics

> Return analytics for a single app, tier-gated by org plan.



## OpenAPI

````yaml https://api.getfloo.com/openapi.json get /v1/apps/{app_id}/analytics
openapi: 3.1.0
info:
  title: floo API
  version: 0.1.0
servers:
  - url: https://api.getfloo.com
security: []
paths:
  /v1/apps/{app_id}/analytics:
    get:
      tags:
        - analytics
      summary: Get App Analytics
      description: Return analytics for a single app, tier-gated by org plan.
      operationId: analytics_get_app_analytics
      parameters:
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: App Id
        - name: period
          in: query
          required: false
          schema:
            type: string
            pattern: ^(7d|30d|90d)$
            default: 30d
            title: Period
        - $ref: '#/components/parameters/X-Floo-Org-Id'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppAnalyticsResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - bearerAuth: []
components:
  parameters:
    X-Floo-Org-Id:
      name: X-Floo-Org-Id
      in: header
      required: false
      schema:
        type: string
        format: uuid
      description: Organization to act in; defaults to the one joined most recently.
  schemas:
    AppAnalyticsResponse:
      properties:
        app_id:
          type: string
          format: uuid
          title: App Id
        period:
          type: string
          title: Period
        summary:
          $ref: '#/components/schemas/AppAnalyticsSummary'
        time_series:
          items:
            $ref: '#/components/schemas/TimeSeriesPoint'
          type: array
          title: Time Series
        top_users:
          anyOf:
            - items:
                $ref: '#/components/schemas/TopUser'
              type: array
            - type: 'null'
          title: Top Users
      type: object
      required:
        - app_id
        - period
        - summary
        - time_series
        - top_users
      title: AppAnalyticsResponse
      description: Response for per-app analytics.
    ErrorResponse:
      properties:
        detail:
          $ref: '#/components/schemas/ErrorDetail'
      type: object
      required:
        - detail
      title: ErrorResponse
      description: Body of every error response except request validation (422).
    AppAnalyticsSummary:
      properties:
        total_requests:
          type: integer
          title: Total Requests
        total_errors:
          type: integer
          title: Total Errors
        error_rate:
          type: number
          title: Error Rate
        avg_latency_ms:
          anyOf:
            - type: integer
            - type: 'null'
          title: Avg Latency Ms
        p95_latency_ms:
          anyOf:
            - type: integer
            - type: 'null'
          title: P95 Latency Ms
        unique_users:
          anyOf:
            - type: integer
            - type: 'null'
          title: Unique Users
        authenticated_requests:
          anyOf:
            - type: integer
            - type: 'null'
          title: Authenticated Requests
        unauthenticated_requests:
          anyOf:
            - type: integer
            - type: 'null'
          title: Unauthenticated Requests
        gateway_handled_requests:
          anyOf:
            - type: integer
            - type: 'null'
          title: Gateway Handled Requests
        status_code_breakdown:
          additionalProperties:
            type: integer
          type: object
          title: Status Code Breakdown
        rejection_breakdown:
          additionalProperties:
            type: integer
          type: object
          title: Rejection Breakdown
          default: {}
      type: object
      required:
        - total_requests
        - total_errors
        - error_rate
        - avg_latency_ms
        - p95_latency_ms
        - unique_users
        - authenticated_requests
        - unauthenticated_requests
        - gateway_handled_requests
        - status_code_breakdown
      title: AppAnalyticsSummary
      description: >-
        Summary statistics for a single app.


        The auth-count fields are tier-gated (mirroring `unique_users`) and

        additionally tri-state by aggregator availability:

        - `0` — the aggregator measured zero authenticated requests for this
          period, OR the period contains no summary data at all (no traffic).
          Use `total_requests == 0` as the secondary signal to disambiguate
          "no data" from "measured zero" if the distinction matters.
        - positive `int` — the aggregator measured it for this period.

        - `None` — either the org's plan does not surface this field (restricted
        analytics
          tier), or the period contains at least one summary row that predates
          the field's introduction. Raw logs are gone for those rows, so the
          aggregator cannot retroactively populate them; NULL is contagious in
          the rollup to avoid emitting a falsely-confident integer.

        Consumers MUST treat `None` as "unknown", not "zero". A 0 value with

        `total_requests > 0` carries real signal — for accounts-mode apps it's

        the asymmetric pattern this field exists to disambiguate from "no auth

        flow completed".
    TimeSeriesPoint:
      properties:
        period_start:
          type: string
          format: date-time
          title: Period Start
        request_count:
          type: integer
          title: Request Count
        error_count:
          type: integer
          title: Error Count
        error_rate:
          type: number
          title: Error Rate
      type: object
      required:
        - period_start
        - request_count
        - error_count
        - error_rate
      title: TimeSeriesPoint
      description: A single data point in a time series.
    TopUser:
      properties:
        identity:
          type: string
          title: Identity
        count:
          type: integer
          title: Count
      type: object
      required:
        - identity
        - count
      title: TopUser
      description: A top user entry with identity and request count.
    ErrorDetail:
      properties:
        code:
          type: string
          title: Code
        message:
          type: string
          title: Message
      additionalProperties: true
      type: object
      required:
        - code
        - message
      title: ErrorDetail
      description: Standard error envelope with operation-specific JSON context.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: A `floo_` API key.

````

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