Biblioteca privada de retratos virtuales
ModelArk · Seedance 2.0 y 2.5 · Gestión de recursos para mantener la coherencia de los personajes en la generación de vídeo
docs.byteplus.com/en/docs/ModelArk/2333565 ↗
Traducción íntegra de la guía de CloudCLI. Se conservan todas las explicaciones, notas, ejemplos, respuestas y referencias del original. Las imágenes mantienen su aspecto original y los textos que contienen se traducen junto a ellas.
Descripción general
- La API de carga de recursos (CreateAsset) es asíncrona. El procesamiento del sistema puede generar colas y aumentar el tiempo necesario para el almacenamiento; al subir vídeos, se prevé una latencia mayor.
- No se garantiza un acuerdo de nivel de servicio (SLA) para el tiempo de carga.
- Debes asegurarte de que el retrato virtual subido cumpla las siguientes condiciones:
- Eres el propietario legítimo del recurso y tienes todos los derechos para utilizarlo y disponer de él. El recurso no contiene marcas comerciales ni logotipos de terceros sin autorización.
- El recurso no debe parecerse al retrato de ninguna persona real, no debe ser objeto de plagio ni de apropiación indebida y no debe vulnerar los derechos de imagen de terceros.
- El recurso no contiene material que infrinja la normativa, contravenga el orden público y las buenas costumbres o vulnere los derechos legítimos de terceros.
Los modelos Dreamina Seedance 2.0 (Seedance 2.0) y Dreamina Seedance 2.5 (Seedance 2.5) tienen capacidades multimodales completas. Para que los creadores puedan aprovechar plenamente las potentes capacidades de generación de vídeo de Seedance 2.0 y 2.5, puedes subir retratos virtuales a una biblioteca privada de recursos y obtener resultados de generación de vídeo más estables.
El flujo de trabajo para utilizar la biblioteca privada de recursos es el siguiente:

Flujo de trabajo: activar los derechos de creación avanzada → crear un grupo de recursos → subir un recurso → obtener su identificador → utilizarlo para generar vídeo
Activación del modelo → Derechos de creación avanzada
- Completar la verificación de la identidad legal de la organización.
- Suscribirse al paquete de ventajas de creación avanzada.
API / Entorno de pruebas de modelos
- Crear un grupo de recursos: API
CreateAssetGroup. - Subir un recurso: API
CreateAsset. - Buscar recursos o grupos de recursos y obtener el identificador del recurso:
GetAsset,ListAssets/ListAssetGroups. - Proporcionar el identificador del recurso para generar vídeo: API de generación de vídeo.
Requisitos previos
Para acceder a todas las funciones de la biblioteca de recursos, debes activar los derechos de creación avanzada. Consulta la Guía de compra de los derechos de creación avanzada de Dreamina Seedance.
Estructura de la biblioteca de recursos
- Grupo de recursos: cada archivo de recursos es un recurso y cada recurso pertenece a un grupo de recursos.
- Los grupos permiten gestionar los recursos de forma flexible. Por ejemplo, los recursos de una misma persona pueden reunirse en un único grupo para facilitar su gestión.
- Recurso: archivo de imagen, vídeo o audio que los modelos Seedance 2.0 y Seedance 2.5 toman como referencia para generar vídeo. Actualmente solo se admiten recursos de retratos virtuales AIGC.
- Solo es necesario añadir a la biblioteca los recursos que se necesiten para la inferencia; no añadas recursos que no se vayan a utilizar en ella.
- Para generar vídeo solo pueden utilizarse los identificadores de recursos que ya se hayan añadido a la biblioteca; los recursos para la generación habitual de imágenes o vídeos no necesitan añadirse a ella.
- Cada recurso subido debe someterse a un procesamiento previo. Puedes consultar periódicamente la API GetAsset para comprobar su estado (el recurso solo se puede utilizar para generar vídeo cuando su estado es
Active).
Tomemos como ejemplo la carga de una imagen de un personaje:
Requisitos de formato para un archivo de imagen:
- Formato: JPEG, PNG, WebP, TIFF, GIF, HEIC/HEIF
- Relación de aspecto (ancho/alto): (0,4; 2,5)
- Ancho y alto (píxeles): (300; 6000)
- Cada archivo de imagen debe ocupar menos de 30 MB.
Para que el rostro del personaje, los detalles de su ropa y otros rasgos del vídeo generado sean coherentes con la imagen de referencia, recomendamos proporcionar los siguientes tipos de imágenes de referencia del retrato virtual:
Prácticas recomendadas para el contenido de los retratos:
Requisitos de la imagen de referencia de cuerpo entero
- Disposición: Vertical
- Contenido de la imagen: Imagen frontal de cuerpo entero de la persona

