> ## Documentation Index
> Fetch the complete documentation index at: https://evolink.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Wan3.0 Image-to-Video

> - `image_start` fixe strictement la **première image** de la vidéo ; ajouter `image_end` fixe aussi strictement la **dernière image**
- **Les éléments de référence ne sont pas acceptés** (vidéos de référence / audio de référence / fichiers / pages web) : la première et la dernière image s'excluent des éléments de référence. Pour des références mixtes, utilisez [Wan3.0 référence vers vidéo](/fr/api-manual/video-series/wan3.0/wan3.0-reference-video)
- Au plus 2 images (première image + dernière image). Pour 3 images de référence ou plus, utilisez la référence vers vidéo
- Mode de traitement asynchrone, utilisez l'ID de tâche renvoyé pour [interroger le statut](/fr/api-manual/task-management/get-task-detail)
- Les liens vidéo générés sont valides 24 heures, veuillez les sauvegarder rapidement

## Facturation

- **Formule de facturation** : durée facturée = durée de la vidéo d'entrée + durée de la vidéo de sortie, facturation à la seconde
- **Multiplicateur de résolution** : `480p` = 1x (référence), `720p` = 2x, `1080p` = 4x
- Les images de référence, l'audio de référence, les fichiers de référence et les liens de pages web **ne sont pas facturés**
- Lorsque `duration` vaut `-1` (durée intelligente), le montant est préautorisé au plafond de `30` secondes ; après le succès de la tâche, la facturation porte sur la durée réellement produite et la différence est remboursée automatiquement
- Activer ou désactiver la piste `audio` **coûte le même prix**
- **Les tâches en échec ne sont pas facturées**, les crédits gelés sont intégralement remboursés



## OpenAPI

````yaml fr/api-manual/video-series/wan3.0/wan3.0-image-to-video.json POST /v1/videos/generations
openapi: 3.1.0
info:
  title: Wan3.0 Image-to-Video API
  description: >-
    Wan 3.0 image vers vidéo : la première image, ou le couple première/dernière
    image, contrôle strictement le début et la fin de la vidéo
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://api.evolink.ai
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Génération vidéo
    description: APIs de génération de vidéos IA
paths:
  /v1/videos/generations:
    post:
      tags:
        - Génération vidéo
      summary: Wan3.0 Image-to-Video
      description: >-
        - `image_start` fixe strictement la **première image** de la vidéo ;
        ajouter `image_end` fixe aussi strictement la **dernière image**

        - **Les éléments de référence ne sont pas acceptés** (vidéos de
        référence / audio de référence / fichiers / pages web) : la première et
        la dernière image s'excluent des éléments de référence. Pour des
        références mixtes, utilisez [Wan3.0 référence vers
        vidéo](/fr/api-manual/video-series/wan3.0/wan3.0-reference-video)

        - Au plus 2 images (première image + dernière image). Pour 3 images de
        référence ou plus, utilisez la référence vers vidéo

        - Mode de traitement asynchrone, utilisez l'ID de tâche renvoyé pour
        [interroger le statut](/fr/api-manual/task-management/get-task-detail)

        - Les liens vidéo générés sont valides 24 heures, veuillez les
        sauvegarder rapidement


        ## Facturation


        - **Formule de facturation** : durée facturée = durée de la vidéo
        d'entrée + durée de la vidéo de sortie, facturation à la seconde

        - **Multiplicateur de résolution** : `480p` = 1x (référence), `720p` =
        2x, `1080p` = 4x

        - Les images de référence, l'audio de référence, les fichiers de
        référence et les liens de pages web **ne sont pas facturés**

        - Lorsque `duration` vaut `-1` (durée intelligente), le montant est
        préautorisé au plafond de `30` secondes ; après le succès de la tâche,
        la facturation porte sur la durée réellement produite et la différence
        est remboursée automatiquement

        - Activer ou désactiver la piste `audio` **coûte le même prix**

        - **Les tâches en échec ne sont pas facturées**, les crédits gelés sont
        intégralement remboursés
      operationId: createWan30ImageToVideo
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VideoGenerationRequest'
            examples:
              first_frame:
                summary: Premier plan vers vidéo
                value:
                  model: wan3.0-image-to-video
                  prompt: >-
                    The boy in the frame “comes alive” out of the wall and
                    performs an English rap at breakneck speed, while street
                    lights under a railway bridge at night create a cinematic
                    mood.
                  image_start: https://example.com/first_frame.png
                  duration: 5
                  quality: 720p
              first_last_frame:
                summary: Premier et dernier plan vers vidéo
                value:
                  model: wan3.0-image-to-video
                  prompt: >-
                    A young girl's smile gradually turns into a big laugh, the
                    camera slowly pushes in, and the background light shifts
                    from cool tones to warm tones.
                  image_start: https://example.com/first_frame.jpg
                  image_end: https://example.com/last_frame.jpg
                  duration: 5
                  quality: 720p
                  aspect_ratio: '16:9'
      responses:
        '200':
          description: Tâche de génération vidéo créée avec succès
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VideoGenerationResponse'
        '400':
          description: Paramètres de requête invalides
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: invalid_parameter
                  message: Invalid request parameters
                  type: invalid_request_error
        '401':
          description: Non authentifié, jeton invalide ou expiré
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: unauthorized
                  message: Invalid or expired token
                  type: authentication_error
        '402':
          description: Quota insuffisant, recharge requise
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: insufficient_quota
                  message: Insufficient quota. Please top up your account.
                  type: insufficient_quota
        '403':
          description: Accès refusé
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: model_access_denied
                  message: 'Token does not have access to model: wan3.0-image-to-video'
                  type: invalid_request_error
        '429':
          description: Limite de débit dépassée
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: rate_limit_exceeded
                  message: Too many requests, please try again later
                  type: rate_limit_error
        '500':
          description: Erreur interne du serveur
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: internal_error
                  message: Internal server error
                  type: api_error
