curl -X GET "https://app.hoox.video/api/public/v1/asset/status/662f8c1d3a4b5e6f70123456" \
-H "Authorization: Bearer your_api_key"
import requests
asset_id = "662f8c1d3a4b5e6f70123456"
url = f"https://app.hoox.video/api/public/v1/asset/status/{asset_id}"
headers = {"Authorization": "Bearer your_api_key"}
response = requests.get(url, headers=headers)
print(response.json())
const assetId = '662f8c1d3a4b5e6f70123456';
const response = await fetch(`https://app.hoox.video/api/public/v1/asset/status/${assetId}`, {
headers: { 'Authorization': 'Bearer your_api_key' },
});
const data = await response.json();
console.log(data);
{
"asset_id": "662f8c1d3a4b5e6f70123456",
"status": "generating",
"type": "video",
"generation_params": {
"model": "veo-3.1",
"prompt": "A cinematic shot of a fox running through autumn leaves at sunrise.",
"aspect_ratio": "9:16",
"resolution": "720p",
"duration": 8,
"references": [
{ "asset_id": "662f8c1d3a4b5e6f70123401" },
{ "url": "https://example.com/reference.jpg" }
]
}
}
{
"asset_id": "662f8c1d3a4b5e6f70123456",
"status": "completed",
"type": "video",
"url": "https://cdn.hoox.video/spaces/.../video.mp4",
"thumbnail_url": "https://cdn.hoox.video/spaces/.../thumb.jpg",
"width": 720,
"height": 1280,
"duration_seconds": 8,
"cost": 60,
"created_at": "2026-05-22T14:30:00.000Z",
"generation_params": {
"model": "veo-3.1",
"prompt": "A cinematic shot of a fox running through autumn leaves at sunrise.",
"aspect_ratio": "9:16",
"resolution": "720p",
"duration": 8,
"references": [
{ "asset_id": "662f8c1d3a4b5e6f70123401" },
{ "url": "https://example.com/reference.jpg" }
]
}
}
{
"asset_id": "662f8c1d3a4b5e6f70123456",
"status": "failed",
"type": "video",
"error": {
"code": "GENERATION_ERROR",
"message": "The prompt was rejected by the content filter."
}
}
{
"error": "Asset 662f8c1d3a4b5e6f70123456 not found in space 5e6f7012345...",
"details": [
{ "code": "asset_not_found", "message": "Asset 662f8c1d3a4b5e6f70123456 not found in space 5e6f7012345..." }
]
}
Assets
Check Asset Status
Retrieve the current generation status and result of a previously submitted asset
GET
/
api
/
public
/
v1
/
asset
/
status
/
{assetId}
curl -X GET "https://app.hoox.video/api/public/v1/asset/status/662f8c1d3a4b5e6f70123456" \
-H "Authorization: Bearer your_api_key"
import requests
asset_id = "662f8c1d3a4b5e6f70123456"
url = f"https://app.hoox.video/api/public/v1/asset/status/{asset_id}"
headers = {"Authorization": "Bearer your_api_key"}
response = requests.get(url, headers=headers)
print(response.json())
const assetId = '662f8c1d3a4b5e6f70123456';
const response = await fetch(`https://app.hoox.video/api/public/v1/asset/status/${assetId}`, {
headers: { 'Authorization': 'Bearer your_api_key' },
});
const data = await response.json();
console.log(data);
{
"asset_id": "662f8c1d3a4b5e6f70123456",
"status": "generating",
"type": "video",
"generation_params": {
"model": "veo-3.1",
"prompt": "A cinematic shot of a fox running through autumn leaves at sunrise.",
"aspect_ratio": "9:16",
"resolution": "720p",
"duration": 8,
"references": [
{ "asset_id": "662f8c1d3a4b5e6f70123401" },
{ "url": "https://example.com/reference.jpg" }
]
}
}
{
"asset_id": "662f8c1d3a4b5e6f70123456",
"status": "completed",
"type": "video",
"url": "https://cdn.hoox.video/spaces/.../video.mp4",
"thumbnail_url": "https://cdn.hoox.video/spaces/.../thumb.jpg",
"width": 720,
"height": 1280,
"duration_seconds": 8,
"cost": 60,
"created_at": "2026-05-22T14:30:00.000Z",
"generation_params": {
"model": "veo-3.1",
"prompt": "A cinematic shot of a fox running through autumn leaves at sunrise.",
"aspect_ratio": "9:16",
"resolution": "720p",
"duration": 8,
"references": [
{ "asset_id": "662f8c1d3a4b5e6f70123401" },
{ "url": "https://example.com/reference.jpg" }
]
}
}
{
"asset_id": "662f8c1d3a4b5e6f70123456",
"status": "failed",
"type": "video",
"error": {
"code": "GENERATION_ERROR",
"message": "The prompt was rejected by the content filter."
}
}
{
"error": "Asset 662f8c1d3a4b5e6f70123456 not found in space 5e6f7012345...",
"details": [
{ "code": "asset_not_found", "message": "Asset 662f8c1d3a4b5e6f70123456 not found in space 5e6f7012345..." }
]
}
Overview
Returns the current state of an asset (generating, completed, or failed) along with its result URL and metadata once ready. Poll this endpoint to wait for a generation to complete. This endpoint reads the asset state from the database only — it does not poll the underlying provider (FAL/Kie). The asset state is kept up to date by webhooks.Authentication
This endpoint requires API key authentication. Include your API key in the
Authorization header.Path Parameters
string
required
Asset ID returned by
/asset/start in the asset_ids array.Response
string
The asset ID that was queried.
string
One of
generating, completed, failed, or pending.string
Media type:
image, video, or audio.string
URL of the generated media. Present when
status is completed.string
Preview thumbnail URL (first frame of the video). Videos only — omitted for images, where it would just repeat
url.number
Width in pixels of the generated media (when known).
number
Height in pixels of the generated media (when known).
number
Duration in seconds (videos only).
number
Credits debited for this generation.
string
ISO 8601 creation timestamp.
object
The parameters used to generate the asset.
Show properties
Show properties
string
Model identifier (e.g.
veo-3.1).string
Original prompt sent.
string
string
number
Duration in seconds.
array
Reference media used as input for this generation, in the order they were submitted (for models with named input slots, slot order). Omitted when the generation used no reference.Each item has exactly one of the fields below — the same shape accepted by
/asset/start, so a reference can be fed straight back into a new generation.Show item properties
Show item properties
string
The reference came from an asset in your space media library. Only the ID is returned — call
/asset/status/{assetId} on it to get its URL.string
The reference came from an avatar defined in your space (its thumbnail was used).
string
Direct URL of the reference media, for references submitted as a
url.Example
curl -X GET "https://app.hoox.video/api/public/v1/asset/status/662f8c1d3a4b5e6f70123456" \
-H "Authorization: Bearer your_api_key"
import requests
asset_id = "662f8c1d3a4b5e6f70123456"
url = f"https://app.hoox.video/api/public/v1/asset/status/{asset_id}"
headers = {"Authorization": "Bearer your_api_key"}
response = requests.get(url, headers=headers)
print(response.json())
const assetId = '662f8c1d3a4b5e6f70123456';
const response = await fetch(`https://app.hoox.video/api/public/v1/asset/status/${assetId}`, {
headers: { 'Authorization': 'Bearer your_api_key' },
});
const data = await response.json();
console.log(data);
{
"asset_id": "662f8c1d3a4b5e6f70123456",
"status": "generating",
"type": "video",
"generation_params": {
"model": "veo-3.1",
"prompt": "A cinematic shot of a fox running through autumn leaves at sunrise.",
"aspect_ratio": "9:16",
"resolution": "720p",
"duration": 8,
"references": [
{ "asset_id": "662f8c1d3a4b5e6f70123401" },
{ "url": "https://example.com/reference.jpg" }
]
}
}
{
"asset_id": "662f8c1d3a4b5e6f70123456",
"status": "completed",
"type": "video",
"url": "https://cdn.hoox.video/spaces/.../video.mp4",
"thumbnail_url": "https://cdn.hoox.video/spaces/.../thumb.jpg",
"width": 720,
"height": 1280,
"duration_seconds": 8,
"cost": 60,
"created_at": "2026-05-22T14:30:00.000Z",
"generation_params": {
"model": "veo-3.1",
"prompt": "A cinematic shot of a fox running through autumn leaves at sunrise.",
"aspect_ratio": "9:16",
"resolution": "720p",
"duration": 8,
"references": [
{ "asset_id": "662f8c1d3a4b5e6f70123401" },
{ "url": "https://example.com/reference.jpg" }
]
}
}
{
"asset_id": "662f8c1d3a4b5e6f70123456",
"status": "failed",
"type": "video",
"error": {
"code": "GENERATION_ERROR",
"message": "The prompt was rejected by the content filter."
}
}
{
"error": "Asset 662f8c1d3a4b5e6f70123456 not found in space 5e6f7012345...",
"details": [
{ "code": "asset_not_found", "message": "Asset 662f8c1d3a4b5e6f70123456 not found in space 5e6f7012345..." }
]
}
Polling guidance
A typical pattern is to poll every 2–5 seconds untilstatus is completed or failed. Most generations complete in under 2 minutes. If you provided a webhook_url when submitting, you can avoid polling entirely.Was this page helpful?

