curl --request POST \
--url https://api.evolink.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "videoretalk",
"video_url": "https://example.com/speaker.mp4",
"audio_url": "https://example.com/target-speech.wav"
}
'{
"created": 1775200000,
"id": "task-unified-1775200000-xyz12345",
"model": "videoretalk",
"object": "video.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"can_cancel": false,
"estimated_time": 90,
"video_duration": 0
},
"type": "video",
"usage": {
"billing_rule": "per_second",
"credits_reserved": 480,
"user_group": "default"
}
}{
"error": {
"code": "missing_required_params",
"message": "Missing required parameter: video_url or audio_url",
"type": "invalid_request_error"
}
}{
"error": {
"code": "unauthorized",
"message": "Invalid or expired token",
"type": "authentication_error"
}
}{
"error": {
"code": "insufficient_quota",
"message": "Insufficient quota. Please top up your account.",
"type": "insufficient_quota"
}
}{
"error": {
"code": "model_access_denied",
"message": "Token does not have access to model: videoretalk",
"type": "invalid_request_error"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}{
"error": {
"code": "internal_error",
"message": "Internal server error",
"type": "api_error"
}
}VideoRetalk
- Génération de mouvements labiaux vidéo pilotée par audio : remplace les mouvements labiaux du personnage dans la vidéo par ceux correspondant à l’audio cible
- Traitement asynchrone : utilisez l’ID de tâche retourné pour interroger le résultat
- Le lien vidéo généré est valable 24 heures, veuillez le sauvegarder rapidement
Cas d’usage typiques :
- Doublage multilingue : remplacer les mouvements labiaux de la vidéo originale par ceux d’un doublage dans une autre langue
- Présentateur virtuel : animer une vidéo de personnage avec un audio généré par TTS
- Production publicitaire : générer rapidement des versions publicitaires en différentes langues à partir d’une même vidéo source
- Formation et éducation : remplacer les explications d’un formateur en vidéo par celles dans différentes langues
Remarques importantes :
- Les URL d’entrée doivent être accessibles depuis Internet
- La vidéo doit contenir un visage humain, sinon la tâche échouera
- En cas de plusieurs visages, veillez à renseigner
ref_image_url
curl --request POST \
--url https://api.evolink.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "videoretalk",
"video_url": "https://example.com/speaker.mp4",
"audio_url": "https://example.com/target-speech.wav"
}
'{
"created": 1775200000,
"id": "task-unified-1775200000-xyz12345",
"model": "videoretalk",
"object": "video.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"can_cancel": false,
"estimated_time": 90,
"video_duration": 0
},
"type": "video",
"usage": {
"billing_rule": "per_second",
"credits_reserved": 480,
"user_group": "default"
}
}{
"error": {
"code": "missing_required_params",
"message": "Missing required parameter: video_url or audio_url",
"type": "invalid_request_error"
}
}{
"error": {
"code": "unauthorized",
"message": "Invalid or expired token",
"type": "authentication_error"
}
}{
"error": {
"code": "insufficient_quota",
"message": "Insufficient quota. Please top up your account.",
"type": "insufficient_quota"
}
}{
"error": {
"code": "model_access_denied",
"message": "Token does not have access to model: videoretalk",
"type": "invalid_request_error"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}{
"error": {
"code": "internal_error",
"message": "Internal server error",
"type": "api_error"
}
}Autorisations
##Toutes les interfaces nécessitent une authentification par Bearer Token##
Obtenir une clé API :
Visitez la page de gestion des clés API pour obtenir votre clé API
Ajoutez ceci dans l'en-tête de la requête :
Authorization: Bearer YOUR_API_KEY
Corps
Nom du modèle
videoretalk "videoretalk"
URL de la vidéo d'entrée contenant le personnage dont les mouvements labiaux doivent être remplacés
Exigences :
- URL vidéo accessible depuis Internet
- Formats : MP4, MOV et autres formats courants
- La vidéo doit contenir un visage clairement visible
- Durée recommandée :
2à300secondes
"https://example.com/speaker.mp4"
URL de l'audio cible ; le personnage de la vidéo parlera selon cet audio
Exigences :
- URL audio accessible depuis Internet
- Formats : WAV, MP3, M4A et autres formats courants
- De préférence, il doit s'agir d'une voix humaine parlée
"https://example.com/target-speech.wav"
URL de l'image de référence du visage
Lorsque la vidéo contient plusieurs visages, utilisez cette image pour indiquer le visage cible dont les mouvements labiaux doivent être remplacés
Exigences :
- L'image doit contenir le visage de face du personnage cible
- Uniquement nécessaire lorsque la vidéo contient plusieurs visages
"https://example.com/target-person-face.jpg"
Lorsque la durée de l'audio est supérieure à celle de la vidéo, indique si la vidéo doit être automatiquement étendue à la durée de l'audio
true: durée de sortie = durée de l'audio (la vidéo est automatiquement étendue)false: durée de sortie = min(durée de la vidéo, durée de l'audio)
false
Seuil de confiance pour la correspondance faciale
- Plage :
120à200 - Plus la valeur est basse, plus la correspondance est facile (risque de faux positifs)
- Plus la valeur est haute, plus la correspondance est stricte (risque de non-correspondance)
- Si l'erreur
aucun visage correspondant trouvéapparaît, réduisez légèrement (par ex.140) - Si un mauvais visage est trouvé, augmentez légèrement (par ex.
190)
120 <= x <= 200170
URL de rappel HTTPS après la fin de la tâche
Déclenchement du rappel :
- Déclenché lorsque la tâche est terminée (completed), échouée (failed) ou annulée (cancelled)
- Envoyé après confirmation de la facturation
Restrictions de sécurité :
- Uniquement le protocole HTTPS est pris en charge
- Les rappels vers des adresses IP internes sont interdits (127.0.0.1, 10.x.x.x, 172.16-31.x.x, 192.168.x.x, etc.)
- La longueur de l'URL ne doit pas dépasser
2048caractères
Mécanisme de rappel :
- Délai d'expiration :
10secondes - Maximum
3nouvelles tentatives en cas d'échec (à1s /2s /4s après l'échec respectivement) - Le format du corps de rappel est identique à celui retourné par l'interface de requête de tâche
- Un code de statut 2xx de l'URL de rappel est considéré comme un succès ; tout autre code déclenche une nouvelle tentative
"https://your-domain.com/webhooks/video-task-completed"
Réponse
Tâche de génération de portrait animé créée avec succès
Horodatage de création de la tâche
1775200000
ID de la tâche
"task-unified-1775200000-xyz12345"
Nom du modèle réellement utilisé
"videoretalk"
Type spécifique de la tâche
video.generation.task Pourcentage de progression de la tâche (0-100)
0 <= x <= 1000
Statut de la tâche
| Statut | progress | Description |
|---|---|---|
pending | 0~10 | En attente de traitement |
processing | 10~80 | En cours de traitement |
completed | 100 | Terminé |
failed | 0 | Échec |
pending, processing, completed, failed "pending"
Informations détaillées sur la tâche vidéo
Show child attributes
Show child attributes
Type de sortie de la tâche
video "video"
Informations d'utilisation et de facturation
Show child attributes
Show child attributes