Ejemplo: imagen de referencia de cuerpo entero, vertical y frontal
Requisitos de la imagen de primer plano del rostro
- Disposición: Vertical
- Contenido de la imagen: Primer plano frontal de la persona, con expresión neutra, encuadrada por encima de los hombros, con el rostro centrado y sin oclusiones

Ejemplo: imagen de referencia del rostro en primer plano, vertical, frontal y por encima de los hombros
Lista de operaciones de la API de recursos
Creación de recursos y grupos
| API | Descripción |
|---|---|
| POSTCreateAssetGroup | Crea un grupo de recursos. Al crear un grupo por primera vez, debes especificar GroupType. Una vez establecido, este campo no se puede cambiar. |
| POSTCreateAsset | Crea un recurso. Esta interfaz permite subir recursos personales. Después de crear uno, llama a GetAsset para comprobar si se ha procesado correctamente. |
Gestión de recursos y grupos
- POST
ListAssetGroups— consultar la lista de grupos de recursos - POST
ListAssets— consultar la lista de recursos - POST
GetAsset— consultar la información de un recurso - POST
GetAssetGroup— consultar la información de un grupo de recursos - POST
UpdateAssetGroup— actualizar la información de un grupo de recursos - POST
UpdateAsset— actualizar la información de un recurso - POST
DeleteAsset— eliminar un recurso - POST
DeleteAssetGroup— eliminar un grupo de recursos
Límites de solicitudes
- QPS: número máximo total de solicitudes por segundo; la solicitud devolverá un error si se supera este límite.
- QPM: número máximo total de solicitudes por minuto; las solicitudes devolverán un error si se supera este límite.
| API | Límites de solicitudes por cuenta |
|---|---|
| CreateAssetGroup | 10 QPS |
| CreateAsset | Los límites de solicitudes de la API varían según el tipo de derechos. Para consultar los límites detallados, véase la Guía de compra de los derechos de creación avanzada de Dreamina Seedance. |
| ListAssetGroups | 10 QPS |
| ListAssets | 10 QPS |
| GetAsset | 100 QPS |
| GetAssetGroup | 10 QPS |
| UpdateAsset | 10 QPS |
| UpdateAssetGroup | 10 QPS |
| DeleteAsset | 10 QPS |
| DeleteAssetGroup | 5 QPS |
Tutorial
Subir recursos a la biblioteca de retratos virtuales: API y consola
Puedes subir tus propios retratos virtuales a la biblioteca privada de recursos.
- Eres el propietario legítimo del recurso y tienes todos los derechos para utilizarlo y disponer de él. El recurso no contiene marcas comerciales ni logotipos de terceros sin autorización.
- El recurso no debe parecerse al retrato o a la imagen de ninguna persona real ni implicar plagio o apropiación indebida del retrato o la imagen de una persona real.
- El recurso no contiene material que infrinja las leyes y normativas, el orden público y las buenas costumbres o los derechos legítimos de terceros.
ModelArk realizará una revisión de seguridad de los recursos que subas. Una vez aprobados, podrás utilizarlos para generar vídeo.
Puedes utilizar las interfaces de OpenAPI o subir recursos desde el entorno de pruebas de modelos.
Utilizar la consola
Abre Entorno de pruebas de modelos > Mis recursos > Retrato virtual > Gestionar recursos.
- Crea un grupo de recursos.
- Sube los recursos al grupo.

