Video y recursos

Crear video

Crea una tarea de generación de video

POST
/v1/videos/generations

Resumen

La generación de video es asíncrona. Envías una solicitud, recibes una task_id y un poll_url, y luego consultas periódicamente hasta obtener el resultado final.

Comportamiento de sondeo

Para el comportamiento de polling más fiable, usa exactamente el poll_url que devuelve la respuesta de creación.

Si una respuesta de creación devuelve poll_url, llama exactamente a esa URL. Cuando apunte a /v1/tasks/{id}, trátala como el endpoint fijo canónico de estado.

Comportamiento de modelos y medios

El audio depende del modelo y la operación. Un vídeo puede incluir sonido aunque no exista un selector. Omitirlo no equivale a enviar false.

  • veo3.1 y veo3.1-fast siempre generan audio según Gemini API. La generación de vídeo de wan-2.6 y wan-2.7 tampoco permite silenciarlo. Omite output_audio o usa true cuando la ficha del modelo lo permita.
  • hailuo-h3 y los modelos de vídeo Grok generan audio nativo. No añadas controles que no aparezcan en la ficha del modelo.
  • Seedance 1.5/2.x y viduq3-pro / viduq3-turbo activan audio por defecto y admiten salida silenciosa. PixVerse C1/V5.6/V6 lo desactivan por defecto. Usa output_audio solo en operaciones que lo declaren; Vidu también acepta su campo booleano declarado audio.
  • audio_url / audio_urls aportan audio de entrada o referencia, no controlan el sonido de salida. La edición, la transferencia de movimiento y de estilo pueden conservar la pista original. Conservar el audio original no significa silenciarlo.

Consulta valores permitidos y precios de audio en la ficha del modelo. Los alias admitidos outputAudio, generate_audio y el booleano audio deben coincidir con output_audio si se combinan. Los controles pueden variar entre versiones y operaciones.

Para integraciones en producción, es mejor usar URLs https públicas para imágenes, videos y audio. Los modelos compatibles siguen aceptando URLs data:, pero los payloads base64 grandes son más difíciles de reintentar, inspeccionar y depurar.

Cuerpo de la solicitud

modelstringpredeterminado: veo3.1

ID del modelo de video. Usa los IDs de modelo que muestra TokenLab como veo3.1, wan-2.7, happyhorse-1.0, viduq3, pixverse-v6 o kling-3.0-video; elige text-to-video, image-to-video, reference-to-video u otras variantes con operation. Consulta la guia de video y Models API.

PixVerse

  • Modelo: pixverse-c1, pixverse-v6, pixverse-v5.6
  • Operaciones: text-to-video, image-to-video, start-end-to-video, reference-to-video
  • Selector de audio: output_audio, false por defecto

En TokenLab, los modelos PixVerse anteriores no aceptan operation=video-extension.

HappyHorse

  • Modelo: happyhorse-1.0
  • Operaciones: text-to-video, image-to-video, reference-to-video, video-to-video
  • Selector de audio: No enviar output_audio
promptstring

Descripción en texto del video que quieres generar. Este campo es obligatorio para la mayoría de los modelos públicos de video.

operationstring

Operación de video que se va a ejecutar. Los valores admitidos son text-to-video, image-to-video, reference-to-video, start-end-to-video, video-to-video, video-extension, audio-to-video y motion-control. TokenLab puede inferir la operación a partir de las entradas, pero en producción se recomienda enviarla de forma explícita.

image_urlstring

URL pública de la imagen inicial para flujos image-to-video. Para la compatibilidad más amplia entre modelos, conviene preferir image_url.

imagestring

Imagen inline como URL data: (por ejemplo, data:image/jpeg;base64,...). Los modelos compatibles la aceptan, pero image_url suele ser más robusta en producción.

reference_imagesarray

