> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hoox.video/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Asset Model

> Retrieve full details for a single asset generation model, including a JSON-schema-shaped input description

## Overview

Returns the complete configuration of a model: capabilities, custom settings, restrictions, and a JSON-schema-shaped `input_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

<Info>
  This endpoint requires API key authentication. Include your API key in the `Authorization` header.
</Info>

## Path Parameters

<ParamField path="name" type="string" required>
  Model identifier (e.g. `veo-3.1`, `seedance-2.0`, `nano-banana-pro`). Use [List Models](/api-reference/assets/models) to discover available identifiers.
</ParamField>

## Response

All fields from the [model summary](/api-reference/assets/models) plus:

<ResponseField name="settings" type="array">
  Custom settings accepted in the `model_settings` object of the submit request.

  <Expandable title="setting">
    <ResponseField name="key" type="string" />

    <ResponseField name="type" type="string">`boolean` or `select`.</ResponseField>

    <ResponseField name="label" type="string" />

    <ResponseField name="default_value" />

    <ResponseField name="affects_cost" type="boolean" />

    <ResponseField name="options" type="array">
      Present for `select` type. Each option has `value` and `label`.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="max_prompt_length" type="number">
  Maximum number of characters accepted in the `prompt` field.
</ResponseField>

<ResponseField name="restricted_countries" type="array">
  ISO country codes where this model is not available.
</ResponseField>

<ResponseField name="input_schema" type="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).

  <Expandable title="properties">
    <ResponseField name="type" type="string">Always `object`.</ResponseField>

    <ResponseField name="properties" type="object">
      Map of field name → JSON Schema property (with `type`, `enum`, `default`, `minItems`, etc.).
    </ResponseField>

    <ResponseField name="required" type="array" />
  </Expandable>
</ResponseField>

<Note>
  **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.
</Note>

## Example

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET "https://app.hoox.video/api/public/v1/asset/models/veo-3.1" \
    -H "Authorization: Bearer your_api_key"
  ```

  ```python Python theme={null}
  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())
  ```

  ```javascript JavaScript theme={null}
  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);
  ```
</RequestExample>

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "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 } }
        }
      }
    }
  }
  ```

  ```json 404 Not Found theme={null}
  {
    "error": "Model \"not-a-real-model\" not found",
    "details": [
      { "code": "model_not_found", "message": "Model \"not-a-real-model\" not found" }
    ]
  }
  ```
</ResponseExample>
