TokenLab

Vidéo & ressources

Créer une vidéo

Crée une tâche de génération vidéo

POST
/v1/videos/generations

Vue d’ensemble

La génération vidéo est asynchrone. Une fois la requête envoyée, vous recevez un task_id et un poll_url, puis vous interrogez ce task jusqu’au résultat final.

Comportement de polling

Pour un polling fiable, utilisez exactement le poll_url renvoyé par la requête de création.

Si une réponse de création renvoie poll_url, appelez exactement cette URL. Lorsqu’elle pointe vers /v1/tasks/{id}, traitez-la comme l’endpoint fixe canonique de statut.

Comportement des modèles et des médias

Le comportement audio dépend du modèle et de l’opération. Une vidéo peut contenir du son sans sélecteur audio. Omettre un champ n’équivaut pas à envoyer false.

  • veo3.1 et veo3.1-fast génèrent toujours du son selon le contrat Gemini API. La génération vidéo de wan-2.6 et wan-2.7 ne permet pas non plus de désactiver le son. Omettez output_audio ou utilisez true si la fiche du modèle le permet.
  • hailuo-h3 et les modèles vidéo Grok génèrent du son natif. N’ajoutez pas de sélecteur absent de la fiche du modèle.
  • Seedance 1.5/2.x et viduq3-pro / viduq3-turbo activent le son par défaut et permettent une sortie silencieuse. PixVerse C1/V5.6/V6 désactivent le son par défaut. Utilisez output_audio uniquement pour les opérations qui le déclarent ; Vidu accepte aussi son champ booléen déclaré audio.
  • audio_url / audio_urls fournissent une entrée ou une référence audio, pas un interrupteur de sortie. Le montage, le transfert de mouvement et de style peuvent conserver la piste d’origine. Conserver le son d’origine ne signifie pas le couper.

Consultez la fiche du modèle pour les valeurs autorisées et les tarifs audio. Les alias pris en charge outputAudio, generate_audio et le booléen audio doivent correspondre à output_audio lorsqu’ils sont combinés. Les contrôles varient selon la version et l’opération.

En production, privilégiez des URLs https publiques pour les images, vidéos et fichiers audio. Les modèles compatibles acceptent toujours les data: URLs, mais les gros payloads base64 compliquent les retries, l’observabilité et le débogage.

Corps de la requête

modelstringpar défaut: veo3.1

ID du modele video. Utilisez les IDs de modèle affichés par TokenLab comme veo3.1, wan-2.7, happyhorse-1.0, viduq3, pixverse-v6 ou kling-3.0-video; choisissez text-to-video, image-to-video, reference-to-video ou d autres variantes avec operation. Voir le guide video et Models API.

PixVerse

  • Modèle: pixverse-c1, pixverse-v6, pixverse-v5.6
  • Opérations: text-to-video, image-to-video, start-end-to-video, reference-to-video
  • Sélecteur audio: output_audio, false par défaut

Sur TokenLab, les modèles PixVerse ci-dessus n'acceptent pas operation=video-extension.

HappyHorse

  • Modèle: happyhorse-1.0
  • Opérations: text-to-video, image-to-video, reference-to-video, video-to-video
  • Sélecteur audio: Ne pas envoyer output_audio
promptstring

Description textuelle de la vidéo à générer. Ce champ est requis pour la plupart des modèles publics.

operationstring

Opération vidéo à exécuter. Les valeurs acceptées sont text-to-video, image-to-video, reference-to-video, start-end-to-video, video-to-video, video-extension, audio-to-video et motion-control. TokenLab peut déduire l’opération à partir des entrées, mais une valeur explicite est recommandée en production.

image_urlstring

URL de l’image de départ pour les flux image-vers-vidéo. Pour la compatibilité la plus large, privilégiez image_url.

imagestring

Image inline au format data: (par exemple data:image/jpeg;base64,...). Les modèles compatibles la prennent en charge, mais image_url reste l’option la plus robuste.

reference_imagesarray

Images de référence pour les flux avec conditionnement dédié. Le nombre autorisé dépend du modèle. Pour seedance-2.0 et seedance-2.0-fast, TokenLab prend actuellement en charge jusqu'à 9 images de référence, ainsi que jusqu'à 3 vidéos de référence et 3 audios de référence. Pour le choix du modèle, les limites 4K et les notes Mini, consultez le guide des modèles vidéo Seedance 2.0. Les URL publiques https sont recommandées ; les modèles compatibles acceptent aussi les URL data:. Pour grok-imagine-video, reference-to-video accepte jusqu’à 7 références image et duration est limitée à 10 secondes. grok-imagine-video-1.5-preview est limité à image-to-video et n’accepte pas les références image.

