logo
Docs API

Docs API

Authentification

Base URL : https://api.vivareel.com/api/developer/v1. Tous les endpoints de l'API ouverte utilisent une clé API : Authorization: Bearer sk_live_xxx ou sk_test_xxx.

Réponse et facturation

L'API ouverte renvoie les champs code, message et data ; code 200 = succès. Facturation en points — consultez GET /models pour les tarifs. Interrogez GET /tasks/task_id toutes les 3–5 s pour les tâches asynchrones.

Capacités Wan 3.0

Wan 3.0 est un modèle vidéo de référence tout-en-un. Le même modèle couvre le texte vers vidéo, la première image, la première/dernière image, et les références mixtes image / vidéo / audio. Passez le name renvoyé par GET /models (par exemple wan-3.0). Aucun endpoint dédié n’est nécessaire.

Règles officielles de modes et de combinaisons : Wan3.0 Video Generation API Reference. Cette plateforme les encapsule via POST /api/developer/v1/videos/generations. Les noms de champs diffèrent de input.media[] DashScope ; suivez les paramètres de cette page.

Portée des champs

  • Commun : model, motion_instruction (obligatoire selon le mode), aspect_ratio, duration_seconds, capability, image_url (selon le mode), last_frame_url (selon le mode ; non pris en charge par HappyHorse), et reference_urls (mode référence).
  • Multi-modèles : reference_video_urls (Seedance / sémantique Wan3 / Wan2.7 R2V / VivaReel2.0) ; reference_audio_urls (Seedance / sémantique Wan3 / Wan2.7 R2V / minimax-H3).
  • Sémantique Wan3 : resolution, audio, seed, prompt_extend et smart_duration. Ces champs s’appliquent aux modèles qui utilisent la sémantique Wan 3.
  • dashscope-wan3.0-video uniquement : watermark, enable_thinking, document_url et web_url.

Modes de génération

  • Texte vers vidéo : envoyez uniquement motion_instruction, et omettez capability ou passez null.
  • Première image : envoyez image_url, avec capability first_frame.
  • Première et dernière images : envoyez image_url et last_frame_url, avec capability flf2v.
  • Référence multimodale : combinez reference_urls, reference_video_urls et reference_audio_urls. Utilisez capability image_reference. motion_instruction est obligatoire.
  • Édition / prolongation : envoyez reference_video_urls et décrivez l’intention dans motion_instruction, par exemple « transformer en style argile » ou « prolonger Video 1 vers l’avant ».

Règles d’exclusion

  • N’envoyez pas image_url / last_frame_url en même temps que reference_urls, reference_video_urls ou reference_audio_urls.
  • Les modes première image et première/dernière image n’acceptent pas d’audio d’entraînement. Pour un guidage audio, utilisez la référence multimodale (images + audio).
  • Fournissez motion_instruction, ou un ensemble de médias valide pour le mode choisi.

Limites des médias et de la sortie

  • Jusqu’à 10 images de référence ; JPEG / JPG / PNG / BMP / WEBP, 240–8000 px par côté, 20 Mo chacune. La limite réelle est max_reference_images.
  • Jusqu’à 5 clips, 1–15 s chacun, 15 s au total ; mp4 / mov, 100 Mo chacun. La limite réelle est max_reference_videos.
  • Jusqu’à 5 extraits, 1–15 s chacun, 15 s au total ; wav / mp3, 15 Mo chacun. La limite réelle est max_reference_audios.
  • Sans vidéo de référence, la durée de sortie est généralement de 2–30 s. Avec une vidéo de référence, durée d’entrée + durée de sortie ≤ 30 s. Vérifiez duration_range / max_duration_seconds.
  • La sortie est un MP4 à 30 i/s, pouvant inclure dialogues, BGM et effets sonores.

Référencer les médias dans le prompt

Chaque type est numéroté séparément : la 1re image est Image 1, la 1re vidéo est Video 1, le 1er audio est Audio 1. Vous pouvez écrire Image 1, Video 1, ou @Image 1 / @Video 1 / @Audio 1.

Générer une image

POST/api/developer/v1/images/generations

