Skip to main content

Discover existing assets

Catalog searches the shared voice, avatar or template libraries using kind. For library-specific filters, use the dedicated listing endpoints and their schemas. Capabilities describes the atomic workflow and shared identity. Voice cloning, avatar generation and image generation use the existing subscription allowances and charges. Check voice clone allowance before cloning.

Model selection

Generate avatar motion requires an explicit model ID from the Web Podcast host selector: Missing, null and unsupported IDs are rejected. Create avatar accepts image model IDs 3, 9 and 11. Generate image uses the names nano-banana, nano-banana-pro and gpt-image-2, respectively, mapped to the same Web models. These choices use the existing Web pricing and storage.

Create hosts

Use Create avatar for two speaker-focus hosts, or Create multi-camera avatar for a shared scene with multiple camera positions. Each endpoint selects its existing Web generation pipeline and pricing on the server.
Supply exactly two hosts, ordered left then right. A background is optional for speaker focus and required for multi-camera. Select a public background with background.id, or a background from your library with background.user_background_id. Supply exactly one ID; its URLs and metadata are resolved by the server. Upload and register a new background first when needed. The response contains podcast_avatar_id and pack_ids. Poll Get avatar and select generated photos for Generate avatar motion. Internal fields such as packs, podcast_version, create_from, task_from and from_for_pay are not accepted by host creation.

Upload your media

Request Upload asset with filename, content_type and the exact file_size in bytes. The default maximum is 512 MiB. The upload signature binds both Content-Type and Content-Length.
The response data contains sign_url and asset_url. Upload the file bytes to sign_url with the same Content-Type and Content-Length. Curl sets Content-Length from the file:
After the upload succeeds, use asset_url in project input or register it through Add music, Add background or Add image. Use the registered item’s native ID in project or template settings.
The signed upload URL expires after 10 minutes. To request a fresh URL, omit Idempotency-Key or use a new key; replaying a previous key returns the original URL.
An upload alone does not necessarily create a library item. Use the relevant registration operation and preserve its native ID. The API does not create a separate asset store.

Generate an image or background

Choose the operation matching the asset you need. Its destination is fixed by the endpoint: Each request generates one image. Use the model names nano-banana, nano-banana-pro or gpt-image-2; the default is nano-banana-pro at 2K. The selected model and resolution use the existing Web prices. Only documented business fields are accepted; source, number_of_images, create_from, task_from and billing flags are rejected.
To generate an image, send this object to POST /open/podcast/v1/images/generate, or pass it as body to podcast_generate_image. Host background generation also requires typ: 0 for speaker focus or 2 for alternating shots, and optionally accepts avatar_type (default, pet or cartoon). The response data is the task ID. Poll Get image task with only unique_id; omit type. It returns unique_id, progress_desc, output_url and err_msg. Reads are limited to supported image tasks in the current Space.

Visual podcasts

Use image templates, image backgrounds, image materials and waveforms to build reusable visual podcast layouts. Their operations use the Web library’s public/user ownership rules. Copies create editable user templates. Delete items through the Web application.