curl -X GET "https://app.hoox.video/api/public/v1/asset/models/veo-3.1" \
-H "Authorization: Bearer your_api_key"
import requests
response = requests.get(
"https://app.hoox.video/api/public/v1/asset/models/veo-3.1",
headers={"Authorization": "Bearer your_api_key"},
)
print(response.json())
const response = await fetch('https://app.hoox.video/api/public/v1/asset/models/veo-3.1', {
headers: { 'Authorization': 'Bearer your_api_key' },
});
const data = await response.json();
console.log(data);
{
"name": "veo-3.1",
"label": "Veo 3.1",
"type": "video",
"provider": "google",
"base_cost": 32,
"has_audio": true,
"capabilities": {
"max_images": 1,
"min_images": 0
},
"settings": [
{
"key": "generateAudio",
"type": "boolean",
"label": "audio",
"default_value": true,
"affects_cost": true
}
],
"input_schema": {
"type": "object",
"required": ["prompt"],
"properties": {
"prompt": { "type": "string", "description": "Text prompt describing the asset to generate." },
"references": {
"type": "array",
"description": "Reference media. Min 0, max 1.",
"items": {
"type": "object",
"description": "Exactly one of url, asset_id, or avatar_id must be set.",
"properties": {
"url": { "type": "string", "format": "uri", "description": "Direct publicly accessible URL of the media file." },
"asset_id": { "type": "string", "description": "ID of an existing asset in your Hoox space media library." },
"avatar_id": { "type": "string", "description": "ID of an avatar defined in your Hoox space." }
},
"oneOf": [{ "required": ["url"] }, { "required": ["asset_id"] }, { "required": ["avatar_id"] }]
},
"minItems": 0,
"maxItems": 1
},
"aspect_ratio": { "type": "string", "enum": ["16:9", "9:16"], "default": "9:16" },
"resolution": { "type": "string", "enum": ["720p", "1080p", "4K"], "default": "720p" },
"duration": { "type": "integer", "description": "Duration in seconds.", "enum": [4, 6, 8], "default": 8 },
"generation_count": { "type": "integer", "minimum": 1, "maximum": 4, "default": 1 },
"model_settings": {
"type": "object",
"properties": { "generateAudio": { "type": "boolean", "default": true } }
}
}
}
}
{
"error": "Model \"not-a-real-model\" not found",
"details": [
{ "code": "model_not_found", "message": "Model \"not-a-real-model\" not found" }
]
}
Assets
Get Asset Model
Retrieve full details for a single asset generation model, including a JSON-schema-shaped input description
GET
/
api
/
public
/
v1
/
asset
/
models
/
{name}
curl -X GET "https://app.hoox.video/api/public/v1/asset/models/veo-3.1" \
-H "Authorization: Bearer your_api_key"
import requests
response = requests.get(
"https://app.hoox.video/api/public/v1/asset/models/veo-3.1",
headers={"Authorization": "Bearer your_api_key"},
)
print(response.json())
const response = await fetch('https://app.hoox.video/api/public/v1/asset/models/veo-3.1', {
headers: { 'Authorization': 'Bearer your_api_key' },
});
const data = await response.json();
console.log(data);
{
"name": "veo-3.1",
"label": "Veo 3.1",
"type": "video",
"provider": "google",
"base_cost": 32,
"has_audio": true,
"capabilities": {
"max_images": 1,
"min_images": 0
},
"settings": [
{
"key": "generateAudio",
"type": "boolean",
"label": "audio",
"default_value": true,
"affects_cost": true
}
],
"input_schema": {
"type": "object",
"required": ["prompt"],
"properties": {
"prompt": { "type": "string", "description": "Text prompt describing the asset to generate." },
"references": {
"type": "array",
"description": "Reference media. Min 0, max 1.",
"items": {
"type": "object",
"description": "Exactly one of url, asset_id, or avatar_id must be set.",
"properties": {
"url": { "type": "string", "format": "uri", "description": "Direct publicly accessible URL of the media file." },
"asset_id": { "type": "string", "description": "ID of an existing asset in your Hoox space media library." },
"avatar_id": { "type": "string", "description": "ID of an avatar defined in your Hoox space." }
},
"oneOf": [{ "required": ["url"] }, { "required": ["asset_id"] }, { "required": ["avatar_id"] }]
},
"minItems": 0,
"maxItems": 1
},
"aspect_ratio": { "type": "string", "enum": ["16:9", "9:16"], "default": "9:16" },
"resolution": { "type": "string", "enum": ["720p", "1080p", "4K"], "default": "720p" },
"duration": { "type": "integer", "description": "Duration in seconds.", "enum": [4, 6, 8], "default": 8 },
"generation_count": { "type": "integer", "minimum": 1, "maximum": 4, "default": 1 },
"model_settings": {
"type": "object",
"properties": { "generateAudio": { "type": "boolean", "default": true } }
}
}
}
}
{
"error": "Model \"not-a-real-model\" not found",
"details": [
{ "code": "model_not_found", "message": "Model \"not-a-real-model\" not found" }
]
}
Overview
Returns the complete configuration of a model: capabilities, custom settings, restrictions, and a JSON-schema-shapedinput_schema describing exactly what the model accepts.
The input_schema is suitable for use as an AI tool / function definition (e.g. AI SDK, MCP server, OpenAI tools).
Authentication
This endpoint requires API key authentication. Include your API key in the
Authorization header.Path Parameters
string
required
Model identifier (e.g.
veo-3.1, seedance-2.0, nano-banana-pro). Use List Models to discover available identifiers.Response
All fields from the model summary plus:array
number
Maximum number of characters accepted in the
prompt field.array
ISO country codes where this model is not available.
object
JSON-schema-shaped object listing the accepted request fields, their types, and enums. Only the fields the model actually accepts are listed.
duration is always expressed in seconds (integer).Reference media in
input_schema. For most models, reference inputs appear under a single references array. Models that need specific typed inputs (e.g. first/last frame, motion control, video edit) instead expose named top-level fields — such as first_frame, last_frame, start_image, motion_video, or source_video. Either way, every reference object accepts exactly one of url, asset_id, or avatar_id. See each model’s page for its named slots.Example
curl -X GET "https://app.hoox.video/api/public/v1/asset/models/veo-3.1" \
-H "Authorization: Bearer your_api_key"
import requests
response = requests.get(
"https://app.hoox.video/api/public/v1/asset/models/veo-3.1",
headers={"Authorization": "Bearer your_api_key"},
)
print(response.json())
const response = await fetch('https://app.hoox.video/api/public/v1/asset/models/veo-3.1', {
headers: { 'Authorization': 'Bearer your_api_key' },
});
const data = await response.json();
console.log(data);
{
"name": "veo-3.1",
"label": "Veo 3.1",
"type": "video",
"provider": "google",
"base_cost": 32,
"has_audio": true,
"capabilities": {
"max_images": 1,
"min_images": 0
},
"settings": [
{
"key": "generateAudio",
"type": "boolean",
"label": "audio",
"default_value": true,
"affects_cost": true
}
],
"input_schema": {
"type": "object",
"required": ["prompt"],
"properties": {
"prompt": { "type": "string", "description": "Text prompt describing the asset to generate." },
"references": {
"type": "array",
"description": "Reference media. Min 0, max 1.",
"items": {
"type": "object",
"description": "Exactly one of url, asset_id, or avatar_id must be set.",
"properties": {
"url": { "type": "string", "format": "uri", "description": "Direct publicly accessible URL of the media file." },
"asset_id": { "type": "string", "description": "ID of an existing asset in your Hoox space media library." },
"avatar_id": { "type": "string", "description": "ID of an avatar defined in your Hoox space." }
},
"oneOf": [{ "required": ["url"] }, { "required": ["asset_id"] }, { "required": ["avatar_id"] }]
},
"minItems": 0,
"maxItems": 1
},
"aspect_ratio": { "type": "string", "enum": ["16:9", "9:16"], "default": "9:16" },
"resolution": { "type": "string", "enum": ["720p", "1080p", "4K"], "default": "720p" },
"duration": { "type": "integer", "description": "Duration in seconds.", "enum": [4, 6, 8], "default": 8 },
"generation_count": { "type": "integer", "minimum": 1, "maximum": 4, "default": 1 },
"model_settings": {
"type": "object",
"properties": { "generateAudio": { "type": "boolean", "default": true } }
}
}
}
}
{
"error": "Model \"not-a-real-model\" not found",
"details": [
{ "code": "model_not_found", "message": "Model \"not-a-real-model\" not found" }
]
}
Was this page helpful?

