Vídeo e materiais

Criar vídeo

Cria uma tarefa de geração de vídeo

POST
/v1/videos/generations

Visão geral

A geração de vídeo é assíncrona. Você envia uma solicitação, recebe uma task_id e um poll_url, e então faz polling até obter o resultado final.

Comportamento de polling

Para o comportamento de polling mais confiável, use exatamente o poll_url retornado pela resposta de criação.

Se uma resposta de criação retornar poll_url, chame exatamente essa URL. Quando ela apontar para /v1/tasks/{id}, trate-a como o endpoint fixo canônico de status.

Comportamento de modelos e mídia

O áudio depende do modelo e da operação. Um vídeo pode conter som mesmo sem um seletor de áudio. Omitir o campo não equivale a enviar false.

  • veo3.1 e veo3.1-fast sempre geram áudio conforme a Gemini API. A geração de vídeo de wan-2.6 e wan-2.7 também não permite silenciar. Omita output_audio ou use true quando os detalhes do modelo permitirem.
  • hailuo-h3 e os modelos de vídeo Grok geram áudio nativo. Não adicione seletores ausentes dos detalhes do modelo.
  • Seedance 1.5/2.x e viduq3-pro / viduq3-turbo ativam áudio por padrão e permitem saída silenciosa. PixVerse C1/V5.6/V6 desativam áudio por padrão. Use output_audio apenas nas operações que o declaram; Vidu também aceita seu campo booleano declarado audio.
  • audio_url / audio_urls fornecem áudio de entrada ou referência, não são controles de saída. Edição, transferência de movimento e de estilo podem manter a faixa original. Preservar o áudio original não significa silenciar.

Consulte os detalhes do modelo para valores permitidos e preços de áudio. Os aliases compatíveis outputAudio, generate_audio e o booleano audio devem coincidir com output_audio quando combinados. Versões e operações podem ter controles diferentes.

Em integrações de produção, prefira URLs https públicas para imagens, vídeos e áudio. Modelos compatíveis continuam aceitando URLs data:, mas payloads base64 grandes dificultam retry, observabilidade e depuração.

Corpo da requisição

modelstringpadrão: veo3.1

ID do modelo de video. Use IDs logicos de produto como veo3.1, wan-2.7, happyhorse-1.0, viduq3, pixverse-v6 ou kling-3.0-video; escolha text-to-video, image-to-video, reference-to-video ou outras variantes com operation. Consulte o guia de video e a Models API.

PixVerse

  • Modelo: pixverse-c1, pixverse-v6, pixverse-v5.6
  • Operações: text-to-video, image-to-video, start-end-to-video, reference-to-video
  • Seletor de áudio: output_audio, padrão false

No TokenLab, os modelos PixVerse acima não aceitam operation=video-extension.

HappyHorse

  • Modelo: happyhorse-1.0
  • Operações: text-to-video, image-to-video, reference-to-video, video-to-video
  • Seletor de áudio: Não envie output_audio
promptstring

Descrição em texto do vídeo a ser gerado. Este campo é obrigatório para a maioria dos modelos públicos de vídeo.

operationstring

Operação de vídeo a ser executada. O detalhes do modelo suporta text-to-video, image-to-video, reference-to-video, start-end-to-video, video-to-video, video-extension, audio-to-video e motion-control. A TokenLab pode inferir a operação a partir das entradas, mas em produção o ideal é informá-la explicitamente.

image_urlstring

URL pública da imagem inicial para fluxos image-to-video. Para a compatibilidade mais ampla entre modelos, prefira image_url.

imagestring

Imagem inline como URL data: (por exemplo, data:image/jpeg;base64,...). Modelos compatíveis aceitam esse formato, mas image_url costuma ser mais robusto em produção.

reference_imagesarray

Imagens de referência para fluxos com condicionamento dedicado. A quantidade suportada depende do modelo. Para seedance-2.0 e seedance-2.0-fast, a TokenLab suporta atualmente até 9 imagens de referência, além de até 3 vídeos de referência e 3 áudios de referência. Para escolha de modelo, limites de 4K e notas sobre Mini, consulte o guia de modelos de vídeo Seedance 2.0. Recomendam-se URLs públicas https; modelos compatíveis também aceitam URLs data:. Para grok-imagine-video, reference-to-video aceita até 7 referências de imagem e duration é limitado a 10 segundos. grok-imagine-video-1.5-preview é apenas image-to-video e não aceita referências de imagem.

