---
title: "Delete one or more files from project storage"
method: DELETE
path: "/api/storage/{project_id}/remove"
tags: ["Storage"]
---

# Delete one or more files from project storage

`DELETE /api/storage/{project_id}/remove`

## Request

- Base URL: `https://core.blink.new`
- URL: `https://core.blink.new/api/storage/{project_id}/remove`
- Auth: HTTP bearer

Deletes one or more files from the project's storage bucket. Non-existent
files are silently skipped (Supabase-compatible behavior). The response
contains `FileObject` entries only for files that were successfully deleted.

Compatible with the Supabase Storage `remove` API.

**Who may delete what**: the project's secret key (or service token) may delete
any file. A signed-in end user may delete only files they uploaded themselves.
If any existing path is not the caller's, the request is refused with 403
`STORAGE_NOT_OWNER` and nothing is deleted.

## Path parameters

- `project_id` string, required

## Request body

- object
  - `paths` string[], required: Array of relative file paths to delete

## Response `200`

Deletion completed. Returns metadata for each successfully deleted file.

- StorageResponse
  - `data` union
    - FileObject
      - `id` string, uuid
      - `name` string
      - `bucket_id` string
      - `owner` string, nullable
      - `owner_id` string, nullable
      - `version` string, nullable
      - `created_at` string, date-time
      - `updated_at` string, date-time
      - `last_accessed_at` string, date-time
      - `metadata` object
        - `size` integer
        - `mimetype` string
        - `cacheControl` string
      - `user_metadata` object
    - FileObject[]
      - `id` string, uuid
      - `name` string
      - `bucket_id` string
      - `owner` string, nullable
      - `owner_id` string, nullable
      - `version` string, nullable
      - `created_at` string, date-time
      - `updated_at` string, date-time
      - `last_accessed_at` string, date-time
      - `metadata` object
        - `size` integer
        - `mimetype` string
        - `cacheControl` string
      - `user_metadata` object
    - object
  - `error` object, nullable
    - `message` string
    - `statusCode` string

## Other responses

- `400`: Missing or invalid paths array
- `401`: Authentication required or invalid API key
- `403`: A path exists but the caller did not upload it (code STORAGE_NOT_OWNER); nothing was deleted
- `500`: Storage error

---

[API](https://skmtc.dev/blink/apis/blink-apis.md) - [All operations](https://skmtc.dev/blink/apis/blink-apis/llms.txt) - [OpenAPI document](https://skmtc.dev/blink/apis/blink-apis/revisions/4c59c706078e?raw)
