Для AI-агентов: markdown этой страницы — /docs-content/storage/objects/delete.md индекс документации — /llms.txt
Удалить объект
DELETE /v1/storage/objects/:key
Помечает объект как удалённый (мягкое удаление). Поле deletedAt объекта заполняется датой удаления. Физические байты остаются в хранилище до 30 дней, затем удаляются автоматически.
Сам DELETE не восстанавливает и не освобождает объект: GET, HEAD, старый анонимный URL PUBLIC-объекта и повторный DELETE возвращают 410 STORAGE_OBJECT_DELETED в течение периода хранения. Вернуть прежние байты через API невозможно. Новые байты в ту же строку может записать прямая загрузка (путь A), если объект имеет статус COMPLETED и не содержит multipart-сессии. Составная загрузка (путь C) также может переиспользовать подходящий личный COMPLETED-объект после этого явного DELETE. Оба пути сохраняют id, createdAt, key, физический адрес, owner tuple и visibility, а deletedAt очищают после успешной загрузки. Путь B остаётся отключён с 503; неподходящие удалённые состояния отвечают 409.
Параметры
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
key (path) |
string | да | Логический ключ объекта, URL-кодированный. Для ключей с / (например users/42/avatar.png) передавать как users%2F42%2Favatar.png. Список ключей: GET /v1/storage/objects |
Примеры
curl — личный ключ
curl -s -X DELETE "https://vibecode.bitrix24.tech/v1/storage/objects/docs-test%2Fverify.txt" \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth-приложение
curl -s -X DELETE "https://vibecode.bitrix24.tech/v1/storage/objects/docs-test%2Fverify.txt" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
JavaScript — личный ключ
const key = encodeURIComponent('docs-test/verify.txt')
const res = await fetch(`https://vibecode.bitrix24.tech/v1/storage/objects/${key}`, {
method: 'DELETE',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
},
})
const body = await res.json()
if (body.object?.deletedAt) {
console.log('Объект удалён:', body.object.deletedAt)
}
JavaScript — OAuth-приложение
const key = encodeURIComponent('docs-test/verify.txt')
const res = await fetch(`https://vibecode.bitrix24.tech/v1/storage/objects/${key}`, {
method: 'DELETE',
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const body = await res.json()
if (body.object?.deletedAt) {
console.log('Объект удалён:', body.object.deletedAt)
}
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
object.id |
string (CUID) | Внутренний идентификатор объекта. Список: GET /v1/storage/objects |
object.key |
string | Логический ключ. Список: GET /v1/storage/objects |
object.contentType |
string | MIME-тип содержимого |
object.sizeBytes |
string | Размер в байтах (строка из-за ограничений JSON на большие числа) |
object.sha256 |
string | null | SHA-256 хэш содержимого, если был вычислен при загрузке |
object.visibility |
string | PRIVATE или PUBLIC |
object.uploadStatus |
string | Статус загрузки (COMPLETED) |
object.createdAt |
string (ISO 8601) | Дата создания |
object.deletedAt |
string (ISO 8601) | Дата удаления — заполнено после успешного удаления |
object.contentUpdatedAt |
string (ISO 8601) | Когда содержимое последний раз стало актуальным. Мягкое удаление это поле не двигает |
Пример ответа
{
"object": {
"id": "cmv6mzshp1cpn4bqqik5gchff",
"key": "docs-test/verify.txt",
"contentType": "text/plain",
"sizeBytes": "40",
"sha256": "a7056068db07cebc7b4d646c1ae83f45b4bda578c57b76b582f289bfaa8f8a34",
"visibility": "PRIVATE",
"uploadStatus": "COMPLETED",
"createdAt": "2026-10-13T12:08:01.021Z",
"deletedAt": "2026-10-13T12:08:01.377Z",
"contentUpdatedAt": "2026-10-13T12:08:01.020Z"
}
}
Пример ответа при ошибке
410 — объект уже удалён (повторный вызов):
{
"success": false,
"error": {
"code": "STORAGE_OBJECT_DELETED",
"message": "Object docs-test/verify.txt was deleted"
}
}
Ошибки
| HTTP | Код | Описание |
|---|---|---|
| 400 | STORAGE_INVALID_KEY |
Ключ содержит недопустимые символы, начинается с / или ., содержит .. или превышает 1024 символа |
| 401 | MISSING_API_KEY |
Не передан заголовок X-Api-Key |
| 403 | STORAGE_SCOPE_REQUIRED |
API-ключ не имеет скоупа vibe:storage |
| 404 | STORAGE_OBJECT_NOT_FOUND |
Объект с таким ключом не найден или принадлежит другому владельцу |
| 409 | STORAGE_MULTIPART_IN_PROGRESS |
Объект находится в состоянии незавершённой составной загрузки — сначала вызовите /multipart/abort |
| 410 | STORAGE_OBJECT_DELETED |
Объект уже был удалён ранее |
| 503 | STORAGE_STS_UNAVAILABLE |
Временная недоступность сервиса выдачи учётных данных хранилища — повторите запрос |
| 503 | STORAGE_FEATURE_DISABLED |
Хранилище временно недоступно на платформе |
Полный список общих ошибок API — Ошибки.
Известные особенности
Ключи с
/в пути. Косая черта в ключе не является разделителем маршрута — передавайте её URL-кодированной. В JavaScript используйтеencodeURIComponent(key).Удалённый объект немедленно недоступен. Пока подходящая загрузка путём A или, для личного ключа после явного DELETE, путём C не запишет новые байты, GET и HEAD по ключу возвращают
410 STORAGE_OBJECT_DELETEDвесь 30-дневный период до физической уборки. Запрос списка объектов удалённые объекты не включает. Переиспользование строки — это замена новыми байтами, а не восстановление прежнего содержимого.Снимки исходного кода этим методом не удаляют. Объекты под префиксом
source/принадлежат серверам и приложениям, и логический ключ у разных владельцев совпадает —source/current.tar.gzесть у каждого. Запрос находит по ключу одну строку из доступных, поэтому удалится произвольная. Версии убирают операциями с исходниками — Хранилище исходного кода.Ключ приложения без сессии сотрудника видит только общий файл. Сотрудники приложения занимают логические имена независимо друг от друга, поэтому под одним именем может лежать несколько объектов. Запрос ключом приложения БЕЗ заголовка
Authorizationадресует общий файл приложения; если под этим именем есть только персональные файлы сотрудников, ответ —404 STORAGE_OBJECT_NOT_FOUND. Чтобы обратиться к файлу сотрудника, передайте его сессию вAuthorization: Bearerлибо используйте идентификатор объекта.