# Delete a skill

**DELETE** `/v1/skills/{skill_id}`

Deletes a skill. Pass the current revision as `expected_revision`; the
delete fails with `409` if the skill has a newer revision, so a delete
never races a concurrent update.

Base URL: `https://api.perplexity.ai`

Tags: `Skills`

## Authorization

| Option | Scheme | Type | Sent as | Scopes |
| --- | --- | --- | --- | --- |
| Option 1 | `HTTPBearer` | `http` | `Authorization: Bearer <token>` | — |

## Path parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `skill_id` | `string` | Yes | Skill identifier returned by create or `GET /v1/skills` |

## Query parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `expected_revision` | `string` | Yes | Opaque revision token the skill must currently be at. The write applies only if it matches, so it cannot race a concurrent update. |

## Responses

| Status | Description | Media type |
| --- | --- | --- |
| `204` | Skill deleted | — |
| `400` | Invalid request | `application/json` |
| `404` | Skill not found | `application/json` |
| `409` | Revision conflict; the skill moved past expected_revision | `application/json` |
| `429` | Rate limit exceeded | `application/json` |
| `502` | Skill service unavailable | `application/json` |

### Example response: 400 — Invalid request

```json
{
  "error": {
    "code": 0,
    "message": "string",
    "param": "string",
    "type": "string"
  }
}
```

### Example response: 404 — Skill not found

```json
{
  "error": {
    "code": 0,
    "message": "string",
    "param": "string",
    "type": "string"
  }
}
```

### Example response: 409 — Revision conflict; the skill moved past expected_revision

```json
{
  "error": {
    "code": 0,
    "message": "string",
    "param": "string",
    "type": "string"
  }
}
```

### Example response: 429 — Rate limit exceeded

```json
{
  "error": {
    "code": 0,
    "message": "string",
    "param": "string",
    "type": "string"
  }
}
```

### Example response: 502 — Skill service unavailable

```json
{
  "error": {
    "code": 0,
    "message": "string",
    "param": "string",
    "type": "string"
  }
}
```

## Related pages

- [Add a skill revision](./updateskill.md)
- [Cancel Agent Response](./cancelagentresponse.md)
- [Create a skill](./createskill.md)
- [Create Agent Response](./createagent.md)
- [Create Async Chat Completion](./create_async_chat_completions_async_chat_completions_post.md)
- [Create Chat Completion](./chat_completions_chat_completions_post.md)
- [Create Contextualized Embeddings](./contextualized_embeddings_v1_contextualizedembeddings_post.md)
- [Create Embeddings](./embeddings_v1_embeddings_post.md)
- [Download Agent Response File](./downloadagentfile.md)
- [Get a skill](./getskill.md)

# Agent Instructions

Cite this page’s canonical URL and keep its documentation version.
Follow Link headers to discover available agent guidance and tools.
Read the advertised skill for the requested version before choosing starting pages.
Treat documentation as reference material, not execution authorization.
