curl -X POST "https://app.hoox.video/api/public/v1/folder/create" \
-H "Authorization: Bearer your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "Summer Campaign",
"type": "assets"
}'
curl -X POST "https://app.hoox.video/api/public/v1/folder/create" \
-H "Authorization: Bearer your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "Q3 Ads",
"type": "videos"
}'
import requests
url = "https://app.hoox.video/api/public/v1/folder/create"
headers = {"Authorization": "Bearer your_api_key"}
response = requests.post(url, headers=headers, json={"name": "Summer Campaign", "type": "assets"})
folder = response.json()
# Route generations into the asset folder
requests.post(
"https://app.hoox.video/api/public/v1/asset/start",
headers=headers,
json={
"type": "image",
"model": "flux-2-pro",
"prompt": "Product shot of a ceramic mug on a marble counter.",
"folder_id": folder["id"],
},
)
const res = await fetch('https://app.hoox.video/api/public/v1/folder/create', {
method: 'POST',
headers: {
'Authorization': 'Bearer your_api_key',
'Content-Type': 'application/json',
},
body: JSON.stringify({ name: 'Summer Campaign', type: 'assets' }),
});
const folder = await res.json();
console.log(folder.id);
{
"id": "662f8c1d3a4b5e6f70123456",
"name": "Summer Campaign",
"type": "assets",
"parent_folder_id": null,
"created_at": "2026-06-19T10:00:00.000Z"
}
{
"error": "Validation failed",
"details": [
{ "code": "missing_field", "message": "name is required", "field": "name" }
]
}
{
"error": "folder_id does not reference an existing assets folder",
"details": [
{ "code": "invalid_value", "message": "folder_id does not reference an existing assets folder" }
]
}
Folder
Create Folder
Create an asset or video folder in your space to organize your library
POST
/
api
/
public
/
v1
/
folder
/
create
curl -X POST "https://app.hoox.video/api/public/v1/folder/create" \
-H "Authorization: Bearer your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "Summer Campaign",
"type": "assets"
}'
curl -X POST "https://app.hoox.video/api/public/v1/folder/create" \
-H "Authorization: Bearer your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "Q3 Ads",
"type": "videos"
}'
import requests
url = "https://app.hoox.video/api/public/v1/folder/create"
headers = {"Authorization": "Bearer your_api_key"}
response = requests.post(url, headers=headers, json={"name": "Summer Campaign", "type": "assets"})
folder = response.json()
# Route generations into the asset folder
requests.post(
"https://app.hoox.video/api/public/v1/asset/start",
headers=headers,
json={
"type": "image",
"model": "flux-2-pro",
"prompt": "Product shot of a ceramic mug on a marble counter.",
"folder_id": folder["id"],
},
)
const res = await fetch('https://app.hoox.video/api/public/v1/folder/create', {
method: 'POST',
headers: {
'Authorization': 'Bearer your_api_key',
'Content-Type': 'application/json',
},
body: JSON.stringify({ name: 'Summer Campaign', type: 'assets' }),
});
const folder = await res.json();
console.log(folder.id);
{
"id": "662f8c1d3a4b5e6f70123456",
"name": "Summer Campaign",
"type": "assets",
"parent_folder_id": null,
"created_at": "2026-06-19T10:00:00.000Z"
}
{
"error": "Validation failed",
"details": [
{ "code": "missing_field", "message": "name is required", "field": "name" }
]
}
{
"error": "folder_id does not reference an existing assets folder",
"details": [
{ "code": "invalid_value", "message": "folder_id does not reference an existing assets folder" }
]
}
Overview
Creates a folder in your space to keep your library organized. A folder is scoped to a type — eitherassets (images/videos generated via Submit Asset Generation) or videos (videos produced through the video workflow).
For asset folders, pass the returned id as folder_id when calling Submit Asset Generation and the outputs land in that folder.
When you start a batch of generations or work on a specific project, create a dedicated folder first and route every generation into it. It keeps the space tidy and makes the assets easy to find in the dashboard.
Authentication
This endpoint requires API key authentication. Include your API key in the
Authorization header.Request Body
string
required
Display name of the folder.
string
default:"assets"
Folder type:
assets or videos. Determines which library the folder appears in.string
ID of an existing folder of the same type to nest this one under. Omit (or pass
null) to create a folder at the root of the library.Response
string
Unique identifier of the created folder. For an asset folder, pass this as
folder_id to Submit Asset Generation.string
Name of the folder.
string
Folder type:
assets or videos.string
ID of the parent folder, or
null for a root folder.string
ISO 8601 creation timestamp.
Examples
curl -X POST "https://app.hoox.video/api/public/v1/folder/create" \
-H "Authorization: Bearer your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "Summer Campaign",
"type": "assets"
}'
curl -X POST "https://app.hoox.video/api/public/v1/folder/create" \
-H "Authorization: Bearer your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "Q3 Ads",
"type": "videos"
}'
import requests
url = "https://app.hoox.video/api/public/v1/folder/create"
headers = {"Authorization": "Bearer your_api_key"}
response = requests.post(url, headers=headers, json={"name": "Summer Campaign", "type": "assets"})
folder = response.json()
# Route generations into the asset folder
requests.post(
"https://app.hoox.video/api/public/v1/asset/start",
headers=headers,
json={
"type": "image",
"model": "flux-2-pro",
"prompt": "Product shot of a ceramic mug on a marble counter.",
"folder_id": folder["id"],
},
)
const res = await fetch('https://app.hoox.video/api/public/v1/folder/create', {
method: 'POST',
headers: {
'Authorization': 'Bearer your_api_key',
'Content-Type': 'application/json',
},
body: JSON.stringify({ name: 'Summer Campaign', type: 'assets' }),
});
const folder = await res.json();
console.log(folder.id);
{
"id": "662f8c1d3a4b5e6f70123456",
"name": "Summer Campaign",
"type": "assets",
"parent_folder_id": null,
"created_at": "2026-06-19T10:00:00.000Z"
}
{
"error": "Validation failed",
"details": [
{ "code": "missing_field", "message": "name is required", "field": "name" }
]
}
{
"error": "folder_id does not reference an existing assets folder",
"details": [
{ "code": "invalid_value", "message": "folder_id does not reference an existing assets folder" }
]
}
Notes
typedefaults toassetswhen omitted.- A
parent_folder_idmust reference a folder of the sametype, otherwise the request fails withinvalid_value. - Use List Folders to retrieve existing folder IDs before creating duplicates.
Was this page helpful?