components:
  schemas:
    VideoGenerationRequest:
      type: object
      required:
        - model
        - image_start
      properties:
        model:
          type: string
          description: Nom du modèle, fixé à `wan3.0-image-to-video`
          enum:
            - wan3.0-image-to-video
          example: wan3.0-image-to-video
          default: wan3.0-image-to-video
        prompt:
          type: string
          description: >-
            Prompt textuel pour la génération vidéo. Le chinois et l'anglais
            sont pris en charge, **chaque caractère chinois / lettre compte pour
            1 caractère**, longueur maximale `20000` caractères ; le surplus est
            tronqué automatiquement (sans erreur)


            À utiliser pour décrire l'action, les mouvements de caméra et les
            changements attendus entre la première image (ou la première et la
            dernière image).
          example: >-
            A young girl's smile gradually turns into a big laugh, the camera
            slowly pushes in, and the background light shifts from cool tones to
            warm tones.
        image_start:
          type: string
          format: uri
          description: >-
            URL de la première image, utilisée strictement comme première image
            de la vidéo générée. **Obligatoire**


            **Limites d'image :**

            - Formats : JPEG, JPG, PNG (transparence non prise en charge), BMP,
            WEBP

            - Résolution : largeur et hauteur dans `[240, 8000]` pixels

            - Rapport d'aspect : 1:8 ~ 8:1

            - Taille du fichier : jusqu'à `20MB`
          example: https://example.com/first_frame.jpg
        image_end:
          type: string
          format: uri
          description: >-
            URL de la dernière image, utilisée strictement comme dernière image
            de la vidéo générée. Facultatif


            **Contrainte :** doit être utilisée avec `image_start`, **il n'est
            pas possible d'envoyer uniquement la dernière image**.


            **Limites d'image :**

            - Formats : JPEG, JPG, PNG (transparence non prise en charge), BMP,
            WEBP

            - Résolution : largeur et hauteur dans `[240, 8000]` pixels

            - Rapport d'aspect : 1:8 ~ 8:1

            - Taille du fichier : jusqu'à `20MB`
          example: https://example.com/last_frame.jpg
        duration:
          type: integer
          description: >-
            Durée de la vidéo générée (secondes), `5` par défaut


            **Valeurs acceptées :**

            - Tout entier compris entre `2` et `30`

            - `-1` : durée intelligente, le modèle détermine la longueur de
            sortie d'après le prompt et les éléments d'entrée


            **Facturation de la durée intelligente :** au moment de l'envoi, la
            longueur générée est inconnue ; le montant est donc **préautorisé au
            plafond** de `30` secondes, puis régularisé sur la durée réellement
            produite après le succès de la tâche, l'excédent gelé étant libéré
            automatiquement. Si votre solde ne couvre pas la préautorisation au
            plafond, indiquez plutôt un nombre de secondes explicite.
          default: 5
          example: 5
        quality:
          type: string
          description: >-
            Résolution vidéo, `720p` par défaut


            **Options :**

            - `480p` : définition plus basse, prix le plus bas (base de
            facturation)

            - `720p` : définition standard, valeur par défaut, prix 2x celui de
            `480p`

            - `1080p` : haute définition, prix 4x celui de `480p`
          enum:
            - 480p
            - 720p
            - 1080p
          default: 720p
          example: 720p
        aspect_ratio:
          type: string
          description: >-
            Rapport d'aspect de la vidéo, `adaptive` par défaut


            **Options :**

            - `adaptive` : adaptatif, le modèle recommande un rapport d'aspect
            adapté selon le ratio des éléments d'entrée et l'intention du
            prompt, valeur par défaut

            - `16:9` (paysage), `9:16` (portrait), `1:1` (carré), `4:3`, `3:4`
          enum:
            - adaptive
            - '16:9'
            - '9:16'
            - '1:1'
            - '4:3'
            - '3:4'
          default: adaptive
          example: '16:9'
        generate_audio:
          type: boolean
          description: >-
            Indique si la vidéo de sortie contient une piste audio, `true` par
            défaut


            **Options :**

            - `true` : la vidéo de sortie contient du son (voix, effets sonores,
            musique de fond), valeur par défaut

            - `false` : vidéo muette en sortie


            **Le son activé ou désactivé coûte le même prix**, sans frais
            supplémentaires.
          default: true
          example: true
        seed:
          type: integer
          description: >-
            Graine aléatoire, utilisée pour reproduire les résultats, aléatoire
            par défaut


            **Notes :**

            - Plage : `0` ~ `2147483647`

            - Fixer la graine réduit la variation lors de l'itération sur les
            prompts et améliore la reproductibilité
          minimum: 0
          maximum: 2147483647
          example: 42
        callback_url:
          type: string
          description: >-
            URL de rappel HTTPS après l'achèvement de la tâche


            **Moment du rappel :**

            - Déclenché lorsque la tâche est terminée (completed), échouée
            (failed) ou annulée (cancelled)

            - Envoyé après la confirmation de la facturation


            **Restrictions de sécurité :**

            - Seul le protocole HTTPS est pris en charge

            - Les rappels vers les adresses IP du réseau interne 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 `2048` caractères


            **Mécanisme de rappel :**

            - Délai d'expiration : `10` secondes

            - Maximum de `3` tentatives après échec (les tentatives ont lieu
            après `1`/`2`/`4` secondes suivant l'échec)

            - Le format du corps de réponse du rappel est cohérent avec le
            format de réponse de l'API de consultation de tâche

            - Un code de statut 2xx est considéré comme un succès, les autres
            codes de statut déclenchent une nouvelle tentative
          format: uri
          example: https://your-domain.com/webhooks/video-task-completed
    VideoGenerationResponse:
      type: object
      properties:
        created:
          type: integer
          description: Horodatage de création de la tâche
          example: 1761313744
        id:
          type: string
          description: ID de tâche
          example: task-unified-1774857405-abc123
        model:
          type: string
          description: Nom du modèle réellement utilisé
          example: wan3.0-image-to-video
        object:
          type: string
          enum:
            - video.generation.task
          description: Type spécifique de la tâche
        progress:
          type: integer
          description: Pourcentage de progression de la tâche (0-100)
          minimum: 0
          maximum: 100
          example: 0
        status:
          type: string
          description: Statut de la tâche
          enum:
            - pending
            - processing
            - completed
            - failed
          example: pending
        task_info:
          $ref: '#/components/schemas/VideoTaskInfo'
          description: Informations détaillées de la tâche vidéo
        type:
          type: string
          enum:
            - text
            - image
            - audio
            - video
          description: Type de sortie de la tâche
          example: video
        usage:
          $ref: '#/components/schemas/VideoUsage'
          description: Informations d'utilisation et de facturation
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: Identifiant du code d'erreur
            message:
              type: string
              description: Description de l'erreur
            type:
              type: string
              description: Type d'erreur
    VideoTaskInfo:
      type: object
      properties:
        can_cancel:
          type: boolean
          description: Si la tâche peut être annulée
          example: true
        estimated_time:
          type: integer
          description: Temps d'achèvement estimé (secondes)
          minimum: 0
          example: 165
        video_duration:
          type: integer
          description: Durée de la vidéo (secondes)
          example: 8
    VideoUsage:
      type: object
      description: Informations d'utilisation et de facturation
      properties:
        billing_rule:
          type: string
          description: Règle de facturation
          enum:
            - per_call
            - per_token
            - per_second
          example: per_second
        credits_reserved:
          type: number
          description: Crédits estimés consommés
          minimum: 0
          example: 50
        user_group:
          type: string
          description: Catégorie de groupe d'utilisateurs
          example: default
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        ##Toutes les API nécessitent une authentification Bearer Token##


        **Obtenir une clé API :**


        Visitez la [Page de gestion des clés
        API](https://evolink.ai/dashboard/keys) pour obtenir votre clé API


        **Ajouter à l'en-tête de requête :**

        ```

        Authorization: Bearer YOUR_API_KEY

        ```

````