material_asset_idstring

ID de material Seedance do TokenLab retornado por Criar material. Use-o após o material ficar ACTIVE com modelos Seedance que possam usar a biblioteca de materiais do TokenLab.

material_asset_idsarray

Vários IDs de material Seedance do TokenLab. Eles compartilham o limite de referências de imagem do Seedance com reference_images; o modelo selecionado precisa poder usar a biblioteca de materiais do TokenLab.

URLs de imagens comuns são entradas e não criam materiais reutilizáveis automaticamente. Crie os materiais pela API de materiais e use seus IDs TokenLab ou URIs asset://asset-YYYYMMDDHHMMSS-xxxxx. Se materiais explícitos retornarem 409 seedance_material_preparing, consulte os inactive_asset_ids e tente novamente após ficarem ACTIVE.

reference_image_typestring

Campo opcional para modelos que distinguem entre referências asset e style.

kling_elementsarray

Use kling_elements somente quando os detalhes públicos atuais do modelo incluírem esse campo. Envie imagens e 1–3 elementos com name, description opcional e 2–4 element_input_urls; use @name em prompt. Não combine com output_audio=true.

video_urlstring

URL pública do vídeo de origem. Necessária para fluxos video-to-video baseados em URL de vídeo e para motion-control; alguns fluxos derivados usam task_id em vez disso.

video_urlsarray

Entradas adicionais de vídeo de referência para modelos com condicionamento multimodal. A quantidade suportada depende do modelo. Para seedance-2.0 e seedance-2.0-fast, a TokenLab suporta atualmente até 3 vídeos de referência.

audio_urlstring

URL pública de áudio para uma operação guiada por áudio ou referência de áudio compatível com o modelo.

audio_urlsarray

Entradas adicionais de áudio de referência para modelos com condicionamento multimodal. A quantidade suportada depende do modelo. Para seedance-2.0 e seedance-2.0-fast, a TokenLab suporta atualmente até 3 áudios de referência.

task_idstring

Identificador de tarefa usado por alguns fluxos de continuação, extensão ou derivados.

extend_atinteger

Deslocamento inicial específico do modelo para alguns fluxos video-extension.

extend_timesstring

Multiplicador ou quantidade de repetições específica do modelo para alguns fluxos video-extension.

durationinteger

Duração do vídeo de saída gerado, em segundos. Para modelos Seedance 1.5/2.0, omitir este campo usa 5; enviar -1 permite que o modelo escolha dentro da faixa suportada, e a cobrança é estimada de forma conservadora até a tarefa terminar.

secondsinteger

Alias compatível de duration. Se seconds e duration forem enviados juntos, os valores devem ser idênticos. Para Seedance, seconds=-1 tem o mesmo significado de duração automática que duration=-1.

aspect_ratiostring

Proporção canônica, por exemplo adaptive, 16:9, 9:16, 1:1, 4:3, 3:4 ou 21:9. Seedance usa adaptive por padrão quando omitido.

resolutionstring

Resolução de saída dependente do modelo. Seedance usa 720p por padrão; seedance-2.0 aceita 480p, 720p, 1080p e 4k, enquanto seedance-2.0-fast e seedance-2.0-mini são limitados a 480p e 720p.

output_audioboolean

Seletor de saída de áudio para operações que declaram este campo. A omissão usa o padrão do modelo; false solicita silêncio apenas quando permitido. Consulte as orientações acima e os detalhes do modelo.

draftboolean

Flag do fluxo Draft do Seedance 1.5 Pro. Use draft=true com modelos Seedance que oferecem suporte a tarefas draft. Não envie junto com draft_task_id.

draft_task_idstring

ID da tarefa draft do Seedance 1.5 Pro para promoção. Envie o ID de uma tarefa draft anterior para criar o vídeo final; este não é um campo genérico de vídeo.