material_asset_idstring

ID de matériau Seedance TokenLab renvoyé par Créer un matériau. Utilisez-le après le statut ACTIVE avec les modèles Seedance qui peuvent utiliser la bibliothèque de matériaux TokenLab.

material_asset_idsarray

Plusieurs ID de matériaux Seedance TokenLab. Ils partagent la limite de références image Seedance avec reference_images; le modèle sélectionné doit pouvoir utiliser la bibliothèque de matériaux TokenLab.

Les URL d’images ordinaires servent d’entrées et ne créent pas automatiquement de matériaux réutilisables. Créez-les via l’API de matériaux, puis utilisez leurs ID TokenLab ou URI asset://asset-YYYYMMDDHHMMSS-xxxxx. Si des matériaux explicites renvoient 409 seedance_material_preparing, vérifiez les inactive_asset_ids et réessayez après leur passage à ACTIVE.

reference_image_typestring

Champ facultatif pour les modèles qui distinguent les références asset et style.

kling_elementsarray

Utilisez kling_elements uniquement si les détails publics actuels du modèle mentionnent ce champ. Fournissez des images et 1 à 3 éléments avec name, une description facultative et 2 à 4 element_input_urls, référencés par @name dans prompt. Ne combinez pas ces éléments avec output_audio=true.

video_urlstring

URL publique de la vidéo source. Requise pour les flux video-to-video basés sur une URL vidéo et pour motion-control ; certains flux dérivés utilisent plutôt task_id.

video_urlsarray

Entrées vidéo de référence supplémentaires pour les modèles qui prennent en charge un conditionnement multimodal. Le nombre autorisé dépend du modèle. Pour seedance-2.0 et seedance-2.0-fast, TokenLab prend actuellement en charge jusqu'à 3 vidéos de référence.

audio_urlstring

URL audio publique pour une opération pilotée par l’audio ou une référence audio prise en charge par le modèle.

audio_urlsarray

Entrées audio de référence supplémentaires pour les modèles qui prennent en charge un conditionnement multimodal. Le nombre autorisé dépend du modèle. Pour seedance-2.0 et seedance-2.0-fast, TokenLab prend actuellement en charge jusqu'à 3 audios de référence.

task_idstring

Identifiant de tâche utilisé par certains flux de continuation, d’extension ou dérivés.

extend_atinteger

Offset de départ spécifique au modèle pour certains flux video-extension.

extend_timesstring

Multiplicateur ou nombre de répétitions spécifique au modèle pour certains flux video-extension.

durationinteger

Durée de la vidéo générée en secondes. Pour les modèles Seedance 1.5/2.0, l’omission de ce champ utilise 5; envoyer -1 laisse le modèle choisir dans sa plage prise en charge, et la facturation est estimée de façon conservatrice jusqu’à la fin de la tâche.

secondsinteger

Alias compatible de duration. Si seconds et duration sont envoyés ensemble, ils doivent être identiques. Pour Seedance, seconds=-1 a le même sens de durée automatique que duration=-1.

aspect_ratiostring

Format d’image canonique, par exemple adaptive, 16:9, 9:16, 1:1, 4:3, 3:4 ou 21:9. Seedance utilise adaptive par défaut lorsque ce champ est omis.

resolutionstring

Résolution de sortie dépendante du modèle. Seedance utilise 720p par défaut ; seedance-2.0 prend en charge 480p, 720p, 1080p et 4k, tandis que seedance-2.0-fast et seedance-2.0-mini sont limités à 480p et 720p.

output_audioboolean

Sélecteur de sortie audio pour les opérations qui le déclarent. Sans valeur, le comportement par défaut du modèle s’applique. false demande une sortie silencieuse uniquement si elle est permise. Voir les précisions ci-dessus et la fiche du modèle.

draftboolean

Sélecteur du workflow Draft de Seedance 1.5 Pro. Utilisez draft=true avec les modèles Seedance compatibles avec les tâches draft. Ne l'envoyez pas avec draft_task_id.

draft_task_idstring

ID de tâche draft Seedance 1.5 Pro à promouvoir. Envoyez l'ID d'une tâche draft précédente pour créer la vidéo finale ; ce n'est pas un champ vidéo générique.

