Хранилище
Удалить файл
DELETE /api/v1/storage/ — удаление файла из хранилища
DELETE
/
api
/
v1
/
storage
/
{id}
Удалить файл
curl --request DELETE \
--url https://speshu.ai/api/v1/storage/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://speshu.ai/api/v1/storage/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://speshu.ai/api/v1/storage/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://speshu.ai/api/v1/storage/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://speshu.ai/api/v1/storage/{id}"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.delete("https://speshu.ai/api/v1/storage/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://speshu.ai/api/v1/storage/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"asset_id": "<string>"
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "invalid_request"
}
}{
"error": {
"message": "<string>",
"type": "invalid_request"
}
}{
"error": {
"message": "<string>",
"type": "invalid_request"
}
}Удаляет файл из хранилища. Объект удаляется, запись помечается удалённой, и файл сразу пропадает из списка.
Пример
curl -X DELETE https://speshu.ai/api/v1/storage/0199abc-... \
-H "Authorization: Bearer $SPESHU_API_KEY"
import requests
response = requests.delete(
"https://speshu.ai/api/v1/storage/0199abc-...",
headers={"Authorization": "Bearer sk-ваш-ключ"},
)
print(response.json()) # {"success": true, "asset_id": "0199abc-..."}
Ответ
200 OK:
{ "success": true, "asset_id": "0199abc-..." }
| Поле | Тип | Описание |
|---|---|---|
success | boolean | Всегда true при успехе |
asset_id | string | Идентификатор удалённого файла |
Что происходит после удаления
GET /api/v1/storage/{id}по этому идентификатору начинает отдавать404.- Файл исчезает из выдачи
GET /api/v1/storage. - Ссылка
urlперестаёт отдавать содержимое.
Отменить удаление нельзя. Отдельного маршрута восстановления у хранилища на
/api/v1 нет — если нужна страховка, держите копию файла у себя.Чужие файлы
Файл, принадлежащий другому пользователю, возвращает
404, а не 403. По коду ответа нельзя определить, что идентификатор существует, но принадлежит другому владельцу.Ошибки
| Код | Причина |
|---|---|
401 | Ключ не передан или недействителен |
404 | Файл не найден, уже удалён или принадлежит другому пользователю |
500 | Внутренняя ошибка |
Формат тела ошибки такой же, как у остальных эндпоинтов хранилища:
{"error": {"message": "...", "type": "invalid_request"}} — без полей param и code, которые есть у OpenAI-формата. Подробности — на странице Ошибки.Что дальше
Список файлов
Проверить, что файл исчез
Загрузить файл
Загрузить файл заново
Метаданные файла
Один файл по идентификатору
Ошибки
Полная таблица кодов
⌘I
Удалить файл
curl --request DELETE \
--url https://speshu.ai/api/v1/storage/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://speshu.ai/api/v1/storage/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://speshu.ai/api/v1/storage/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://speshu.ai/api/v1/storage/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://speshu.ai/api/v1/storage/{id}"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.delete("https://speshu.ai/api/v1/storage/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://speshu.ai/api/v1/storage/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"asset_id": "<string>"
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "invalid_request"
}
}{
"error": {
"message": "<string>",
"type": "invalid_request"
}
}{
"error": {
"message": "<string>",
"type": "invalid_request"
}
}