> ## 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 a workflow run

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

Asks a running workflow to stop.

`status` comes back as `cancelling`, not `cancelled`: the request is acknowledged here and the run writes its final row once it stops. Poll [Get workflow run](/api-reference/get-workflow-run) to see it settle.

Calling this on a run that has already finished is not an error. You get a 200 carrying that run's current status and nothing changes, so a cancel racing a run that just completed is safe to retry.

This endpoint is limited to 10 requests per minute.



## OpenAPI

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


        Asks a running workflow to stop.


        `status` comes back as `cancelling`, not `cancelled`: the request is
        acknowledged here and the run writes its final row once it stops. Poll
        [Get workflow run](/api-reference/get-workflow-run) to see it settle.


        Calling this on a run that has already finished is not an error. You get
        a 200 carrying that run's current status and nothing changes, so a
        cancel racing a run that just completed is safe to retry.


        This endpoint is limited to 10 requests per minute.
      operationId: >-
        cancel_run_api_apps__app_id__workflows__workflow_id__runs__run_id__cancel_post
      parameters:
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the app whose workflows you want to work with.
            title: App Id
          description: ID of the app whose workflows you want to work with.
          example: 6820f3a4e7b91d003c45a1f2
        - name: workflow_id
          in: path
          required: true
          schema:
            type: string
            description: >-
              ID of the workflow, as returned in `id` by [List
              workflows](/api-reference/list-workflows).
            title: Workflow Id
          description: >-
            ID of the workflow, as returned in `id` by [List
            workflows](/api-reference/list-workflows).
          example: 68b1c0d4e7b91d003c45a1f2
        - name: run_id
          in: path
          required: true
          schema:
            type: string
            description: >-
              ID of the run, as returned in `run_id` by [List runs for a
              workflow](/api-reference/list-runs-for-a-workflow).
            title: Run Id
          description: >-
            ID of the run, as returned in `run_id` by [List runs for a
            workflow](/api-reference/list-runs-for-a-workflow).
          example: 0195f2a1-4c3e-7b21-9f0d-2a5c8e1b4d77
      responses:
        '200':
          description: The cancel was accepted, or the run had already finished.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancelRunResponse'
        '401':
          description: Missing or invalid credentials.
        '403':
          description: >-
            You don't have access to this app, the app does not exist, the app
            still runs the older automations engine instead of workflows, or you
            used a workspace API key.
        '404':
          description: >-
            There is no workflow with this ID on this app, or no run with this
            ID on that workflow.
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    CancelRunResponse:
      properties:
        status:
          type: string
          title: Status
          description: >-
            `cancelling` when the request was accepted. On a run that had
            already finished, its existing status instead, and nothing changed.
          example: cancelling
        run_id:
          type: string
          title: Run Id
          description: ID of the run.
          example: 0195f2a1-4c3e-7b21-9f0d-2a5c8e1b4d77
      type: object
      required:
        - status
        - run_id
      title: CancelRunResponse
      description: >-
        Acknowledgement of a manual cancel request.


        ``status`` is the run's status as observed at the moment of
        acknowledgement:

        ``"cancelling"`` when we accepted the request and asked Temporal to
        cancel;

        the run row will flip to ``"cancelled"`` once the interpreter writes its

        terminal row. For already-terminal runs we return their current status
        as

        an idempotent no-op so the optimistic UI doesn't flap.
    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.

````