Keboola Deleted Projects API

Inspect and purge soft-deleted projects.

Operations 4

GET /manage/deleted-projects/{projectId} Deleted project detail #
DELETE /manage/deleted-projects/{projectId} Cancel project deletion #
GET /manage/deleted-projects List deleted projects #
POST /manage/deleted-projects/{projectId}/purge Purge deleted project #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/keboola-deleted-projects-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

keboola-deleted-projects-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Keboola Connection Management Deleted Projects API
  description: 'The Keboola Connection Management API covers all tasks required for managing

    projects, plus super-admin features for controlling and monitoring Keboola Connection.


    ## Projects management

    * Create, modify and delete maintainers, organizations and projects

    * Move projects between organizations

    * Define project limits

    * Provision storage backends

    * Access project management activity log


    ## Projects monitoring

    * Monitoring of projects across organizations and maintainers


    ## Super user control and monitoring

    * UI release and deployment

    * Components management

    * Final project delete

    * Workers start/shutdown, etc.


    ## Authentication

    The API authenticates with a personal access token sent in the `X-KBC-ManageApiToken`

    header. Tokens can be created in

    [Account Settings](https://connection.keboola.com/admin/account/change-password)

    in Keboola Connection. A token is tied to an administrator and inherits that

    administrator''s permissions; when the administrator is disabled or deleted, all

    their tokens become invalid.


    ```

    curl -H "X-KBC-ManageApiToken: USER_TOKEN" https://connection.keboola.com/manage/tokens/verify

    ```


    ## Token types

    | Type  | Tied to a user | Token string visible only on create | Description |

    | ----- | -------------- | ----------------------------------- | ----------- |

    | user  | Yes            | Yes                                 | Full access to maintainers, organizations and projects the user can see. |

    | super | No             | Yes                                 | KBC management. Scopes such as `super_ui_deploy`, `super_monitoring` etc. can be limited per-token. |


    Legacy Apiary reference: see the

    [Manage API blueprint](https://github.com/keboola/connection/blob/master/Package/ManageApiPhpClient/apiary.apib)

    for the historical document this OpenAPI spec is migrating from.

    '
  version: '1.0'
servers:
- url: https://connection.keboola.com
  description: AWS US East
- url: https://connection.eu-central-1.keboola.com
  description: AWS EU Central
- url: https://connection.north-europe.azure.keboola.com
  description: Azure North Europe
- url: https://connection.east-us-2.azure.keboola-testing.com
  description: Azure Testing
security:
- StorageKey: []
- ManageKey: []
- BearerAuth: []
tags:
- name: Deleted Projects
  description: Inspect and purge soft-deleted projects.
paths:
  /manage/deleted-projects/{projectId}:
    get:
      tags:
      - Deleted Projects
      summary: Deleted project detail
      description: 'Returns detailed information about a project scheduled for deletion.


        This endpoint can also be accessed using application tokens with scope `deleted-projects:read` or user token with feature `can-manage-deleted-projects`.'
      operationId: get_/manage/deleted-projects/{projectId}::DeletedProjectDetailAction
      parameters:
      - name: projectId
        in: path
        description: Identifier of the deleted project.
        required: true
        schema:
          type: integer
          pattern: '[1-9][0-9]*'
        example: 101
      responses:
        '200':
          description: Deleted project detail response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeletedProjectResponse'
              example:
                id: 101
                name: test project
                type: production
                region: eu-west-1
                created: 2017-02-15T14:25:15+0100
                expires: null
                features: []
                dataSizeBytes: 49152
                rowsCount: 200
                hasMysql: false
                hasSynapse: false
                hasExasol: false
                hasTeradata: false
                hasSnowflake: true
                defaultBackend: snowflake
                hasTryModeOn: '0'
                limits: {}
                metrics: {}
                isDisabled: false
                billedMonthlyPrice: null
                dataRetentionTimeInDays: 1
                isPurged: false
                isDeleted: true
                deletedTime: 2018-02-11T14:25:15+0100
                purgedTime: null
                isBYODB: false
        '400':
          description: Returned when the project is not deleted or was permanently removed.
        '401':
          description: Returned when the Manage token is missing or invalid.
        '403':
          description: Returned when the token does not have permission to view the deleted project.
        '404':
          description: Returned when the project does not exist.
    delete:
      tags:
      - Deleted Projects
      summary: Cancel project deletion
      description: 'Cancelling project deletion is allowed only for a super admin or user with feature `can-manage-deleted-projects`.

        If the project has set expiration, the expiration is reset on the project renewal.

        You can also specify new expiration by `expirationDays` parameter.'
      operationId: delete_/manage/deleted-projects/{projectId}::ProjectDeletionCancelAction
      parameters:
      - name: projectId
        in: path
        description: Identifier of the deleted project.
        required: true
        schema:
          type: integer
          pattern: '[1-9][0-9]*'
        example: 101
      - name: expirationDays
        in: query
        description: Project expiration in days.
        required: false
        schema:
          type: integer
        example: 30
      responses:
        '204':
          description: Deletion canceled successfully.
        '400':
          description: Returned when the project is not deleted or was permanently removed.
        '401':
          description: Returned when the Manage token is missing or invalid.
        '403':
          description: Returned when the token does not have permission to cancel project deletion.
        '404':
          description: Returned when the project does not exist.
  /manage/deleted-projects:
    get:
      tags:
      - Deleted Projects
      summary: List deleted projects
      description: 'Listing deleted projects is allowed only for a super admin or user with feature `can-manage-deleted-projects`.


        #### Projects filtering


        Projects can be filtered by various filters:


        * *organizationId* - organization ID

        * *name* - name of the project


        #### Projects pagination


        * *limit* - number of returned projects; default value: 100

        * *offset* - pagination offset'
      operationId: get_/manage/deleted-projects::DeletedProjectsListAction
      parameters:
      - name: limit
        in: query
        description: 'Number of returned projects. Default value: 100.'
        required: false
        schema:
          type: integer
        example: 100
      - name: offset
        in: query
        description: Pagination offset.
        required: false
        schema:
          type: integer
        example: 0
      - name: organizationId
        in: query
        description: Filter projects by organization identifier.
        required: false
        schema:
          type: integer
        example: 1
      - name: name
        in: query
        description: Filter projects by name.
        required: false
        schema:
          type: string
        example: test project
      responses:
        '200':
          description: Deleted projects list response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeletedProjectsListResponse'
              example:
              - id: 101
                name: test project
                type: production
                region: eu-west-1
                created: 2017-02-15T14:25:15+0100
                expires: null
                features: []
                dataSizeBytes: 49152
                rowsCount: 200
                hasMysql: false
                hasSnowflake: true
                hasSynapse: false
                hasTeradata: false
                hasExasol: false
                defaultBackend: snowflake
                hasTryModeOn: '0'
                limits: {}
                metrics: {}
                isDisabled: false
                billedMonthlyPrice: null
                dataRetentionTimeInDays: 7
                isBYODB: false
                isPurged: false
                isDeleted: true
                deletedTime: 2018-02-11T14:25:15+0100
                purgedTime: null
                organization:
                  id: 1
                  name: Keboola Tests
                  created: ''
                  allowAutoJoin: true
              - id: 104
                name: another test project
                type: production
                region: eu-west-1
                created: 2017-02-15T14:25:15+0100
                expires: null
                features: []
                dataSizeBytes: 49152
                rowsCount: 200
                hasMysql: false
                hasSnowflake: true
                hasSynapse: false
                hasTeradata: false
                hasExasol: false
                defaultBackend: snowflake
                hasTryModeOn: '0'
                limits: {}
                metrics: {}
                isDisabled: false
                billedMonthlyPrice: null
                dataRetentionTimeInDays: 7
                isBYODB: false
                isPurged: false
                isDeleted: true
                deletedTime: 2018-02-11T14:25:15+0100
                purgedTime: null
                organization:
                  id: 1
                  name: Keboola Tests
                  created: ''
                  allowAutoJoin: true
        '400':
          description: Returned when the supplied organization is not found.
        '401':
          description: Returned when the Manage token is missing or invalid.
        '403':
          description: Returned when the token does not have permission to list deleted projects.
  /manage/deleted-projects/{projectId}/purge:
    post:
      tags:
      - Deleted Projects
      summary: Purge deleted project
      description: Enqueues the command that fully deletes a project and returns its execution ID for monitoring.
      operationId: post_/manage/deleted-projects/{projectId}/purge::ProjectPurgeAction
      parameters:
      - name: projectId
        in: path
        description: Identifier of the deleted project to purge.
        required: true
        schema:
          type: integer
          pattern: '[1-9][0-9]*'
        example: 101
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectPurgeRequest'
            example:
              ignoreBackendErrors: false
      responses:
        '200':
          description: Identifier of the enqueued purge command.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnqueueCommandResponse'
              example:
                commandExecutionId: 123-abcd
        '400':
          description: Returned when the project is not deleted.
        '401':
          description: Returned when the Manage token is missing or invalid.
        '403':
          description: Returned when the token does not have permission to purge deleted projects.
        '404':
          description: Returned when the project does not exist.
components:
  schemas:
    ProjectPurgeRequest:
      properties:
        ignoreBackendErrors:
          description: Ignore errors when purging data from backend storage.
          type: boolean
          default: false
      type: object
    EnqueueCommandResponse:
      required:
      - commandExecutionId
      properties:
        commandExecutionId:
          description: Identifier of the enqueued command execution; this ID is appended to all logs produced by the command.
          type: string
          example: 123-abcd
      type: object
    DeletedProjectsListResponse:
      type: array
      items:
        $ref: '#/components/schemas/DeletedProjectResponse'
    DeletedProjectResponse:
      required:
      - id
      - name
      - type
      - region
      - features
      - dataSizeBytes
      - rowsCount
      - hasMysql
      - hasSynapse
      - hasSnowflake
      - hasExasol
      - hasTeradata
      - hasBigquery
      - defaultBackend
      - hasTryModeOn
      - limits
      - metrics
      - isDisabled
      - dataRetentionTimeInDays
      - isBYODB
      - assignedBackends
      - isPurged
      - isDeleted
      - deletedTime
      properties:
        id:
          description: Project identifier.
          type: integer
        name:
          description: Project name.
          type: string
        type:
          description: Project type.
          type: string
        region:
          description: Project region.
          type: string
        created:
          description: Project creation time.
          type:
          - string
          - 'null'
          format: date-time
        expires:
          description: Project expiration time.
          type:
          - string
          - 'null'
          format: date-time
        features:
          description: Enabled features.
          type: array
          items:
            type: string
        dataSizeBytes:
          description: Total data size.
          type: integer
        rowsCount:
          description: Total rows count.
          type: integer
        hasMysql:
          type: boolean
        hasSynapse:
          type: boolean
        hasSnowflake:
          type: boolean
        hasExasol:
          type: boolean
        hasTeradata:
          type: boolean
        hasBigquery:
          type: boolean
        defaultBackend:
          type: string
        hasTryModeOn:
          type: string
        limits:
          type: object
          additionalProperties:
            type: mixed
        metrics:
          type: object
          additionalProperties:
            type: mixed
        isDisabled:
          type: boolean
        billedMonthlyPrice:
          type:
          - integer
          - 'null'
        dataRetentionTimeInDays:
          type: integer
        isBYODB:
          type: boolean
        assignedBackends:
          type: array
          items:
            type: string
        fileStorageProvider:
          type:
          - string
          - 'null'
        payAsYouGo:
          properties:
            purchasedCredits:
              type: number
              format: float
          type:
          - object
          - 'null'
        disabled:
          properties:
            reason:
              type: string
            estimatedEndTime:
              type:
              - string
              - 'null'
              format: date-time
          type:
          - object
          - 'null'
        isPurged:
          type: boolean
        isDeleted:
          type: boolean
        deletedTime:
          type: string
          format: date-time
        purgedTime:
          type:
          - string
          - 'null'
          format: date-time
      type: object
  securitySchemes:
    StorageKey:
      type: apiKey
      name: X-StorageApi-Token
      in: header
    ManageKey:
      type: apiKey
      name: X-KBC-ManageApiToken
      in: header
    BearerAuth:
      type: http
      bearerFormat: Access Token (kbc_at_...)
      scheme: bearer