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

> ## Agent Instructions
> Internal links on these pages omit the .md extension. Append .md to a docs page URL, or send an Accept: text/markdown header, to get that page as markdown.

# Get latest run per test

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

Returns each test's most recent run, with its report, in one call. The response is an object keyed by test ID. A test that has never run isn't in it, and a deleted test's last run still is.

Only the app's 1,000 most recent runs are considered, so a test whose last run is older than that is left out. The object isn't paged.

This is limited to 6000 requests per minute per caller for each app. Some workspaces have a different limit.

<Note>This endpoint accepts a personal API key belonging to a user with access to the app. Read-only keys are refused even though this endpoint only reads, and workspace API keys are not accepted.</Note>

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



## OpenAPI

````yaml /developers/references/app-management/app-management-openapi.json get /api/apps/{app_id}/testing-agent/executions/latest-by-flow
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}/testing-agent/executions/latest-by-flow:
    get:
      summary: Get latest run per test
      description: >-
        <Info>This API is in beta. Endpoints, fields, and behavior may still
        change, so avoid depending on it in production.</Info>


        Returns each test's most recent run, with its report, in one call. The
        response is an object keyed by test ID. A test that has never run isn't
        in it, and a deleted test's last run still is.


        Only the app's 1,000 most recent runs are considered, so a test whose
        last run is older than that is left out. The object isn't paged.


        This is limited to 6000 requests per minute per caller for each app.
        Some workspaces have a different limit.


        <Note>This endpoint accepts a personal API key belonging to a user with
        access to the app. Read-only keys are refused even though this endpoint
        only reads, and workspace API keys are not accepted.</Note>


        <Warning>The response includes fields beyond the ones documented here.
        Don't rely on undocumented response fields, as they can change at any
        time.</Warning>
      operationId: >-
        get_latest_executions_by_flow_api_apps__app_id__testing_agent_executions_latest_by_flow_get
      parameters:
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the app.
            title: App Id
          description: ID of the app.
          example: 6820f3a4e7b91d003c45a1f2
      responses:
        '200':
          description: Each test's most recent run, keyed by test ID.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LatestTestRuns'
        '401':
          description: Missing or invalid credentials.
        '403':
          description: >-
            You don't have access to this app, the app is blocked, or your API
            key is read-only or a workspace API key.
        '404':
          description: App not found.
        '409':
          description: Your workspace requires an unlocked SSO session.
        '429':
          description: Rate limit exceeded.