Imágenes de referencia para flujos con condicionamiento dedicado. La cantidad admitida depende del modelo. Para seedance-2.0 y seedance-2.0-fast, TokenLab admite actualmente hasta 9 imágenes de referencia, además de hasta 3 videos de referencia y 3 audios de referencia. Para selección de modelo, límites 4K y notas de Mini, consulta la guía de modelos de video Seedance 2.0. Se recomiendan URLs públicas https; los modelos compatibles también aceptan URLs data:. Para grok-imagine-video, reference-to-video acepta hasta 7 referencias de imagen y duration está limitada a 10 segundos. grok-imagine-video-1.5-preview solo admite image-to-video y no acepta referencias de imagen.

material_asset_idstring

ID de material Seedance de TokenLab devuelto por Crear material. Úsalo después de que el material esté ACTIVE con modelos Seedance que puedan usar la biblioteca de materiales de TokenLab.

material_asset_idsarray

Varios IDs de material Seedance de TokenLab. Comparten el límite de referencias de imagen de Seedance con reference_images; el modelo seleccionado debe poder usar la biblioteca de materiales de TokenLab.

Las URL de imagen normales se usan como entradas y no crean materiales reutilizables automáticamente. Créelos mediante la API de materiales y use sus ID TokenLab o URI asset://asset-YYYYMMDDHHMMSS-xxxxx. Si los materiales explícitos devuelven 409 seedance_material_preparing, consulte los inactive_asset_ids y reintente cuando estén ACTIVE.

reference_image_typestring

Campo opcional para modelos que distinguen entre referencias asset y style.

kling_elementsarray

Use kling_elements solo si los detalles públicos actuales del modelo incluyen este campo. Envíe imágenes y entre 1 y 3 elementos con name, description opcional y entre 2 y 4 element_input_urls; use @name en prompt. No lo combine con output_audio=true.

video_urlstring

URL pública del video de origen. Requerida para flujos video-to-video basados en URL de video y para motion-control; algunos flujos derivados usan task_id en su lugar.

video_urlsarray

Entradas adicionales de video de referencia para modelos con condicionamiento multimodal. La cantidad admitida depende del modelo. Para seedance-2.0 y seedance-2.0-fast, TokenLab admite actualmente hasta 3 videos de referencia.

audio_urlstring

URL pública de audio para una operación guiada por audio o una referencia admitida por el modelo.

audio_urlsarray

Entradas adicionales de audio de referencia para modelos con condicionamiento multimodal. La cantidad admitida depende del modelo. Para seedance-2.0 y seedance-2.0-fast, TokenLab admite actualmente hasta 3 audios de referencia.

task_idstring

Identificador de tarea usado por algunos flujos de continuación, extensión o derivados.

extend_atinteger

Desplazamiento inicial específico del modelo para algunos flujos video-extension.

extend_timesstring

Multiplicador o número de repeticiones específico del modelo para algunos flujos video-extension.

durationinteger

Duración del video generado en segundos. Para modelos Seedance 1.5/2.0, omitir este campo usa 5; enviar -1 permite que el modelo elija dentro de su rango admitido, y la facturación se estima de forma conservadora hasta que finaliza la tarea.

secondsinteger

Alias compatible de duration. Si envías seconds y duration, ambos deben ser idénticos. Para Seedance, seconds=-1 tiene el mismo significado de duración automática que duration=-1.

aspect_ratiostring

Relación de aspecto canónica, por ejemplo adaptive, 16:9, 9:16, 1:1, 4:3, 3:4 o 21:9. Seedance usa adaptive por defecto cuando se omite.

resolutionstring

Resolución de salida dependiente del modelo. Seedance usa 720p por defecto; seedance-2.0 admite 480p, 720p, 1080p y 4k, mientras que seedance-2.0-fast y seedance-2.0-mini se limitan a 480p y 720p.

output_audioboolean

Selector de audio para operaciones que declaren este campo. Si se omite, se usa el comportamiento predeterminado del modelo. false solicita silencio solo cuando se permite. Consulta la explicación anterior y la ficha del modelo.