Consola de ModelArk — Mis recursos → Retrato virtual → Gestionar recursos
- Plantillas · Elementos · Personajes digitales · Mis recursos.
- Campo de búsqueda: «Introduce el identificador del grupo para buscar».
- Gestionar recursos.
- Persona real · Retrato virtual.
- Nombre de la primera tarjeta: «Prueba». La segunda conserva el identificador «1231».
- Mensaje inferior: «Ya estás al día».
Utilizar la API
- CreateAssetGroup: crear un grupo de recursos
- CreateAsset: subir recursos al grupo
CreateAssetGroup — Crear un grupo de recursos
- Las llamadas a la API de recursos requieren autenticación mediante clave de acceso. Para más información, consulta Gestión de claves de acceso a la API.
- Para obtener información sobre los parámetros de la API, consulta la Referencia de la API de la biblioteca de retratos virtuales.
Utiliza la API POST CreateAssetGroup para crear un grupo de recursos. Incluye los siguientes campos en el cuerpo de la solicitud:
- Name: nombre del grupo de recursos.
- Description: descripción del grupo de recursos.
- GroupType: opcional. El valor predeterminado es
AIGC(recurso de retrato virtual). Actualmente solo se admite AIGC. - ProjectName: opcional. Especifica el nombre del proyecto de recursos. El valor predeterminado es
default. Los recursos de un proyecto solo pueden utilizarse mediante puntos de inferencia de ese mismo proyecto.
ProjectName no se especifica en la solicitud, el grupo de recursos se creará en el proyecto default de forma predeterminada. Debes utilizar este campo para asegurarte de que el grupo se crea en el proyecto correcto.package main
import (
"fmt"
"github.com/bytedance/sonic"
"github.com/byteplus-sdk/byteplus-go-sdk-v2/byteplus"
"github.com/byteplus-sdk/byteplus-go-sdk-v2/byteplus/credentials"
"github.com/byteplus-sdk/byteplus-go-sdk-v2/byteplus/session"
"github.com/byteplus-sdk/byteplus-go-sdk-v2/byteplus/universal"
)
func main () {
config := byteplus.NewConfig().WithCredentials(credentials.NewStaticCredentials( "<TU_AK>" , "<TU_SK>" , "" )).WithRegion( "ap-southeast-1" )
sess, _ := session.NewSession(config)
resp, err := universal.New(sess).DoCall(
universal.RequestUniversal{
ServiceName: "ark" ,
Action: "CreateAssetGroup" ,
Version: "2024-01-01" ,
HttpMethod: universal.POST,
ContentType: universal.ApplicationJSON,
},
& map [ string ]any{
"Name" : "<NOMBRE_DEL_GRUPO>" ,
"Description" : "<DESCRIPCION_DEL_GRUPO>" ,
"ProjectName" : "default" ,
},
)
if err != nil {
fmt.Printf( "error: %v\n" , err)
return
}
if resp == nil {
return
}
respData, err := sonic.Marshal(resp)
fmt.Println( string (respData))
}
{
"Id": "group-20260318033332-*****"
}
CreateAsset — Subir un recurso
Utiliza la API POST CreateAsset para subir un recurso.
Proporciona los siguientes datos en la solicitud:
- GroupId: obligatorio. Identificador del grupo de recursos.
- URL: obligatorio. URL accesible de la imagen.
- AssetType: obligatorio. Se admite la carga de imágenes, vídeos y audios. Debes especificar el tipo de recurso:
Image/Video/Audio. Para consultar las restricciones específicas de los archivos, véase la documentación de la API de recursos. - Name: opcional. Nombre del recurso, que puede utilizarse para su gestión, por ejemplo, como nombre del archivo. Este campo solo se utiliza para la búsqueda aproximada al llamar a la API ListAssets y no se incluye en la inferencia del modelo.
- Moderation: opcional. Especifica si se desactiva la revisión del filtro previo de contenido para el recurso actual.
- De forma predeterminada, la revisión del filtro previo de contenido está activada.
- Para omitir la mayoría de las políticas de revisión de seguridad del contenido que no sean básicas, establece este parámetro en
"Moderation": {"Strategy": "Skip"}.
- ProjectName: opcional. Especifica el nombre del proyecto de recursos. El valor predeterminado es
default.
ProjectName no se especifica en la solicitud, el recurso se subirá al proyecto default de forma predeterminada.Notas:
- Cada solicitud sube un único archivo de recursos.
- La solicitud devuelve el identificador del recurso. Puedes utilizar la API
GetAssetpara comprobar si la carga se ha completado correctamente.
package main
import (
"fmt"
"github.com/bytedance/sonic"
"github.com/byteplus-sdk/byteplus-go-sdk-v2/byteplus"
"github.com/byteplus-sdk/byteplus-go-sdk-v2/byteplus/credentials"
"github.com/byteplus-sdk/byteplus-go-sdk-v2/byteplus/session"
"github.com/byteplus-sdk/byteplus-go-sdk-v2/byteplus/universal"
)
func main () {
config := byteplus.NewConfig().WithCredentials(credentials.NewStaticCredentials( "<TU_AK>" , "<TU_SK>" , "" )).WithRegion( "ap-southeast-1" )
sess, _ := session.NewSession(config)
resp, err := universal.New(sess).DoCall(
universal.RequestUniversal{
ServiceName: "ark" ,
Action: "CreateAsset" ,
Version: "2024-01-01" ,
HttpMethod: universal.POST,
ContentType: universal.ApplicationJSON,
},
& map [ string ]any{
"GroupId" : "group-20260324142802-f7wmx" ,
"URL" : "<URL_DE_LA_IMAGEN>" ,
"AssetType" : "Image" ,
"Moderation" : map [ string ]any{ // Omitir la revisión del filtro previo de contenido; primero hay que desactivar ese filtro en la consola
"Strategy" : "Skip" ,
},
"ProjectName" : "default" ,
},
)
if err != nil {
fmt.Printf( "error: %v\n" , err)
return
}
if resp == nil {
return
}
respData, err := sonic.Marshal(resp)
fmt.Println( string (respData))
}
{
"Id": "asset-20260318071009-*****"
}
Consultar retratos virtuales: API y consola
Puedes consultar los recursos de retratos virtuales mediante los siguientes métodos.
- Consola: en la consola de ModelArk > Mis recursos > Retrato virtual, puedes buscar y ver los recursos de retratos virtuales que has subido.
- API:
- POST GetAsset: consultar un único recurso
- POST ListAssets: consultar recursos
- POST ListAssetGroups: consultar la información de los grupos de recursos
Consultar la información de un único recurso
Puedes utilizar POST GetAsset para consultar la información de un único recurso especificando su identificador.
package main
import (
"fmt"
"github.com/bytedance/sonic"
"github.com/byteplus-sdk/byteplus-go-sdk-v2/byteplus"
"github.com/byteplus-sdk/byteplus-go-sdk-v2/byteplus/credentials"
"github.com/byteplus-sdk/byteplus-go-sdk-v2/byteplus/session"
"github.com/byteplus-sdk/byteplus-go-sdk-v2/byteplus/universal"
)
func main () {
config := byteplus.NewConfig().WithCredentials(credentials.NewStaticCredentials( "<TU_AK>" , "<TU_SK>" , "" )).WithRegion( "ap-southeast-1" )
sess, _ := session.NewSession(config)
resp, err := universal.New(sess).DoCall(
universal.RequestUniversal{
ServiceName: "ark" ,
Action: "GetAsset" ,
Version: "2024-01-01" ,
HttpMethod: universal.POST,
ContentType: universal.ApplicationJSON,
},
& map [ string ]any{
"Id" : "asset-20260324143042-*****" ,
"ProjectName" : "default" , // Asegúrate de indicar el nombre correcto del proyecto donde está almacenado el recurso
},
)
if err != nil {
fmt.Printf( "error: %v\n" , err)
return
}
if resp == nil {
return
}
respData, err := sonic.Marshal(resp)
fmt.Println( string (respData))
}
{
"GroupId": "group-20260318033332-7vw4m",
"Status": "Active",
"Moderation": {
"Strategy": "Default"
},
"CreateTime": "2026-03-18T03:57:10Z",
"AssetType": "Image",
"UpdateTime": "2026-03-18T03:57:14Z",
"LastInferenceTime": "2026-07-24T10:08:49+08:00",
"ProjectName": "default",
"Id": "asset-20260318035710-*****",
"Name": "",
"URL": "https://ark-media-asset-ap-southeast-1.tos-ap-southeast-1.volces.com/300060****/03301616086559****.jpg?X-Tos-Algorithm=***********"
}
LastInferenceTime indica la última vez que se utilizó un recurso para enviar una tarea de generación de vídeo. Puedes consultar periódicamente LastInferenceTime y eliminar de forma proactiva los recursos que lleven mucho tiempo sin utilizarse para ahorrar costes de almacenamiento.Consultar la información de los recursos
Puedes utilizar POST ListAssets para consultar recursos. Admite:
- Consultas por identificador del grupo (
GroupId), estados de los recursos (Statuses) y nombre del recurso (Name). Filtra los recursos que coincidan con la consulta. - Búsqueda aproximada mediante
Namey búsqueda exacta medianteGroupId, lo que facilita encontrar los recursos necesarios. - Ordenar los resultados mediante
SortByySortOrder.
ListAssets admite paginación mediante NextToken y paginación por número de página. Para consultar los métodos de paginación, los parámetros y los ejemplos, véase la Referencia de la API de la biblioteca de retratos virtuales.package main
import (
"fmt"
"github.com/bytedance/sonic"
"github.com/byteplus-sdk/byteplus-go-sdk-v2/byteplus"
"github.com/byteplus-sdk/byteplus-go-sdk-v2/byteplus/credentials"
"github.com/byteplus-sdk/byteplus-go-sdk-v2/byteplus/session"
"github.com/byteplus-sdk/byteplus-go-sdk-v2/byteplus/universal"
)
func main () {
config := byteplus.NewConfig().WithCredentials(credentials.NewStaticCredentials( "<TU_AK>" , "<TU_SK>" , "" )).WithRegion( "ap-southeast-1" )
sess, _ := session.NewSession(config)
resp, err := universal.New(sess).DoCall(
universal.RequestUniversal{
ServiceName: "ark" ,
Action: "ListAssets" ,
Version: "2024-01-01" ,
HttpMethod: universal.POST,
ContentType: universal.ApplicationJSON,
},
& map [ string ]any{
"Filter" : map [ string ]any{
"GroupIds" : [] string { "group-20260324142802-*****" },
"GroupType" : "AIGC" ,
"Statuses" : [] string { "Active" , "Processing" }, // Estados admitidos: Active (carga completada; identificador del recurso disponible para su uso), Processing (en proceso), Failed (error)
},
"MaxResults" : 2 ,
"SortBy" : "CreateTime" ,
"SortOrder" : "Desc" ,
},
)
if err != nil {
fmt.Printf( "error al consultar los recursos: %v\n" , err)
return
}
if resp == nil {
return
}
respData, err := sonic.Marshal(resp)
fmt.Println( string (respData))
}
{
"Items": [
{
"Id": "asset-20260318035710-kctzf",
"Name": "",
"AssetType": "Image",
"CreateTime": "2026-03-18T03:57:10Z",
"UpdateTime": "2026-03-18T03:57:14Z",
"LastInferenceTime": "2026-07-24T10:08:49+08:00",
"ProjectName": "default",
"URL": "https://ark-media-asset-ap-southeast-1.tos-ap-southeast-1.volces.com/300060****/03301616086559****.jpg?X-Tos-Algorithm=***********",
"GroupId": "group-20260318033332-*****",
"Status": "Active",
"Moderation": {
"Strategy": "Default"
}
},
{
"GroupId": "group-20260318033332-*****",
"Status": "Active",
"Id": "asset-20260318034804-wtnjr",
"Name": "",
"URL": "image_url",
"AssetType": "Image",
"CreateTime": "2026-03-18T03:48:04Z",
"UpdateTime": "2026-03-18T03:48:08Z",
"LastInferenceTime": "2026-07-24T02:08:49Z",
"ProjectName": "default",
"Moderation": {
"Strategy": "Default"
}
}
],
"NextToken": "****bmNyeXB0ZWRfY3Vyc29yIjoiLi4****"
}
Consultar grupos de recursos
Utiliza POST ListAssetGroups para consultar la información de los grupos de recursos.
- Admite búsquedas aproximadas por los nombres de los grupos de recursos (
Name) o la especificación de varios grupos de recursos (GroupId). - Si hay varios grupos de recursos, se puede utilizar el campo
Namepara realizar búsquedas aproximadas.
ListAssetGroups admite paginación mediante NextToken y paginación por número de página. Para consultar los métodos de paginación, los parámetros y los ejemplos, véase la Referencia de la API de la biblioteca de retratos virtuales.package main
import (
"fmt"
"github.com/bytedance/sonic"
"github.com/byteplus-sdk/byteplus-go-sdk-v2/byteplus"
"github.com/byteplus-sdk/byteplus-go-sdk-v2/byteplus/credentials"
"github.com/byteplus-sdk/byteplus-go-sdk-v2/byteplus/session"
"github.com/byteplus-sdk/byteplus-go-sdk-v2/byteplus/universal"
)
func main () {
config := byteplus.NewConfig().WithCredentials(credentials.NewStaticCredentials( "<TU_AK>" , "<TU_SK>" , "" )).WithRegion( "ap-southeast-1" )
sess, _ := session.NewSession(config)
resp, err := universal.New(sess).DoCall(
universal.RequestUniversal{
ServiceName: "ark" ,
Action: "ListAssetGroups" ,
Version: "2024-01-01" ,
HttpMethod: universal.POST,
ContentType: universal.ApplicationJSON,
},
& map [ string ]any{
"Filter" : map [ string ]any{
"Name" : "<GRUPO_DEL_PERSONAJE>" , // Admite búsqueda aproximada
"GroupIds" : [] string { "group-20260324142802-*****" , "group-20260324142910-*****" },
"GroupType" : "AIGC" ,
},
"MaxResults" : 1 ,
"SortBy" : "CreateTime" ,
"SortOrder" : "Desc" ,
},
)
if err != nil {
fmt.Printf( "error: %v\n" , err)
return
}
if resp == nil {
return
}
respData, err := sonic.Marshal(resp)
fmt.Println( string (respData))
}
{
"Items": [
{
"UpdateTime": "2026-03-18T03:33:32Z",
"Id": "group-20260318033332-*****",
"Name": "grupo_personaje_1",
"Description": "Grupo del personaje 1",
"GroupType": "AIGC",
"ProjectName": "default",
"CreateTime": "2026-03-18T03:33:32Z"
}
],
"NextToken": "****bmNyeXB0ZWRfY3Vyc29yIjoiLi4****"
}
Actualizar o eliminar recursos o grupos de recursos
Puedes llamar a UpdateAsset, UpdateAssetGroup, DeleteAssety DeleteAssetGroup para actualizar o eliminar recursos y grupos de recursos.
Recomendamos consultar periódicamente LastInferenceTime mediante GetAsset o ListAssetsy eliminar de forma proactiva los recursos que lleven mucho tiempo sin utilizarse para ahorrar costes de almacenamiento.
Ejemplo: subir recursos y utilizar GetAsset para consultar su información
El siguiente ejemplo crea un recurso, consulta su estado y determina si debe seguir realizando consultas periódicas en función de ese estado. El código ejecuta la siguiente lógica:
- createAsset: subir los recursos y obtener AssetId
- waitForAssetActive: iniciar la consulta y llamar repetidamente a
getAssetStatuspara comprobar el estado actual del recurso - Decidir en función del estado:
Processing→ continuar consultando periódicamenteActive→ devolver la URL y terminar. Cuando el estado es Active, el identificador del recurso, en formato URI, puede utilizarse para generar vídeo.Failed→ devolver el error y terminar
- Devolver el resultado e imprimir la salida
BP_Upload_Asset_Get_Info.go — El resultado de la consulta se muestra a continuación:
estado del recurso: Active
el recurso está disponible, URL =
Ejemplos de código en otros lenguajes de programación
Descarga: bp-demo.zip
ListAssets, sustituye ACTION y BODY en el código del ejemplo.Generar vídeo con recursos de retratos
Una vez obtenido el identificador del recurso, se pueden utilizar los retratos privados para generar vídeo.
Para más información, consulta Utilizar personajes digitales predefinidos.
Utiliza la URI del recurso en el campo content._url.url de la API de generación de vídeo para generar un vídeo.
asset://<Asset_Id>Imagen 1 y Vídeo 1.No utilices directamente un identificador de recurso en el prompt.
Ejemplo: «La chica de la Imagen 1 lleva la ropa de la Imagen 2 y está colocando artículos sobre el mostrador…»
Ejemplo de código:
import os
import time
# Instalar el SDK: pip install arkruntime
from arkruntime import Ark
client = Ark(
# URL base para invocar el modelo
base_url="https://ark.ap-southeast.bytepluses.com/api/v3",
# Obtener una clave API: https://ai.byteplus.com/ark/region:ap-southeast-1/apikey
api_key=os.environ.get("ARK_API_KEY"),
)
if __name__ == "__main__":
print("----- crear solicitud -----")
create_result = client.content_generation.tasks.create(
model="dreamina-seedance-2-0-260128", # Sustituir por el identificador del modelo
content=[
{
"type": "text",
"text": "Vídeo vertical en alta definición y primer plano de una bloguera de belleza (Imagen 1). Lleva un maquillaje intenso y glamuroso, sin brillos ni reflejos en el rostro, y una sonrisa dulce. Sostiene un tarro de crema facial (Imagen 2) y lo presenta directamente a la cámara. El fondo es fresco y minimalista. Estilo enérgico y dulce. Voz en off en inglés: «¡He encontrado mi crema facial ideal! Tiene una textura cremosa como una nube que se absorbe al instante. Es perfecta para recuperarse después de una noche sin dormir, hidratar en profundidad y mantener la piel hidratada: ¡mi piel resplandece de forma natural incluso sin maquillaje!»"
},
{
"type": "image_url",
"image_url": {
"url": "asset://asset-20260225023032-gnzwk"
},
"role": "reference_image"
},
{
"type": "image_url",
"image_url": {
"url": "https://ark-doc.tos-ap-southeast-1.bytepluses.com/doc_image/r2v_ref_image.png"
},
"role": "reference_image"
},
],
generate_audio=True,
ratio="16:9",
duration=11,
watermark=True,
)
print(create_result)
print("----- consultar periódicamente el estado de la tarea -----")
task_id = create_result.id
while True:
get_result = client.content_generation.tasks.get(task_id=task_id)
status = get_result.status
if status == "succeeded":
print("----- tarea completada correctamente -----")
print(get_result)
break
elif status == "failed":
print("----- la tarea ha fallado -----")
print(f"Error: {get_result.error}")
break
else:
print(f"Estado actual: {status}. Nuevo intento en 30 segundos…")
time.sleep(30)