ratiostring

Alias compatible de aspect_ratio. Si ratio et aspect_ratio sont envoyés ensemble, ils doivent être identiques.

generate_audioboolean

Alias compatible de output_audio. Si generate_audio, output_audio et outputAudio apparaissent ensemble, toutes les valeurs doivent correspondre.

execution_expires_afterinteger

Fenêtre optionnelle d’expiration d’exécution en secondes pour les modèles vidéo compatibles. Seedance utilise 172800 secondes par défaut lorsque le champ est omis.

priorityinteger

Priorité optionnelle de tâche de 0 à 9 pour les modèles vidéo compatibles. Ne combinez pas priority avec service_tier=flex.

safety_identifierstring

Identifiant optionnel de sécurité de l’utilisateur final pour les modèles vidéo compatibles. S’il est omis pour Seedance, TokenLab utilise user lorsqu’il est fourni.

service_tierstring

default est accepté comme no-op compatible pour les modèles Seedance 2.0. flex n’est autorisé que lorsque le modèle sélectionné le prend en charge.

framesinteger

Nombre optionnel d’images pour les modèles vidéo compatibles. Les modèles Seedance 2.0 et Seedance 1.5 Pro ne prennent pas ce champ en charge.

camera_fixedboolean

Sélecteur optionnel de caméra fixe pour les modèles vidéo compatibles. Les modèles Seedance 2.0 ne prennent pas ce champ en charge.

fpsinteger

Fréquence d’images (1–120). N’a d’effet que sur les modèles qui l’exposent publiquement.

negative_promptstring

Éléments à éviter dans la génération.

seedinteger

Graine aléatoire pour une génération reproductible. Seedance utilise -1 comme graine aléatoire lorsque le champ est omis.

cfg_scalenumber

Intensité de suivi du prompt (0–20), effective uniquement sur les modèles qui la prennent en charge.

motion_strengthnumber

Intensité du mouvement (0–1), effective uniquement sur les modèles compatibles.

start_imagestring

URL de l’image de premier frame, ou entrée image compatible, pour start-end-to-video.

end_imagestring

URL de l’image de dernier frame, ou entrée image compatible, pour start-end-to-video.

sizestring

Niveau de taille propre au modèle pour les modèles vidéo compatibles.

watermarkboolean

Option de filigrane pour les modèles qui l’exposent. Seedance utilise false par défaut lorsque le champ est omis.

effect_typestring

Sélecteur d’effet spécifique au modèle pour certains flux d’édition ou d’effets.

userstring

Identifiant unique de l’utilisateur final. Pour Seedance, TokenLab utilise aussi cette valeur comme safety_identifier lorsque ce champ est omis.

Notes de compatibilité

  • Les champs publics canoniques utilisent le snake_case : reference_images, reference_image_type et output_audio.
  • Les champs publics canoniques restent en snake_case : aspect_ratio, output_audio, reference_images et reference_image_type.
  • Pour compatibilité, TokenLab accepte aussi ratio, generate_audio, outputAudio, seconds, referenceImages et referenceImageType.
  • Si des champs canoniques et des alias sont envoyés ensemble, leurs valeurs doivent correspondre ; les alias en conflit sont rejetés avant la création de la tâche.

Bonnes pratiques d’entrée

  • Pour image_url, reference_images, video_url et audio_url, privilégiez des URLs https publiques.
  • Évitez, si possible, de mélanger base64 inline et URLs distantes dans une même requête.
  • Assurez-vous que les URLs média distantes restent valides pendant la fenêtre de retry et la création asynchrone.

Paramètres Seedance

Pour les modèles Seedance 1.5/2.0, l’endpoint unifié suit les noms de champs TokenLab tout en acceptant les alias compatibles seconds, ratio et generate_audio. Lorsque les sélecteurs Seedance sont omis, ces valeurs par défaut sont utilisées : duration=5, resolution=720p, aspect_ratio=adaptive, output_audio=true, watermark=false, return_last_frame=false, execution_expires_after=172800, priority=0 et seed=-1.

duration=-1 ou seconds=-1 laisse Seedance choisir la durée de sortie dans la plage prise en charge par le modèle. TokenLab estime le coût de façon conservatrice avant la fin de la tâche, puis règle selon l’usage de la tâche terminée lorsque disponible. service_tier=default est accepté comme no-op compatible pour Seedance 2.0 ; service_tier=flex, frames et camera_fixed sont rejetés lorsque le modèle sélectionné ne les prend pas en charge.

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