ratiostring

Alias compatível de aspect_ratio. Se ratio e aspect_ratio forem enviados juntos, devem ser idênticos.

generate_audioboolean

Alias compatível de output_audio. Se generate_audio, output_audio e outputAudio aparecerem juntos, todos os valores devem corresponder.

execution_expires_afterinteger

Janela opcional de expiração de execução em segundos para modelos de vídeo compatíveis. Seedance usa 172800 segundos por padrão quando omitido.

priorityinteger

Prioridade opcional da tarefa de 0 a 9 para modelos de vídeo compatíveis. Não combine priority com service_tier=flex.

safety_identifierstring

Identificador opcional de segurança do usuário final para modelos de vídeo compatíveis. Se omitido para Seedance, TokenLab usa user quando fornecido.

service_tierstring

default é aceito como no-op compatível para modelos Seedance 2.0. flex só é permitido quando o modelo selecionado oferece suporte.

framesinteger

Contagem opcional de frames para modelos de vídeo compatíveis. Modelos Seedance 2.0 e Seedance 1.5 Pro não aceitam este campo.

camera_fixedboolean

Seletor opcional de câmera fixa para modelos de vídeo compatíveis. Modelos Seedance 2.0 não aceitam este campo.

fpsinteger

Quadros por segundo (1-120). Só tem efeito em modelos que expõem controle de FPS.

negative_promptstring

Elementos que devem ser evitados no vídeo gerado.

seedinteger

Seed aleatória para geração reproduzível. Seedance usa -1 como seed aleatória quando omitida.

cfg_scalenumber

Intensidade de aderência ao prompt (0-20) nos modelos que expõem esse controle.

motion_strengthnumber

Intensidade de movimento (0-1) nos modelos que expõem esse controle.

start_imagestring

URL da imagem do primeiro quadro, ou entrada compatível, para start-end-to-video.

end_imagestring

URL da imagem do último quadro, ou entrada compatível, para start-end-to-video.

sizestring

Nível de tamanho específico do modelo para modelos de vídeo compatíveis.

watermarkboolean

Alternância opcional de marca d’água para modelos que a expõem. Seedance usa false por padrão quando omitido.

effect_typestring

Seletor de efeito específico do modelo para alguns fluxos especializados de edição ou efeitos.

userstring

Identificador único do usuário final. Para Seedance, TokenLab também usa esse valor como safety_identifier quando esse campo é omitido.

Notas de compatibilidade

  • Os campos públicos canônicos usam snake_case: reference_images, reference_image_type e output_audio.
  • Os campos públicos canônicos continuam em snake_case: aspect_ratio, output_audio, reference_images e reference_image_type.
  • Por compatibilidade, TokenLab também aceita ratio, generate_audio, outputAudio, seconds, referenceImages e referenceImageType.
  • Se campos canônicos e aliases forem enviados juntos, seus valores devem coincidir; aliases conflitantes são rejeitados antes da criação da tarefa.

Boas práticas para entradas de mídia

  • Para image_url, reference_images, video_url e audio_url, prefira URLs https públicas.
  • Sempre que possível, evite misturar base64 inline e URLs remotas na mesma requisição.
  • Garanta que URLs remotas de mídia permaneçam válidas durante retries e criação assíncrona da tarefa.

Parâmetros Seedance

Para modelos Seedance 1.5/2.0, o endpoint unificado segue os nomes de campo do TokenLab e aceita os aliases compatíveis seconds, ratio e generate_audio. Seletores Seedance omitidos usam estes padrões: duration=5, resolution=720p, aspect_ratio=adaptive, output_audio=true, watermark=false, return_last_frame=false, execution_expires_after=172800, priority=0 e seed=-1.

duration=-1 ou seconds=-1 permite que Seedance escolha a duração de saída dentro da faixa suportada pelo modelo. TokenLab estima o custo de forma conservadora antes da tarefa terminar e depois liquida pelo usage da tarefa concluída quando disponível. service_tier=default é aceito como no-op compatível para Seedance 2.0; service_tier=flex, frames e camera_fixed são rejeitados quando o modelo selecionado não oferece suporte.