draftboolean

Indicador del flujo Draft de Seedance 1.5 Pro. Usa draft=true con modelos Seedance que admiten tareas draft. No lo envíes junto con draft_task_id.

draft_task_idstring

ID de tarea draft de Seedance 1.5 Pro para promoción. Envía el ID de una tarea draft anterior para crear el video final; no es un campo genérico de video.

ratiostring

Alias compatible de aspect_ratio. Si se envían ratio y aspect_ratio, deben ser idénticos.

generate_audioboolean

Alias compatible de output_audio. Si aparecen generate_audio, output_audio y outputAudio, todos los valores deben coincidir.

execution_expires_afterinteger

Tiempo opcional de expiración de ejecución en segundos para modelos de video compatibles. Seedance usa 172800 segundos por defecto cuando se omite.

priorityinteger

Prioridad opcional de la tarea de 0 a 9 para modelos de video compatibles. No combines priority con service_tier=flex.

safety_identifierstring

Identificador opcional de seguridad del usuario final para modelos de video compatibles. Si se omite en Seedance, TokenLab usa user cuando está disponible.

service_tierstring

default se acepta como no-op compatible para modelos Seedance 2.0. flex solo se permite cuando el modelo seleccionado lo admite.

framesinteger

Recuento opcional de fotogramas para modelos de video compatibles. Los modelos Seedance 2.0 y Seedance 1.5 Pro no admiten este campo.

camera_fixedboolean

Selector opcional de cámara fija para modelos de video compatibles. Los modelos Seedance 2.0 no admiten este campo.

fpsinteger

Fotogramas por segundo (1-120). Solo surte efecto en los modelos que exponen FPS.

negative_promptstring

Elementos que deben evitarse en el video generado.

seedinteger

Semilla aleatoria para generación reproducible. Seedance usa -1 como semilla aleatoria cuando se omite.

cfg_scalenumber

Intensidad de adherencia al prompt (0-20) en los modelos que exponen este control.

motion_strengthnumber

Intensidad del movimiento (0-1) en los modelos que exponen este control.

start_imagestring

URL de la imagen del primer fotograma, o entrada compatible, para start-end-to-video.

end_imagestring

URL de la imagen del último fotograma, o entrada compatible, para start-end-to-video.

sizestring

Nivel de tamaño específico del modelo para modelos de video compatibles.

watermarkboolean

Control opcional de marca de agua para modelos que lo exponen. Seedance usa false por defecto cuando se omite.

effect_typestring

Selector de efecto específico del modelo para algunos flujos especializados de edición o efectos.

userstring

Identificador único del usuario final. Para Seedance, TokenLab también usa este valor como safety_identifier cuando ese campo se omite.

Notas de compatibilidad

  • Los campos públicos canónicos están en snake_case: reference_images, reference_image_type y output_audio.
  • Los campos públicos canónicos siguen usando snake_case: aspect_ratio, output_audio, reference_images y reference_image_type.
  • Por compatibilidad, TokenLab también acepta ratio, generate_audio, outputAudio, seconds, referenceImages y referenceImageType.
  • Si se envían campos canónicos y alias al mismo tiempo, sus valores deben coincidir; los alias en conflicto se rechazan antes de crear la tarea.

Buenas prácticas para entradas de medios

  • Para image_url, reference_images, video_url y audio_url, es preferible usar URLs https públicas.
  • Siempre que sea posible, evita mezclar base64 inline y URLs remotas en la misma solicitud.
  • Asegúrate de que las URLs multimedia remotas sigan siendo válidas durante los reintentos y la creación asíncrona de tareas.

Parámetros de Seedance

Para modelos Seedance 1.5/2.0, el endpoint unificado sigue los nombres de campos de TokenLab y acepta los alias compatibles seconds, ratio y generate_audio. Si se omiten los selectores de Seedance, se usan estos valores por defecto: duration=5, resolution=720p, aspect_ratio=adaptive, output_audio=true, watermark=false, return_last_frame=false, execution_expires_after=172800, priority=0 y seed=-1.

