---
canonical_url: "https://docs.composio.dev/reference/api-reference/toolkits/deleteCustomToolkitsBySlug"
markdown_url: "https://docs.composio.dev/reference/api-reference/toolkits/deleteCustomToolkitsBySlug.md"
product: "platform"
version: "3.1"
last_updated: null
---

# Delete a custom toolkit

**Documentation:** /reference/api-reference/toolkits/deleteCustomToolkitsBySlug

> **API version:** This page documents Composio REST API v3.1, the current version, at `https://backend.composio.dev/api/v3.1`. `https://backend.composio.dev/api/v3` is the previous version and remains supported.

Experimental: custom toolkits are in pilot and this contract may change. Deletes a custom toolkit owned by the project, along with its tools, auth configs, and connected accounts, and revokes the upstream credentials of those connected accounts. Pass `?revoke_on_delete=false` to keep the credentials. Composio-managed toolkits cannot be deleted and return 403.

---

## DELETE `/api/v3.1/custom/toolkits/{slug}`

**Endpoint:** `https://backend.composio.dev/api/v3.1/custom/toolkits/{slug}`

**Summary:** Delete a custom toolkit

Experimental: custom toolkits are in pilot and this contract may change. Deletes a custom toolkit owned by the project, along with its tools, auth configs, and connected accounts, and revokes the upstream credentials of those connected accounts. Pass `?revoke_on_delete=false` to keep the credentials. Composio-managed toolkits cannot be deleted and return 403.

### Authentication

**ApiKeyAuth** - API Key in `header` header `x-api-key` OR **UserApiKeyAuth** - API Key in `header` header `x-user-api-key`

### Path Parameters

- `slug` (string) *(required)*: Custom toolkit slug to delete

### Query Parameters

- `revoke_on_delete` (boolean,null): When `true` (the default), the delete starts background jobs, one per auth config, that revoke the upstream credentials of the toolkit's connected accounts, and the response lists them in `revoke_job_ids`. Pass `false` to keep the credentials. Revocation is irreversible — recovering a deleted entity does not restore working credentials.

### Responses

#### 200 - Successfully deleted toolkit

**Response Schema:**

- `slug` (string) *(required)*: Slug of the deleted toolkit
- `deleted` (enum: "true") *(required)*: Whether the toolkit was deleted
- `revoke_job_ids` (array<string>) *(required)*: Background revoke jobs started for this delete, one per auth config. Empty when `revoke_on_delete=false`.
- `auth_configs_deleted` (number) *(required)*: Number of auth configs deleted
- `connected_accounts_deleted` (number) *(required)*: Number of connected accounts deleted

**Example Response:**

```json
{
  "slug": "string",
  "deleted": true,
  "revoke_job_ids": [
    "string"
  ],
  "auth_configs_deleted": 1,
  "connected_accounts_deleted": 1
}
```

#### 400 - Bad request - Invalid parameters

**Response Schema:**

- `error` (object) *(required)*
  - `message` (string) *(required)*
  - `code` (number) *(required)*
  - `slug` (string) *(required)*
  - `status` (number) *(required)*
  - `request_id` (string)
  - `suggested_fix` (string)
  - `errors` (array<string>)

#### 401 - Unauthorized - Invalid or missing credentials

**Response Schema:**

- `error` (object) *(required)*
  - `message` (string) *(required)*
  - `code` (number) *(required)*
  - `slug` (string) *(required)*
  - `status` (number) *(required)*
  - `request_id` (string)
  - `suggested_fix` (string)
  - `errors` (array<string>)

#### 403 - Forbidden - The caller cannot write custom toolkits, or the toolkit is managed by Composio and cannot be deleted

**Response Schema:**

- `error` (object) *(required)*
  - `message` (string) *(required)*
  - `code` (number) *(required)*
  - `slug` (string) *(required)*
  - `status` (number) *(required)*
  - `request_id` (string)
  - `suggested_fix` (string)
  - `errors` (array<string>)

#### 404 - Not found - Toolkit not found

**Response Schema:**

- `error` (object) *(required)*
  - `message` (string) *(required)*
  - `code` (number) *(required)*
  - `slug` (string) *(required)*
  - `status` (number) *(required)*
  - `request_id` (string)
  - `suggested_fix` (string)
  - `errors` (array<string>)

#### 408 - Request timeout

**Response Schema:**

- `error` (object) *(required)*
  - `message` (string) *(required)*
  - `code` (number) *(required)*
  - `slug` (string) *(required)*
  - `status` (number) *(required)*
  - `request_id` (string)
  - `suggested_fix` (string)
  - `errors` (array<string>)

#### 409 - Conflict - Toolkit registry rejected the delete

**Response Schema:**

- `error` (object) *(required)*
  - `message` (string) *(required)*
  - `code` (number) *(required)*
  - `slug` (string) *(required)*
  - `status` (number) *(required)*
  - `request_id` (string)
  - `suggested_fix` (string)
  - `errors` (array<string>)

#### 500 - Internal server error - Failed to delete toolkit

**Response Schema:**

- `error` (object) *(required)*
  - `message` (string) *(required)*
  - `code` (number) *(required)*
  - `slug` (string) *(required)*
  - `status` (number) *(required)*
  - `request_id` (string)
  - `suggested_fix` (string)
  - `errors` (array<string>)

### Example cURL Request

```bash
curl -X DELETE "https://backend.composio.dev/api/v3.1/custom/toolkits/string" \
  -H "x-api-key: YOUR_API_KEY"
```

---

## REST API version

The current REST API version is **v3.1**, served at `https://backend.composio.dev/api/v3.1`. Prefer it for new code and new examples.

`https://backend.composio.dev/api/v3` is the previous version. It is frozen with pinned tool-version defaults and remains supported — existing v3 integrations keep working and do not need to migrate.