Exemplo 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
  }'

Resposta

Campos de resultado, erro, timestamps e modelo são retornados quando disponíveis para a tarefa.

idstring

Identificador canônico da tarefa assíncrona. Quando id e task_id estiverem presentes juntos, trate-os como a mesma tarefa.

task_idstring

Identificador único da tarefa para polling.

poll_urlstring

URL de polling recomendada para esta tarefa. Use exatamente esse caminho ao consultar o status.

billing_transaction_idstring

ID de transação de faturamento da TokenLab quando a liquidação já foi concluída. Este é o identificador usado no dashboard / conciliação e é separado do id / task_id assíncrono.

statusstring

Status da tarefa: pending, processing, completed, failed.

createdinteger

Timestamp Unix de criação da tarefa.

modelstring

Modelo utilizado.

videoobject

Objeto único de vídeo com url, duration, width e height quando disponíveis.

videosarray

Múltiplos objetos de vídeo quando a tarefa de geração retornar mais de uma saída.

errorstring | object

Mensagem de erro (em caso de falha).

Requisição

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"
  }'

Resposta

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

Imagem para vídeo

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 do Kling 3.0

Use kling_elements somente quando os detalhes públicos atuais do modelo incluírem esse campo. Envie imagens e 1–3 elementos com name, description opcional e 2–4 element_input_urls; use @name em prompt. Não combine com output_audio=true.

Referência para vídeo

Use operation=reference-to-video quando o modelo suportar condicionamento dedicado por referência. No detalhes do modelo da TokenLab, referências de imagem usam reference_images, enquanto vídeos e áudios de referência multimodais usam video_urls e audio_urls. Para seedance-2.0 e seedance-2.0-fast, a TokenLab suporta atualmente até 9 imagens de referência, além de até 3 vídeos de referência e 3 áudios de referência. Para escolha de modelo, limites de 4K e notas sobre Mini, consulte o guia de modelos de vídeo Seedance 2.0. duration controla apenas a duração do resultado gerado; ele não define um limite separado para a duração do vídeo de referência de entrada. Para grok-imagine-video, reference-to-video aceita até 7 referências de imagem (reference_images ou image_urls) e duration é limitado a 10 segundos. Não combine referências de imagem com entradas de primeiro frame image_url / image. grok-imagine-video-1.5-preview é apenas 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"
    }
)

Controle de quadro inicial e final

Use start_image e end_image para controlar o primeiro e o último quadro.

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"
    }
)

Vídeo para vídeo

Para video-to-video com grok-imagine-video, envie uma URL HTTPS pública .mp4 em video_url. Você pode definir resolution como 480p ou 720p; duration e aspect_ratio não são aceitos nesse fluxo de edição.

Quando um modelo aceita um vídeo existente como entrada principal, use 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."
    }
)

Controle de movimento

Quando um modelo precisa tanto de uma imagem do sujeito quanto de um vídeo de referência de movimento, use operation=motion-control. A TokenLab normaliza a forma pública image_url + video_url para o formato de solicitação esperado pelo 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"
    }
)

Descoberta de modelos

O inventário público de vídeo e as operações compatíveis mudam com o tempo. Use a Models API como referência atual antes de integrar um fluxo específico de modelo:

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

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

Leia tokenlab.capabilities e tokenlab.supported_operations na resposta de detalhe do modelo. Operações como audio-to-video e video-extension são específicas de cada modelo; confirme a disponibilidade atual ali, em vez de depender de exemplos estáticos desta página.

Autorização

BearerAuth
AuthorizationBearer <token>

Autenticação por Chave de API. Crie ou gerencie chaves de API em Dashboard > API > API Keys.

Local: header

Cabeçalhos

X-TokenLab-Delivery-Policy?string

Política de entrega por solicitação. Substitui os padrões da API key e do Workspace. Tenta automaticamente o TokenLab Verified primeiro e pode alternar uma vez para Official apenas antes da saída, aceitação da solicitação ou criação de recurso persistente.

Valores permitidos

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

Corpo da requisição

application/json

Resposta

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json