Soumet une tâche de génération d'image autonome (texte vers image ou composition avec images de référence). Renvoie task_id ; interrogez GET /api/developer/v1/tasks/task_id pour le résultat.

Paramètres

nameintyperequireddesc
modelbodystring✓Nom du modèle image ; listez les modèles via GET /models
promptbodystring✓Description textuelle de l'image à générer
aspect_ratiobodystring—Format : 16:9, 9:16, 4:3 ou 3:4
image_resolutionbodystring—Résolution de sortie : 1K, 2K ou 4K
reference_urlsbodystring[]—URLs d'images de référence (0–5) ; non vide active le mode composition

Exemple de code

curl -X POST "https://vivareel.ai/api/developer/v1/images/generations" \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "dashscope-wan2.1-t2i-turbo",
  "prompt": "一只可爱的猫咪在草地上奔跑",
  "aspect_ratio": "16:9",
  "image_resolution": "2K",
  "reference_urls": [
    "https://example.com/ref1.jpg"
  ]
}'

Exemple de corps de requête

{
  "model": "dashscope-wan2.1-t2i-turbo",
  "prompt": "一只可爱的猫咪在草地上奔跑",
  "aspect_ratio": "16:9",
  "image_resolution": "2K",
  "reference_urls": [
    "https://example.com/ref1.jpg"
  ]
}

Exemple de réponse

{
  "code": 200,
  "message": "ok",
  "data": {
    "task_id": "550e8400-e29b-41d4-a716-446655440000"
  }
}

Générer une vidéo

POST/api/developer/v1/videos/generations

Soumet une tâche de génération vidéo autonome. Les modèles tout-en-un comme Wan 3.0 prennent en charge le texte vers vidéo, la première image, la première/dernière image, et les références mixtes image / vidéo / audio. Renvoie task_id ; interrogez GET /api/developer/v1/tasks/task_id pour le résultat.

Paramètres

nameintyperequireddesc
modelbodystring✓[Commun] Nom du modèle vidéo via GET /models ; généralement wan-3.0 ou dashscope-wan3.0-video
motion_instructionbodystring | null—[Commun / conditionnel] Prompt / instruction de mouvement. Obligatoire pour texte vers vidéo, référence multimodale, édition et prolongation. Vous pouvez citer Image 1 / Video 1 / Audio 1
aspect_ratiobody16:9 | 9:16 | 4:3 | 3:4 | null—[Commun] Format : 16:9, 9:16, 4:3 ou 3:4
duration_secondsbodyinteger | null—[Commun] Durée de sortie en secondes. Voir duration_range / max_duration_seconds via GET /models
capabilitybodyfirst_frame | flf2v | image_reference | null—[Commun] first_frame, flf2v ou image_reference ; omettre ou null pour déduire (motion_instruction seul = texte vers vidéo)
image_urlbodystring | null—[Commun / selon le mode] URL de la première image pour first_frame / flf2v. Ne pas envoyer avec les champs reference_*
last_frame_urlbodystring | null—[Commun / selon le mode] URL de la dernière image pour flf2v. Doit être utilisée avec image_url et ne pas être identique. Non pris en charge par HappyHorse
reference_urlsbodystring[]—[Commun / mode référence] URLs d’images de référence pour image_reference
reference_video_urlsbodystring[]—[Multi-modèles] Seedance / sémantique Wan3 / Wan2.7 R2V / VivaReel2.0. URLs de vidéos de référence
reference_audio_urlsbodystring[]—[Multi-modèles] Seedance / sémantique Wan3 / Wan2.7 R2V / minimax-H3. URLs d’audios de référence
resolutionbody480P | 720P | 1080P | null—[Sémantique Wan3] Résolution de sortie : 480P, 720P ou 1080P
audiobodyboolean | null—[Sémantique Wan3] Générer ou non l’audio
seedbodyinteger | null—[Sémantique Wan3] Graine aléatoire pour reproduire le résultat
watermarkbodyboolean | null—[dashscope-wan3.0-video uniquement] Ajouter un filigrane
prompt_extendbodyboolean | null—[Sémantique Wan3] Étendre le prompt
smart_durationbodyboolean—[Sémantique Wan3] Durée intelligente ; false par défaut
enable_thinkingbodyboolean | null—[dashscope-wan3.0-video uniquement] Activer le raisonnement
document_urlbodystring | null—[dashscope-wan3.0-video uniquement] URL de document de référence
web_urlbodystring | null—[dashscope-wan3.0-video uniquement] URL de page web de référence

