---
title: "Delete Configuration"
method: DELETE
path: "/v2/storage/components/{componentId}/configs/{configurationId}"
tags: ["Components and Configurations"]
---

# Delete Configuration

`DELETE /v2/storage/components/{componentId}/configs/{configurationId}`

## Request

- Base URL: `https://connection.keboola.com`
- URL: `https://connection.keboola.com/v2/storage/components/{componentId}/configs/{configurationId}`
- Auth: one of:
  - API key in header `X-StorageApi-Token`
  - API key in header `X-KBC-ManageApiToken`
  - HTTP bearer
- TypeScript: <https://skmtc.dev/keboola/apis/keboola-storage-api/docs/v2/storage/components/:componentId/configs/:configurationId/delete.ts> (a function with typed inputs; its response is checked against the schema)

Deletes a configuration in specified branch. When a configuration is deleted, it is only marked as deleted and remains still available in the system.
You can [list deleted](#tag/Components-and-Configurations) configurations.
Other operations with deleted configurations are restricted.

Calling this API call on a deleted configuration in a **development branch** will result in an error. Development branch configuration cannot be permanently removed.
Calling this API call on a deleted configuration in a **default branch** will purge the configuration. Prefer the explicit
[purge endpoint](#tag/Components-and-Configurations) for that — it states the destructive intent
unambiguously and never falls back to a soft delete.

The optional `If-Match` header carries the same optimistic-concurrency precondition as configuration update: the delete is
applied only if the configuration is still at the given version, otherwise nothing is written and the request fails with
`412 Precondition Failed`. This closes the double-delete race — a delete sent from a stale view (which still saw the live
configuration) cannot purge a configuration that moved to the trash in the meantime. Send the `version` field of a
configuration detail response as a strong entity tag, e.g. `If-Match: "5"`. `If-Match: *` only requires that the
configuration still exists; weak validators and tag lists are rejected with `400`.

The variant without `branch/{branchId}` in the URL is deprecated, use the branch endpoint and set `branch/default`.

## Path parameters

- `componentId` string, required
- `configurationId` string, required

## Headers

- `If-Match` string

## Response `204`

Configuration moved to trash, or purged when it already was in the trash.

## Other responses

- `400`: Configuration is in the trash of a development branch (`storage.components.cannotDeleteConfiguration`), or the `If-Match` value is unusable.
- `403`: Token is not allowed to manage the component, or lacks the `canPurgeTrash` permission required to purge.
- `404`: Component (`storage.component.notFound`) or configuration (`storage.configuration.notFound`) not found.
- `409`: Another request is mid-write on the configuration; retryable (`storage.components.configurations.versionConflict`).
- `412`: `If-Match` does not match the current version (`storage.components.configurations.versionMismatch`).

---

[API](https://skmtc.dev/keboola/apis/keboola-storage-api.md) - [All operations](https://skmtc.dev/keboola/apis/keboola-storage-api/llms.txt) - [OpenAPI document](https://skmtc.dev/keboola/apis/keboola-storage-api/revisions/34b5ceac0317?raw)