- Crear política.
- Nombre de la política: letras mayúsculas y minúsculas, números y los caracteres
+ = , . @ _ -; hasta 64 caracteres. - Descripción: admite letras, números y caracteres especiales; hasta 128 caracteres.
- Editor JSON · Importar una política existente.
- Total de caracteres: 76/6144.
- Enviar.
El bloque JSON conserva sus claves y valores técnicos; su contenido aparece también como texto copiable en el apartado de permisos IAM.





Preguntas frecuentes
1. ¿Por qué no es posible generar vídeo o consultar la información de los recursos después de haberlos subido correctamente?
La biblioteca de recursos está aislada por proyecto (ProjectName).
- Al generar vídeo, la inferencia debe realizarse mediante el punto de inferencia del proyecto donde está almacenado el recurso.
- Si la carga del recurso se completa correctamente, pero falla su consulta mediante la API, puede deberse a que se hayan especificado valores de
ProjectNamedistintos durante la carga y la consulta. - El valor predeterminado de
ProjectNameesdefault. Si no se especifica este campo, los recursos se crean en el proyectodefault. - Se recomienda gestionar los recursos dentro de un mismo proyecto.
Para obtener más información sobre los proyectos, consulta la documentación de IAM.
ProjectName no se especifica en la solicitud, el grupo de recursos se creará en el proyecto default de forma predeterminada.2. ¿Cómo se gestionan los permisos de los usuarios para la biblioteca de recursos?
Puedes utilizar Control de acceso (IAM) para gestionar de forma detallada las acciones de los usuarios en la biblioteca de recursos. La configuración puede personalizarse siguiendo estos pasos:
Crear una política personalizada
- Abre Control de acceso > Crear política.
- Introduce el nombre de la política.
- Cambia al editor JSON, pega en él la política personalizada que aparece a continuación y pulsa Enviar para guardarla.
{
"Statement": [
{
"Effect": "Allow",
"Action": [
"ark:*Asset*"
],
"Resource": [
"*"
]
}
]
}
Conceder permisos a usuarios o grupos de usuarios
- Pulsa Gestión de usuarios > Usuario / Grupo de usuariosy selecciona el usuario o grupo al que quieras conceder permisos.
- En Política, selecciona la política creada en el paso 1.
- (Opcional) En Limitar a los recursos del proyecto, selecciona el proyecto al que se aplica la política.
- Pulsa Enviar.
Después de completar estas acciones, el usuario o grupo podrá gestionar los recursos del proyecto correspondiente.
Para obtener más información sobre IAM, consulta la documentación de IAM.
3. ¿Cómo debo hacer referencia a los recursos subidos en el prompt (content.text)?
En el prompt, haz referencia a los recursos con el formato «tipo de recurso + índice», por ejemplo: Imagen 1, Vídeo 1, Audio 1.
Por ejemplo, el siguiente ejemplo incluye cinco imágenes de referencia y un archivo de audio de referencia. Utiliza este formato de prompt:
- Referencias: Imagen 1, Imagen 2, Imagen 3, Imagen 4, Imagen 5 y Audio 1
- Prompt: consulta el bloque de texto sin formato que aparece a continuación
Crea un drama corto fresco, con una estética de pintura cremosa y una pista de guitarra ligera y animada que marque cortes rápidos al ritmo de la música. Utiliza una base blanco crema con toques rosa melocotón, iluminación suave y sin efectos visuales: la emoción se transmite mediante las expresiones. 0–2 s: dos cortes rápidos. El director ejecutivo de Imagen 1 choca accidentalmente con la protagonista, que lleva la ropa de Imagen 2 y es el personaje de Imagen 3; ambos se quedan inmóviles y cruzan sus miradas. A continuación, un primer plano de las manos muestra cómo él se quita la chaqueta del traje y la coloca sobre los hombros de ella. Comienza una guitarra suave; se oyen efectos sonoros sutiles de una taza de café que cae y del roce de la tela. 2–6 s: tres cortes rápidos. La protagonista, envuelta en la chaqueta, baja la mirada y sonríe con timidez, con las mejillas sonrojadas, en primer plano; el director ejecutivo la observa de espaldas con una sonrisa tenue y dice «Vamos juntos», con un estilo de voz basado en Audio 1, en un plano de perfil; los dos comparten un paraguas negro bajo la lluvia, sus dedos se rozan y se separan enseguida, en un plano cercano. El fondo lluvioso toma como referencia Imagen 4; cada corte coincide con un toque suave de percusión y sonidos de lluvia y del paraguas, con una ligera apariencia de neblina. 6–8 s: se miran y sonríen a cámara lenta; la parte de texto de Imagen 5 aparece abajo a la derecha, y el texto pequeño «NUEVO EPISODIO CADA DÍA», abajo a la izquierda. Caen unos pocos pétalos rosa pálido; la guitarra concluye suavemente mientras la imagen se congela con ambos de perfil, uno junto al otro.
curl --location 'https://ark.ap-southeast-1.bytepluses.com/api/v3/contents/generations/tasks' \
-X POST \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $ARK_API_KEY" \
-d '
{
"model": "seedance-2-0-260128",
"content": [
{
"type": "text",
"text": "Crea un drama corto fresco, con una estética de pintura cremosa y una pista de guitarra ligera y animada que marque cortes rápidos al ritmo de la música. Utiliza una base blanco crema con toques rosa melocotón, iluminación suave y sin efectos visuales: la emoción se transmite mediante las expresiones. 0–2 s: dos cortes rápidos. El director ejecutivo de 【Imagen 1】 choca accidentalmente con la protagonista, que lleva la ropa de 【Imagen 2】 y es el personaje de 【Imagen 3】; ambos se quedan inmóviles y cruzan sus miradas. A continuación, un primer plano de las manos muestra cómo él se quita la chaqueta del traje y la coloca sobre los hombros de ella. Comienza una guitarra suave; se oyen efectos sonoros sutiles de una taza de café que cae y del roce de la tela. 2–6 s: tres cortes rápidos. La protagonista, envuelta en la chaqueta, baja la mirada y sonríe con timidez, con las mejillas sonrojadas, en primer plano; el director ejecutivo la observa de espaldas con una sonrisa tenue y dice «Vamos juntos», con un estilo de voz basado en 【Audio 1】, en un plano de perfil; los dos comparten un paraguas negro bajo la lluvia, sus dedos se rozan y se separan enseguida, en un plano cercano. El fondo lluvioso toma como referencia 【Imagen 4】; cada corte coincide con un toque suave de percusión y sonidos de lluvia y del paraguas, con una ligera apariencia de neblina. 6–8 s: se miran y sonríen a cámara lenta; la parte de texto de 【Imagen 5】 aparece abajo a la derecha, y el texto pequeño «NUEVO EPISODIO CADA DÍA», abajo a la izquierda. Caen unos pocos pétalos rosa pálido; la guitarra concluye suavemente mientras la imagen se congela con ambos de perfil, uno junto al otro."
},
{
"type": "image_url",
"role": "reference_image",
"image_url": {
"url": "asset://asset-20260224213248-ghm5g"
}
},
{
"type": "image_url",
"role": "reference_image",
"image_url": {
"url": "asset://asset-20260224213248-4lb57"
}
},
{
"type": "image_url",
"role": "reference_image",
"image_url": {
"url": "asset://asset-20260224213248-rc7b7"
}
},
{
"type": "image_url",
"role": "reference_image",
"image_url": {
"url": "asset://asset-20260224213248-wpgsn"
}
},
{
"type": "image_url",
"role": "reference_image",
"image_url": {
"url": "asset://asset-20260224213248-9wrmp"
}
},
{
"type": "audio_url",
"role": "reference_audio",
"audio_url": {
"url": "asset://asset-20260224213248-g5nv7"
}
}
],
"generate_audio": true,
"ratio": "16:9",
"duration": 11,
"watermark": false
}
'
Referencia de la API de la biblioteca de retratos virtuales
Para consultar todos los parámetros de la API, los esquemas de solicitud y respuesta, los códigos de error y los límites de solicitudes detallados, véase la documentación oficial: Referencia de la API de la biblioteca de retratos virtuales ↗.