> ## 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 ownership transfer

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

Cancels the app's pending ownership transfer, so the recipient can no longer accept it.

The link in the invitation email stops working right away, and the app stays with its current owner. Check which transfer is pending with [Get pending ownership transfer](/api-reference/get-pending-ownership-transfer). An expired invitation can still be cancelled. Once the recipient has started accepting, the transfer can't be cancelled for 15 minutes, while their acceptance is being applied.

You need to own the app or be an owner or admin of its workspace. A workspace admin who doesn't own the app also needs an Enterprise workspace or approved partner status. For a transfer to someone outside the workspace, the owner has to be a workspace owner or admin too, with the same Enterprise or partner requirement.

This is limited to 30 requests a minute per caller. Some workspaces have a different limit.

<Note>This endpoint accepts a personal API key. A read-only key is refused, and workspace API keys are not accepted.</Note>



## OpenAPI

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


        Cancels the app's pending ownership transfer, so the recipient can no
        longer accept it.


        The link in the invitation email stops working right away, and the app
        stays with its current owner. Check which transfer is pending with [Get
        pending ownership
        transfer](/api-reference/get-pending-ownership-transfer). An expired
        invitation can still be cancelled. Once the recipient has started
        accepting, the transfer can't be cancelled for 15 minutes, while their
        acceptance is being applied.


        You need to own the app or be an owner or admin of its workspace. A
        workspace admin who doesn't own the app also needs an Enterprise
        workspace or approved partner status. For a transfer to someone outside
        the workspace, the owner has to be a workspace owner or admin too, with
        the same Enterprise or partner requirement.


        This is limited to 30 requests a minute per caller. Some workspaces have
        a different limit.


        <Note>This endpoint accepts a personal API key. A read-only key is
        refused, and workspace API keys are not accepted.</Note>
      operationId: cancel_transfer_api_apps__app_id__ownership_transfer_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
      responses:
        '200':
          description: The cancelled transfer.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancelledOwnershipTransfer'
        '401':
          description: Missing or invalid credentials.
        '403':
          description: >-
            You can't manage ownership transfers for this app, your API key is
            read-only, or you used a workspace API key.
        '404':
          description: >-
            The app doesn't exist, it's outside the workspace or apps your API
            key is scoped to, it has no pending transfer, or the recipient
            started accepting it less than 15 minutes ago.
        '409':
          description: >-
            The recipient started accepting the transfer while it was being
            cancelled.
        '429':
          description: Rate limit reached. Retry later.
components:
  schemas:
    CancelledOwnershipTransfer:
      properties:
        id:
          type: string
          title: Id
          description: ID of the cancelled ownership transfer.
          example: 68d4b1e9c2a7f3001e5b8c40
        status:
          type: string
          title: Status
          description: Status of the transfer, which is always `cancelled`.
          example: cancelled
      type: object
      required:
        - id
        - status
      title: CancelledOwnershipTransfer
      description: An ownership transfer that was just cancelled.
  securitySchemes:
    PersonalAccessTokenAuth:
      type: http
      scheme: bearer
      description: 'Personal access token, sent as `Authorization: Bearer <token>`.'

````