Exemple de code

curl -X POST "https://vivareel.ai/api/developer/v1/videos/generations" \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "wan-3.0",
  "motion_instruction": "Video 1 sits on the chair in Image 2 and sings. Image 1 walks over, places Image 3 on the table, and says: the sunshine is so nice today.",
  "aspect_ratio": "9:16",
  "duration_seconds": 8,
  "capability": "image_reference",
  "reference_urls": [
    "https://example.com/character.jpg",
    "https://example.com/chair.jpg",
    "https://example.com/prop.jpg"
  ],
  "reference_video_urls": [
    "https://example.com/performance.mp4"
  ],
  "resolution": "720P",
  "audio": true,
  "prompt_extend": true,
  "smart_duration": false
}'

Exemple de corps de requête

{
  "model": "wan-3.0",
  "motion_instruction": "Video 1 sits on the chair in Image 2 and sings. Image 1 walks over, places Image 3 on the table, and says: the sunshine is so nice today.",
  "aspect_ratio": "9:16",
  "duration_seconds": 8,
  "capability": "image_reference",
  "reference_urls": [
    "https://example.com/character.jpg",
    "https://example.com/chair.jpg",
    "https://example.com/prop.jpg"
  ],
  "reference_video_urls": [
    "https://example.com/performance.mp4"
  ],
  "resolution": "720P",
  "audio": true,
  "prompt_extend": true,
  "smart_duration": false
}

Exemple de réponse

{
  "code": 200,
  "message": "ok",
  "data": {
    "task_id": "550e8400-e29b-41d4-a716-446655440000"
  }
}

Remplacer un personnage dans une vidéo

POST/api/developer/v1/videos/replace-character

Soumet une tâche de remplacement de personnage avec 1–3 vidéos sources et 1–9 images de référence. Renvoie task_id ; interrogez GET /api/developer/v1/tasks/task_id pour result_url.

Paramètres

nameintyperequireddesc
video_urlsbodystring[]✓URLs des vidéos sources (1–3), liens http(s) obligatoires
reference_urlsbodystring[]✓URLs des images de référence (1–9), liens http(s) obligatoires
promptbodystring✓Prompt de remplacement décrivant l'échange souhaité
resolutionbodystring—Résolution de sortie ; par défaut 720P
aspect_ratiobodystring—Format ; par défaut 9:16
modelbodystring—Modèle vidéo ; modèle par défaut si omis
duration_secondsbodynumber—Durée totale des vidéos sources (secondes) pour l'estimation ; détectée automatiquement si omise
seedbodyinteger—Graine aléatoire pour des résultats reproductibles
watermarkbodyboolean—Ajouter un filigrane ; par défaut false

Exemple de code

curl -X POST "https://vivareel.ai/api/developer/v1/videos/replace-character" \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
  "video_urls": [
    "https://example.com/video1.mp4"
  ],
  "reference_urls": [
    "https://example.com/face1.jpg",
    "https://example.com/face2.jpg"
  ],
  "prompt": "将视频中的人物替换为参考图中的人物,保持表情和动作自然",
  "resolution": "720P",
  "aspect_ratio": "9:16",
  "model": "dashscope-wan2.1-i2v-plus",
  "duration_seconds": 10.5,
  "seed": 12345,
  "watermark": false
}'

Exemple de corps de requête

{
  "video_urls": [
    "https://example.com/video1.mp4"
  ],
  "reference_urls": [
    "https://example.com/face1.jpg",
    "https://example.com/face2.jpg"
  ],
  "prompt": "将视频中的人物替换为参考图中的人物,保持表情和动作自然",
  "resolution": "720P",
  "aspect_ratio": "9:16",
  "model": "dashscope-wan2.1-i2v-plus",
  "duration_seconds": 10.5,
  "seed": 12345,
  "watermark": false
}

Exemple de réponse