Réponse

Les champs de résultat, d’erreur, d’horodatage et de modèle sont renvoyés lorsqu’ils sont disponibles pour la tâche.

idstring

Identifiant canonique de tâche asynchrone. Lorsque id et task_id sont tous les deux présents, considérez-les comme la même tâche.

task_idstring

Identifiant unique du task pour le polling.

poll_urlstring

URL de polling recommandée pour ce task. Utilisez ce chemin tel quel lors des vérifications d’état.

billing_transaction_idstring

ID de transaction de facturation TokenLab lorsque le règlement est déjà terminé. Il s'agit de l'identifiant utilisé pour le dashboard / le rapprochement, distinct de l'id / task_id asynchrone.

statusstring

Statut de la tâche : pending, processing, completed, failed.

createdinteger

Timestamp Unix de création de la tâche.

modelstring

Modèle utilisé.

videoobject

Charge utile d'une seule vidéo avec url, duration, width et height lorsque disponible.

videosarray

Plusieurs charges utiles vidéo lorsque la tâche de génération renvoie plus d'une sortie.

errorstring | object

Message d'erreur (en cas d'échec).

Requête

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

Réponse

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

Image vers vidéo

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

Éléments Kling 3.0

Utilisez kling_elements uniquement si les détails publics actuels du modèle mentionnent ce champ. Fournissez des images et 1 à 3 éléments avec name, une description facultative et 2 à 4 element_input_urls, référencés par @name dans prompt. Ne combinez pas ces éléments avec output_audio=true.

Référence vers vidéo

Utilisez operation=reference-to-video lorsque le modèle prend en charge un conditionnement de référence dédié. Dans le détails du modèle de TokenLab, les références d'image utilisent reference_images, tandis que les vidéos et audios de référence multimodaux utilisent video_urls et audio_urls. Pour seedance-2.0 et seedance-2.0-fast, TokenLab prend actuellement en charge jusqu'à 9 images de référence, ainsi que jusqu'à 3 vidéos de référence et 3 audios de référence. Pour le choix du modèle, les limites 4K et les notes Mini, consultez le guide des modèles vidéo Seedance 2.0. duration contrôle uniquement la durée de sortie générée ; il ne fixe pas de limite distincte pour la durée de la vidéo de référence en entrée. Pour grok-imagine-video, reference-to-video accepte jusqu’à 7 références image (reference_images ou image_urls) et duration est limitée à 10 secondes. Ne combinez pas les références image avec des entrées de première frame image_url / image. grok-imagine-video-1.5-preview est limité à 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 and palette while adding subtle 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"
    }
)

Contrôle début / fin

Utilisez start_image et end_image pour contrôler la première et la dernière image.

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

Vidéo vers vidéo

Pour le video-to-video de grok-imagine-video, envoyez une URL .mp4 HTTPS publique dans video_url. Vous pouvez définir resolution sur 480p ou 720p; duration et aspect_ratio ne sont pas acceptés pour ce flux d’édition.

Si un modèle accepte une vidéo existante comme entrée principale, utilisez 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."
    }
)

Contrôle de mouvement

Quand un modèle exige à la fois une image de sujet et une vidéo de mouvement de référence, utilisez operation=motion-control. TokenLab normalise la forme publique image_url + video_url vers le format motion-control de ce modèle.

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

Découverte des modèles

L’inventaire vidéo public et les opérations prises en charge évoluent dans le temps. Utilisez la Models API comme référence actuelle avant d’implémenter un flux propre à un modèle :

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

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

Lisez la réponse de détail du modèle avant de dépendre d’opérations ou de champs propres au modèle. Les opérations comme audio-to-video et video-extension sont propres à certains modèles ; confirmez leur disponibilité actuelle à cet endroit plutôt que de vous appuyer sur les exemples statiques de cette page.

Autorisation

BearerAuth
AuthorizationBearer <token>

Authentification par clé API. Créez ou gérez vos clés API dans Dashboard > API > API Keys.

Emplacement: header

En-têtes

X-TokenLab-Delivery-Policy?string

Politique de livraison par requête. Remplace les valeurs par défaut de la clé API et de l'espace de travail. Tente automatiquement TokenLab Verified en premier et peut basculer une fois vers Official uniquement avant la sortie, l'acceptation de la requête ou la création de ressource persistante.

Valeurs possibles

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

Corps de la requête

application/json

Réponse

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json