Start here
Move an item to the Trash
DELETE
/v1/studio/projects/{project}/items/{item}on https://api.auray.ai/v1Move an item to the Trash, and answer it as it now is.
Move an item to the Trash, and answer it as it now is. Its files stay until the Trash is emptied or it is deleted from there. Takes a key holding studio:write — Account offers it unticked — or the desktop's own session key. Spends nothing.
#Authentication
Authorization: Bearer auray_sk_… — studio:write — Account offers it unticked; the desktop's session key holds it.
#Request
#Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
project | string | yes | |
item | string | yes |
#Example request
curl -X DELETE https://api.auray.ai/v1/studio/projects/3f0c8a52-6a1d-4e8b-9c2d-7e5f4a3b2c1d/items/0a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d \
-H "Authorization: Bearer $AURAY_API_KEY"const res = await fetch("https://api.auray.ai/v1/studio/projects/3f0c8a52-6a1d-4e8b-9c2d-7e5f4a3b2c1d/items/0a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d", {
method: "DELETE",
headers: { Authorization: `Bearer ${process.env.AURAY_API_KEY}` },
});
console.log(await res.json());import os, requests
r = requests.delete(
"https://api.auray.ai/v1/studio/projects/3f0c8a52-6a1d-4e8b-9c2d-7e5f4a3b2c1d/items/0a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d",
headers={"Authorization": f"Bearer {os.environ['AURAY_API_KEY']}"},
)
r.raise_for_status()
print(r.json())package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest("DELETE", "https://api.auray.ai/v1/studio/projects/3f0c8a52-6a1d-4e8b-9c2d-7e5f4a3b2c1d/items/0a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d", nil)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("AURAY_API_KEY"))
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
out, _ := io.ReadAll(res.Body)
fmt.Println(res.Status, string(out))
}<?php
$ch = curl_init("https://api.auray.ai/v1/studio/projects/3f0c8a52-6a1d-4e8b-9c2d-7e5f4a3b2c1d/items/0a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("AURAY_API_KEY"),
],
]);
$response = curl_exec($ch);
echo curl_getinfo($ch, CURLINFO_HTTP_CODE), " ", $response, PHP_EOL;require "net/http"
uri = URI("https://api.auray.ai/v1/studio/projects/3f0c8a52-6a1d-4e8b-9c2d-7e5f4a3b2c1d/items/0a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d")
req = Net::HTTP::Delete.new(uri)
req["Authorization"] = "Bearer #{ENV.fetch("AURAY_API_KEY")}"
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
puts res.code, res.bodyimport java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.auray.ai/v1/studio/projects/3f0c8a52-6a1d-4e8b-9c2d-7e5f4a3b2c1d/items/0a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d"))
.header("Authorization", "Bearer " + System.getenv("AURAY_API_KEY"))
.DELETE()
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode() + " " + response.body());
}
}using System.Net.Http.Headers;
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("AURAY_API_KEY"));
using var request = new HttpRequestMessage(HttpMethod.Delete, "https://api.auray.ai/v1/studio/projects/3f0c8a52-6a1d-4e8b-9c2d-7e5f4a3b2c1d/items/0a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d");
using var response = await client.SendAsync(request);
Console.WriteLine($"{(int)response.StatusCode} {await response.Content.ReadAsStringAsync()}");#Responses
#200 OK
OK.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
object | string | yes | — | One of "item". |
id | string | yes | — | |
project_id | string | yes | — | |
folder_id | string | yes | — | The member's folder it is filed in; null at the project's top level. May be null. |
kind | string | yes | — | One of "image", "video", "audio", "model3d". |
name | string | yes | — | 0 to 120 characters. May be null. |
source | object | yes | — | |
source.product | string | yes | — | The product whose job made it, upload for a file from a disk, or film for a film exported from the project's own clips. One of "photo", "music", "video", "threed", "external", "upload", "film". |
source.job_id | string | yes | — | The job's id as GET /jobs/{id} reads it; null for an upload and for a film. May be null. |
source.asset | integer or string | yes | — | Which file of the job: a position, or a 3D artefact's name. May be null. |
source.from_upload | boolean | no | — | Whether it was made from a file not made here: true for an upload and for a result whose job was given one, however many jobs back; false for a result made here from files made here alone; null where it is not known. Only a picture, a clip or a recording that is false can be made to speak or used as a voice without your consent. May be null. |
files | object[] | yes | — | |
files[].role | string | yes | — | original as made or uploaded; thumbnail a smaller picture for a card; poster a frame of a clip or a view of a mesh; captions a film's subtitles, the WebVTT a captioned export files beside it. One of "original", "thumbnail", "poster", "captions". |
files[].url | string | yes | — | A URL. |
files[].expires_at | string | yes | — | |
files[].content_type | string | yes | — | |
files[].bytes | integer | yes | — | May be null. |
files[].width | integer | yes | — | May be null. |
files[].height | integer | yes | — | May be null. |
files[].duration_ms | integer | yes | — | May be null. |
files[].from_upload | boolean | no | — | On an element's file alone: whether it was made from a file not made here — false for a picture made here from files made here alone, true for one made from an upload, null where it is not known. Only a picture that is false can be made to speak. An item says its own as source.from_upload. May be null. |
files[].uploaded | boolean | no | — | On an element's file alone: true for your own upload itself. |
prompt | string | yes | — | May be null. |
params | object | yes | — | The settings it was made with, cleaned of links and keys. May be null. |
model | object | yes | — | The model an item was made with: its address and id as GET /models lists it, and the name a person reads. All three are null for the person's own upload; a frame the AI Director cut from a model's clip is named by that clip's model. |
model.address | string | yes | — | May be null. |
model.id | string | yes | — | May be null. |
model.label | string | yes | — | May be null. |
director | object or null | yes | — | |
seed | integer | yes | — | May be null. |
ai_generated | boolean | yes | — | A model's output says so wherever it is shown, with attribution, its licence line. |
attribution | string | yes | — | May be null. |
review | string | yes | — | One of "none", "in_progress", "needs_review", "approved", "rejected". |
favorite | boolean | yes | — | Your own favourite. |
last_viewed_at | string | yes | — | When you last opened it (POST …/view); null for never. May be null. |
trim | object or null | yes | — | |
created_at | string | yes | — | |
updated_at | string | yes | — | |
trashed_at | string | yes | — | May be null. |
film | object | yes | — | For a film exported from the project's own clips (source.product film): its cut, its place among the cut's exports and every model that made it. Null for every other item. May be null. |
film.film_id | string | yes | — | The cut it is an export of. |
film.export | integer | yes | — | Its place among the cut's exports in the project, 1 the oldest. 1 to …. |
film.exports | integer | yes | — | How many exports of the cut the project holds now, the Trash included. 1 to …. |
film.latest | boolean | yes | — | True for the newest export of the cut outside the Trash. |
film.made_with | object[] | yes | — | Every model its clips and sounds were made with, each by its name. |
film.made_with[].address | string | yes | — | May be null. |
film.made_with[].id | string | yes | — | May be null. |
film.made_with[].label | string | yes | — | May be null. |
request_id | string | no | — | Mirrored in the X-Request-Id header. |
Headers:
| Header | Description |
|---|---|
RateLimit-Limit | Burst capacity. |
RateLimit-Remaining | |
RateLimit-Reset | Seconds until refill. |
X-RateLimit-Limit | |
X-RateLimit-Remaining | |
X-RateLimit-Reset | Unix seconds. The X- spelling is what client libraries read. |
X-Request-Id |
#401 Unauthorized
#403 Forbidden
#404 Not Found
#429 Too Many Requests
#500 Internal Server Error
#503 Service Unavailable
#Status codes
| Status | Meaning |
|---|---|
200 | OK. |
401 | Unauthorized |
403 | Forbidden |
404 | Not Found |
429 | Too Many Requests |
500 | Internal Server Error |
503 | Service Unavailable |
Every refusal names its code, and every code is explained at Errors.