{
  "code": 200,
  "message": "ok",
  "data": {
    "task_id": "550e8400-e29b-41d4-a716-446655440000"
  }
}

Statut de la tâche

GET/api/developer/v1/tasks/{task_id}

Interroge l'état et le résultat d'une tâche asynchrone. Interrogez toutes les 3–5 s jusqu'à status completed ou failed.

Paramètres

nameintyperequireddesc
task_idpathstring✓ID de tâche renvoyé par les endpoints image/vidéo/remplacement

Exemple de code

curl -X GET "https://vivareel.ai/api/developer/v1/tasks/{task_id}" \
  -H "Authorization: Bearer sk_live_xxx"

Exemple de réponse

{
  "code": 200,
  "message": "ok",
  "data": {
    "task_id": "550e8400-e29b-41d4-a716-446655440000",
    "task_type": "standalone_image_generate",
    "status": "completed",
    "progress": 1,
    "points_cost": 10,
    "result_url": "https://storage.vivareel.com/output/xxx.png",
    "error_message": null,
    "extra": {
      "model": "dashscope-wan2.1-t2i-turbo",
      "aspect_ratio": "16:9"
    }
  }
}

Téléverser un fichier

POST/api/developer/v1/files

Téléverse un fichier vers le stockage et renvoie une URL utilisable. Pour première image, images, vidéos ou audios de référence (Content-Type: multipart/form-data).

Paramètres

nameintyperequireddesc
fileformDatafile✓Fichier à téléverser (image, vidéo, audio, etc.)

Exemple de code

curl -X POST "https://vivareel.ai/api/developer/v1/files" \
  -H "Authorization: Bearer sk_live_xxx"

Exemple de réponse

{
  "code": 200,
  "message": "ok",
  "data": {
    "url": "https://storage.vivareel.com/uploads/xxx.jpg",
    "storage_key": "uploads/2024/01/xxx.jpg",
    "original_filename": "my_image.jpg",
    "size_bytes": 204800,
    "content_type": "image/jpeg"
  }
}

Liste des modèles

GET/api/developer/v1/models

Liste les modèles image et vidéo disponibles avec capacités, paramètres pris en charge et tarification. Avant d’appeler Wan 3.0, vérifiez capabilities, duration_range et max_reference_images / videos / audios.

Paramètres

Aucun

Exemple de code

curl -X GET "https://vivareel.ai/api/developer/v1/models" \
  -H "Authorization: Bearer sk_live_xxx"

Exemple de réponse

{
  "code": 200,
  "message": "ok",
  "data": {
    "image_models": [
      {
        "name": "dashscope-wan2.1-t2i-turbo",
        "display_name": "Wan 2.1 Turbo",
        "icon_url": "https://api.vivareel.com/icons/wan.png",
        "capabilities": [
          "text_to_image"
        ],
        "capability_labels": {
          "text_to_image": "文生图"
        },
        "max_reference_images": 0,
        "pricing_by_capability": {
          "text_to_image": {
            "capability": "text_to_image",
            "feature_key": "image_generation",
            "billing_unit": "flat",
            "label": "文生图",
            "points": 10
          }
        }
      }
    ],
    "video_models": [
      {
        "name": "wan-3.0",
        "display_name": "Wan 3.0",
        "icon_url": "https://api.vivareel.com/icons/wan_video.png",
        "capabilities": [
          "text_to_video",
          "first_frame",
          "flf2v",
          "image_reference"
        ],
        "capability_labels": {
          "text_to_video": "文生视频",
          "first_frame": "首帧生视频",
          "flf2v": "首尾帧生视频",
          "image_reference": "全能参考"
        },
        "duration_range": {
          "min": 2,
          "max": 30
        },
        "max_duration_seconds": {
          "text_to_video": 30,
          "first_frame": 30,
          "flf2v": 30,
          "image_reference": 30
        },
        "max_reference_images": 10,
        "max_reference_videos": 5,
        "max_reference_audios": 5,
        "pricing_by_capability": {
          "image_reference": {
            "capability": "image_reference",
            "feature_key": "video_generation_image_reference",
            "billing_unit": "per_second",
            "label": "全能参考",
            "points_per_second": 5
          }
        }
      }
    ]
  }
}