components:
  schemas:
    LatestTestRuns:
      additionalProperties:
        $ref: '#/components/schemas/LatestTestRun'
      type: object
      title: LatestTestRuns
      description: Each test's most recent run, keyed by the test's ID.
    LatestTestRun:
      properties:
        id:
          type: string
          title: Id
          description: ID of the run.
          example: 68a1c9b7f0b3d9001a7e5d04
        app_id:
          type: string
          title: App Id
          description: ID of the app.
          example: 6820f3a4e7b91d003c45a1f2
        flow_id:
          type: string
          title: Flow Id
          description: ID of the test this run belongs to.
          example: 68a1c2e4f0b3d9001a7e5c21
        flow_goal:
          type: string
          title: Flow Goal
          description: The test's goal when the run started.
          example: >-
            Sign up, create a project called Launch, and check that it appears
            on the dashboard.
        flow_role:
          anyOf:
            - type: string
            - type: 'null'
          title: Flow Role
          description: >-
            Role the run signs in as, including one Base44 picked from the
            test's name or goal. Set once the run starts. `null` when the run
            uses no role.
          example: admin
        site_url:
          type: string
          title: Site Url
          description: URL the run opened.
          example: >-
            https://preview-6820f3a4e7b91d003c45a1f2.base44.app/?_preview_token=FH-j7wHS7IR_fC1tUh4wCd_fNV1XGC479cuqNSYi9mA
        status:
          type: string
          enum:
            - pending
            - running
            - analyzing
            - success
            - failed
            - timeout
            - cancelled
            - paused
          title: Status
          description: >-
            Where the run is. `pending`, `running` and `analyzing` mean it's
            still going. `success` means the browser session finished, and
            `failed` means it didn't. `timeout`, `cancelled` and `paused` mean
            the run stopped early. The test passed when `goal_accomplished` is
            `true` and `failure_reason` isn't `platform` or `internal`.
          example: success
        actions:
          items:
            $ref: '#/components/schemas/TestRunStep'
          type: array
          title: Actions
          description: Steps the agent took. Empty until the run finishes.
          example:
            - step_summary: Clicked Sign up in the header to reach the registration form.
              step_title: Opened the sign-up form
        result_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Result Message
          description: >-
            The agent's account of how the run went, or `null` before the run
            finishes.
          example: Created the project and found it on the dashboard.
        goal_accomplished:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Goal Accomplished
          description: >-
            Whether the agent accomplished the goal, or `null` before the run
            finishes. Can be `true` on a run whose `failure_reason` is
            `platform` or `internal`, which counts as a technical failure.
          example: true
        live_status:
          anyOf:
            - type: string
            - type: 'null'
          title: Live Status
          description: Short progress message for display, or `null` before the run starts.
          example: Analyzing results
        analysis_status:
          anyOf:
            - type: string
              enum:
                - pending
                - completed
                - failed
            - type: 'null'
          title: Analysis Status
          description: >-
            Progress of the run's report. `completed` means [Get test run
            report](/api-reference/get-test-run-report) has it. `null` before
            the run reaches analysis.
          example: completed
        failure_reason:
          anyOf:
            - type: string
              enum:
                - app
                - platform
                - internal
                - out_of_credits
            - type: 'null'
          title: Failure Reason
          description: >-
            Why the run didn't pass, or `null` when no reason was recorded.
            `app` is a problem in your app. `platform` and `internal` are
            problems on Base44's side, so rerun the test. `out_of_credits` comes
            with status `paused`.
          example: app
        credits_charged:
          anyOf:
            - type: number
            - type: 'null'
          title: Credits Charged
          description: Credits the run cost, or `null` before it's charged.
          example: 1.5
        started_at:
          anyOf:
            - type: string
            - type: 'null'
          title: Started At
          description: >-
            When the browser session started, as an ISO 8601 UTC timestamp, or
            `null` while pending.
          example: '2026-09-28T10:16:02+00:00'
        completed_at:
          anyOf:
            - type: string
            - type: 'null'
          title: Completed At
          description: >-
            When the run ended, as an ISO 8601 UTC timestamp, or `null` while
            it's still going.
          example: '2026-09-28T10:18:40+00:00'
        created_date:
          type: string
          title: Created Date
          description: When the run was requested, as an ISO 8601 UTC timestamp.
          example: '2026-09-28T10:16:00+00:00'
        updated_date:
          type: string
          title: Updated Date
          description: When the run last changed, as an ISO 8601 UTC timestamp.
          example: '2026-09-28T10:18:40+00:00'
        analysis:
          anyOf:
            - $ref: '#/components/schemas/TestRunReport'
            - type: 'null'
          description: >-
            The run's report, the same one [Get test run
            report](/api-reference/get-test-run-report) returns, or `null` while
            the run has none.
      type: object
      required:
        - id
        - app_id
        - flow_id
        - flow_goal
        - flow_role
        - site_url
        - status
        - actions
        - result_message
        - goal_accomplished
        - live_status
        - analysis_status
        - failure_reason
        - credits_charged
        - started_at
        - completed_at
        - created_date
        - updated_date
        - analysis
      title: LatestTestRun
      description: A test's most recent run, with its report.
    TestRunStep:
      properties:
        step_title:
          type: string
          title: Step Title
          description: Short description of the step.
          example: Opened the sign-up form
        step_summary:
          type: string
          title: Step Summary
          description: What the agent did in this step and why.
          example: Clicked Sign up in the header to reach the registration form.
      type: object
      required:
        - step_title
        - step_summary
      title: TestRunStep
      description: One step the testing agent took during a run.
    TestRunReport:
      properties:
        id:
          type: string
          title: Id
          description: ID of the report.
          example: 68a1ca02f0b3d9001a7e5d11
        app_id:
          type: string
          title: App Id
          description: ID of the app.
          example: 6820f3a4e7b91d003c45a1f2
        flow_id:
          type: string
          title: Flow Id
          description: ID of the test.
          example: 68a1c2e4f0b3d9001a7e5c21
        execution_id:
          type: string
          title: Execution Id
          description: ID of the run.
          example: 68a1c9b7f0b3d9001a7e5d04
        flow_goal:
          type: string
          title: Flow Goal
          description: The test's goal when the run started.
          example: >-
            Sign up, create a project called Launch, and check that it appears
            on the dashboard.
        status:
          type: string
          enum:
            - goal_accomplished
            - goal_not_accomplished
            - failed
            - timeout
          title: Status
          description: >-
            The verdict. `failed` and `timeout` mean the report couldn't reach
            one, and `summary` says what happened.
          example: goal_accomplished
        summary:
          type: string
          title: Summary
          description: Plain-language summary of the run.
          example: >-
            The project was created and listed on the dashboard, but only after
            a reload.
        issues:
          items:
            $ref: '#/components/schemas/TestRunIssue'
          type: array
          title: Issues
          description: Problems found during the run. Empty when there were none.
          example:
            - category: functionality
              related_step_number: 3
              severity: warning
              summary: >-
                After saving, the dashboard still shows no projects until the
                page is reloaded.
              title: Project doesn't appear after creation
        created_date:
          type: string
          title: Created Date
          description: When the report was written, as an ISO 8601 UTC timestamp.
          example: '2026-09-28T10:18:39+00:00'
        updated_date:
          type: string
          title: Updated Date
          description: When the report last changed, as an ISO 8601 UTC timestamp.
          example: '2026-09-28T10:18:39+00:00'
      type: object
      required:
        - id
        - app_id
        - flow_id
        - execution_id
        - flow_goal
        - status
        - summary
        - issues
        - created_date
        - updated_date
      title: TestRunReport
      description: The report for a finished run.
    TestRunIssue:
      properties:
        title:
          type: string
          title: Title
          description: Short name of the problem.
          example: Project doesn't appear after creation
        summary:
          type: string
          title: Summary
          description: What went wrong, as seen from the app's user.
          example: >-
            After saving, the dashboard still shows no projects until the page
            is reloaded.
        severity:
          type: string
          title: Severity
          description: How serious the problem is. Usually `critical`, `warning` or `info`.
          example: warning
        category:
          type: string
          title: Category
          description: >-
            Kind of problem. Usually `ui_interaction`, `form_validation`,
            `navigation`, `content`, `performance`, `accessibility` or
            `functionality`. Base44 also adds advisory issues with
            `seed_data_gap`, `auth_required` or `permission_gap` when the test
            data, sign-in, or the test's role got in the way. Those describe the
            test setup, not a bug in your app.
          example: functionality
        related_step_number:
          anyOf:
            - type: integer
            - type: 'null'
          title: Related Step Number
          description: >-
            Step in the run's `actions` where the problem showed, counting from
            1, or `null`.
          example: 3
      type: object
      required:
        - title
        - summary
        - severity
        - category
        - related_step_number
      title: TestRunIssue
      description: A problem the testing agent found during a run.
  securitySchemes:
    PersonalAccessTokenAuth:
      type: http
      scheme: bearer
      description: 'Personal access token, sent as `Authorization: Bearer <token>`.'

````

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