---
title: "Batch delete assets permanently"
method: POST
path: "/api/v1/assets/delete"
tags: ["Asset Management"]
---

# Batch delete assets permanently

`POST /api/v1/assets/delete`

## Request

- Base URL: `https://api.imagestep.dev`
- URL: `https://api.imagestep.dev/api/v1/assets/delete`
- Auth: API key in header `Authorization`

Deletes multiple assets and queues their stored objects for removal. Final — there is no
trash and no restore. IDs that are not yours, or no longer exist, are skipped without an error:
`deleted` lists what was actually deleted. A published asset's `publicUrl` stops answering within
about two minutes.

USE THIS WHEN:
- Deleting specific assets by IDs

DO NOT USE WHEN:
- Letting assets lapse on their own → do nothing; each is deleted at its expiresAt

## Headers

- `Idempotency-Key` string

## Request body

- AssetBatchDeleteRequest: Batch delete request with the asset IDs to delete
  - `ids` string[], required: Asset IDs to delete permanently, at most 10000

## Response `200`

What was deleted

## Other responses

- `400`: `invalid_param` — `ids` is missing, empty, or longer than 10000
- `409`: Conflict — `error.code` is `idempotency_key_reuse` (the key already means a different request) or `request_in_progress` (the first request under this key has not settled yet; retryable).
- `429`: Rate limited — `error.code` is `rate_limited` and `retryable` is true. `Retry-After` says how many seconds to wait.

---

[API](https://skmtc.dev/imagestep/apis/imagestep-api.md) · [All operations](https://skmtc.dev/imagestep/apis/imagestep-api/llms.txt) · [OpenAPI document](https://skmtc.dev/imagestep/apis/imagestep-api/revisions/5e8e922a3085?raw)