duration=-1 o seconds=-1 permite que Seedance elija la duración de salida dentro del rango admitido por el modelo. TokenLab estima el coste de forma conservadora antes de que finalice la tarea y luego liquida según el uso de la tarea completada cuando está disponible. service_tier=default se acepta como no-op compatible para Seedance 2.0; service_tier=flex, frames y camera_fixed se rechazan cuando el modelo seleccionado no los admite.

Ejemplo de Seedance

cURL
curl -X POST "https://api.tokenlab.sh/v1/videos/generations" \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2.5",
    "prompt": "A sleek product reveal with cinematic camera movement",
    "operation": "text-to-video",
    "duration": -1,
    "aspect_ratio": "adaptive",
    "resolution": "720p",
    "output_audio": true
  }'

Respuesta

Los campos de resultado, error, marcas de tiempo y modelo se devuelven cuando están disponibles para la tarea.

idstring

Identificador canónico de la tarea asíncrona. Cuando id y task_id estén presentes a la vez, considéralos la misma tarea.

task_idstring

Identificador único de la tarea para hacer polling.

poll_urlstring

URL de polling recomendada para esta tarea. Usa exactamente esta ruta al consultar el estado.

billing_transaction_idstring

ID de transacción de facturación de TokenLab cuando la liquidación ya terminó. Es el identificador de dashboard/contabilidad y es distinto del id / task_id asíncrono.

statusstring

Estado de la tarea: pending, processing, completed, failed.

createdinteger

Marca de tiempo Unix de creación de la tarea.

modelstring

Modelo utilizado.

videoobject

Objeto de video único con url, duration, width y height cuando estén disponibles.

videosarray

Múltiples cargas útiles de video cuando la tarea de generación devuelve más de una salida.

errorstring | object

Mensaje de error (si falla).

Solicitud

cURL
curl -X POST "https://api.tokenlab.sh/v1/videos/generations" \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "veo3.1",
    "prompt": "A cat walking through a garden, cinematic lighting",
    "operation": "text-to-video",
    "duration": 4,
    "aspect_ratio": "16:9"
  }'

Respuesta

Response
{
  "id": "ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "task_id": "ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "poll_url": "/v1/tasks/ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "status": "pending",
  "model": "veo3.1",
  "created": 1706000000
}

Imagen a video

response = requests.post(
    "https://api.tokenlab.sh/v1/videos/generations",
    headers={"Authorization": "Bearer sk-your-api-key"},
    json={
        "model": "hailuo-2.3-standard",
        "prompt": "The scene begins from the provided image and adds gentle natural motion.",
        "operation": "image-to-video",
        "image_url": "https://example.com/image.jpg",
        "duration": 6,
        "resolution": "768p"
    }
)

Elementos de Kling 3.0

Use kling_elements solo si los detalles públicos actuales del modelo incluyen este campo. Envíe imágenes y entre 1 y 3 elementos con name, description opcional y entre 2 y 4 element_input_urls; use @name en prompt. No lo combine con output_audio=true.

Referencia a video

Usa operation=reference-to-video cuando el modelo admita condicionamiento de referencia dedicado. En los detalles del modelo de TokenLab, las referencias de imagen se envían mediante reference_images, mientras que los videos y audios de referencia multimodales se envían mediante video_urls y audio_urls. Para seedance-2.0 y seedance-2.0-fast, TokenLab admite actualmente hasta 9 imágenes de referencia, además de hasta 3 videos de referencia y 3 audios de referencia. Para selección de modelo, límites 4K y notas de Mini, consulta la guía de modelos de video Seedance 2.0. duration solo controla la duración del resultado generado; no fija un límite independiente para la duración del video de referencia de entrada. Para grok-imagine-video, reference-to-video acepta hasta 7 referencias de imagen (reference_images o image_urls) y duration está limitada a 10 segundos. No combines referencias de imagen con entradas de primer fotograma image_url / image. grok-imagine-video-1.5-preview solo admite image-to-video.

