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

# Cancel test run

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

Stops a test run that's still going and closes its browser session. The run ends with `status` set to `cancelled`.

Cancelling a run that already ended changes nothing and returns `already_terminal` set to `true`, so retrying is safe.

This is limited to 300 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 editor access to the app. Read-only keys and workspace API keys are refused.</Note>



## OpenAPI

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


        Stops a test run that's still going and closes its browser session. The
        run ends with `status` set to `cancelled`.


        Cancelling a run that already ended changes nothing and returns
        `already_terminal` set to `true`, so retrying is safe.


        This is limited to 300 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
        editor access to the app. Read-only keys and workspace API keys are
        refused.</Note>
      operationId: >-
        cancel_execution_api_apps__app_id__testing_agent_executions__execution_id__cancel_post
      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
        - name: execution_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the run to cancel.
            title: Execution Id
          description: ID of the run to cancel.
          example: 68a1c9b7f0b3d9001a7e5d04
      responses:
        '200':
          description: The run is cancelled or had already ended.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancelTestRunResult'
        '401':
          description: Missing or invalid credentials.
        '403':
          description: >-
            You don't have editor access to this app, the app is blocked, or
            your API key is read-only or a workspace API key.
        '404':
          description: App or run not found.
        '409':
          description: Your workspace requires an unlocked SSO session.
        '429':
          description: Rate limit exceeded.
components:
  schemas:
    CancelTestRunResult:
      properties:
        success:
          type: boolean
          title: Success
          description: Always `true`.
          example: true
        already_terminal:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Already Terminal
          description: >-
            `true` when the run had already ended, so nothing changed. Left out
            when the run was cancelled.
          example: true
      type: object
      required:
        - success
      title: CancelTestRunResult
      description: The result of cancelling a run.
  securitySchemes:
    PersonalAccessTokenAuth:
      type: http
      scheme: bearer
      description: 'Personal access token, sent as `Authorization: Bearer <token>`.'

````