response = requests.post(
    "https://api.tokenlab.sh/v1/videos/generations",
    headers={"Authorization": "Bearer sk-your-api-key"},
    json={
        "model": "veo3.1",
        "prompt": "Keep the same subject identity, palette, and framing while adding subtle natural motion.",
        "operation": "reference-to-video",
        "reference_images": [
            "https://example.com/ref-a.jpg",
            "https://example.com/ref-b.jpg"
        ],
        "reference_image_type": "asset",
        "duration": 8,
        "resolution": "720p",
        "aspect_ratio": "9:16"
    }
)

Control de fotograma inicial y final

Usa start_image y end_image para controlar el primer y el último fotograma.

response = requests.post(
    "https://api.tokenlab.sh/v1/videos/generations",
    headers={"Authorization": "Bearer sk-your-api-key"},
    json={
        "model": "viduq2-pro",
        "operation": "start-end-to-video",
        "start_image": "https://example.com/day.jpg",
        "end_image": "https://example.com/night.jpg",
        "duration": 5,
        "resolution": "720p",
        "aspect_ratio": "16:9"
    }
)

Video a video

Para video-to-video con grok-imagine-video, envía una URL HTTPS pública .mp4 en video_url. Puedes definir resolution como 480p o 720p; duration y aspect_ratio no se aceptan en ese flujo de edición.

Cuando un modelo acepta un video existente como entrada principal, usa operation=video-to-video.

response = requests.post(
    "https://api.tokenlab.sh/v1/videos/generations",
    headers={"Authorization": "Bearer sk-your-api-key"},
    json={
        "model": "grok-imagine-video",
        "operation": "video-to-video",
        "video_url": "https://example.com/source.mp4",
        "prompt": "Enhance the clip while preserving the original motion."
    }
)

Control de movimiento

Cuando un modelo necesita tanto una imagen del sujeto como un video de referencia de movimiento, usa operation=motion-control. TokenLab normaliza la forma pública image_url + video_url al formato motion-control de ese modelo.

response = requests.post(
    "https://api.tokenlab.sh/v1/videos/generations",
    headers={"Authorization": "Bearer sk-your-api-key"},
    json={
        "model": "kling-3.0-motion-control",
        "operation": "motion-control",
        "prompt": "Keep the subject stable while following the motion reference.",
        "image_url": "https://example.com/subject.png",
        "video_url": "https://example.com/motion.mp4",
        "resolution": "720p"
    }
)

Descubrimiento de modelos

El inventario público de video y las operaciones admitidas cambian con el tiempo. Usa la Models API como referencia actual antes de implementar un flujo específico de un modelo:

curl "https://api.tokenlab.sh/v1/models?recommended_for=video"

curl "https://api.tokenlab.sh/v1/models/veo3.1"

Lee la respuesta de detalle del modelo antes de depender de operaciones o campos específicos del modelo. Operaciones como audio-to-video y video-extension dependen del modelo; confirma allí la disponibilidad actual en lugar de depender de ejemplos estáticos de esta página.

Autorización

BearerAuth
AuthorizationBearer <token>

Autenticación con API Key. Cree o gestione API keys en Dashboard > API > API Keys.

Ubicación: header

Encabezados

X-TokenLab-Delivery-Policy?string

Política de entrega por solicitud. Sustituye los valores predeterminados de la API key y del Workspace. Auto intenta primero con TokenLab Verified y puede cambiar una vez a Official solo antes de la salida, la aceptación de la solicitud o la creación de recursos persistentes.

Valores permitidos

  • "auto"
  • "verified"
  • "official"

Cuerpo de la solicitud

application/json

Respuesta

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json