> ## 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

> - Mit `image_start` wird das **erste Bild** des Videos streng festgelegt; mit zusätzlichem `image_end` auch das **letzte Bild**
- **Referenzmaterial wird nicht akzeptiert** (Referenzvideos / Referenzaudio / Dateien / Webseiten): Start-/Endbild und Referenzmaterial schließen sich gegenseitig aus. Für gemischte Referenzen verwenden Sie [Wan3.0 Reference-to-Video](/de/api-manual/video-series/wan3.0/wan3.0-reference-video)
- Höchstens 2 Bilder (Startbild + Endbild). Für 3 oder mehr Referenzbilder verwenden Sie Reference-to-Video
- Asynchroner Verarbeitungsmodus, verwenden Sie die zurückgegebene Task-ID für die [Statusabfrage](/de/api-manual/task-management/get-task-detail)
- Generierte Videolinks sind 24 Stunden gültig, bitte zeitnah speichern

## Abrechnung

- **Abrechnungsformel**: abgerechnete Dauer = Dauer des Eingabevideos + Dauer des Ausgabevideos, sekundengenaue Abrechnung
- **Auflösungsmultiplikator**: `480p` = 1x (Basis), `720p` = 2x, `1080p` = 4x
- Referenzbilder, Referenzaudio, Referenzdateien und Weblinks werden **nicht abgerechnet**
- Bei `duration` = `-1` (intelligente Dauer) wird zum Höchstwert von `30` Sekunden vorab reserviert; nach erfolgreicher Aufgabe wird nach der tatsächlichen Ausgabedauer abgerechnet und die Differenz automatisch zurückerstattet
- Das Ein- oder Ausschalten der `audio`-Spur **kostet gleich viel**
- **Fehlgeschlagene Aufgaben werden nicht abgerechnet**, das eingefrorene Guthaben wird vollständig zurückerstattet



## OpenAPI

````yaml de/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 Bild-zu-Video: Start- bzw. Start- und Endbild steuern streng, womit
    das Video beginnt und endet
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://api.evolink.ai
    description: Produktionsumgebung
security:
  - bearerAuth: []
tags:
  - name: Videogenerierung
    description: API-Schnittstellen für KI-Videogenerierung
paths:
  /v1/videos/generations:
    post:
      tags:
        - Videogenerierung
      summary: Wan3.0 Image-to-Video
      description: >-
        - Mit `image_start` wird das **erste Bild** des Videos streng
        festgelegt; mit zusätzlichem `image_end` auch das **letzte Bild**

        - **Referenzmaterial wird nicht akzeptiert** (Referenzvideos /
        Referenzaudio / Dateien / Webseiten): Start-/Endbild und
        Referenzmaterial schließen sich gegenseitig aus. Für gemischte
        Referenzen verwenden Sie [Wan3.0
        Reference-to-Video](/de/api-manual/video-series/wan3.0/wan3.0-reference-video)

        - Höchstens 2 Bilder (Startbild + Endbild). Für 3 oder mehr
        Referenzbilder verwenden Sie Reference-to-Video

        - Asynchroner Verarbeitungsmodus, verwenden Sie die zurückgegebene
        Task-ID für die
        [Statusabfrage](/de/api-manual/task-management/get-task-detail)

        - Generierte Videolinks sind 24 Stunden gültig, bitte zeitnah speichern


        ## Abrechnung


        - **Abrechnungsformel**: abgerechnete Dauer = Dauer des Eingabevideos +
        Dauer des Ausgabevideos, sekundengenaue Abrechnung

        - **Auflösungsmultiplikator**: `480p` = 1x (Basis), `720p` = 2x, `1080p`
        = 4x

        - Referenzbilder, Referenzaudio, Referenzdateien und Weblinks werden
        **nicht abgerechnet**

        - Bei `duration` = `-1` (intelligente Dauer) wird zum Höchstwert von
        `30` Sekunden vorab reserviert; nach erfolgreicher Aufgabe wird nach der
        tatsächlichen Ausgabedauer abgerechnet und die Differenz automatisch
        zurückerstattet

        - Das Ein- oder Ausschalten der `audio`-Spur **kostet gleich viel**

        - **Fehlgeschlagene Aufgaben werden nicht abgerechnet**, das
        eingefrorene Guthaben wird vollständig zurückerstattet
      operationId: createWan30ImageToVideo
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VideoGenerationRequest'
            examples:
              first_frame:
                summary: Startbild zu Video
                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: Start- und Endbild zu Video
                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: Videogenerierungsaufgabe erfolgreich erstellt
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VideoGenerationResponse'
        '400':
          description: Ungültige Anfrageparameter
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: invalid_parameter
                  message: Invalid request parameters
                  type: invalid_request_error
        '401':
          description: Nicht autorisiert, ungültiges oder abgelaufenes Token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: unauthorized
                  message: Invalid or expired token
                  type: authentication_error
        '402':
          description: Unzureichendes Kontingent, Aufladung erforderlich
          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: Zugriff verweigert
          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: Ratenlimit überschritten
          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: Interner Serverfehler
          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: Modellname, fest auf `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: >-
            Text-Prompt für die Videogenerierung. Chinesisch und Englisch werden
            unterstützt, **jedes chinesische Zeichen / jeder Buchstabe zählt als
            1 Zeichen**, maximale Länge `20000` Zeichen; alles darüber hinaus
            wird automatisch abgeschnitten (ohne Fehler)


            Beschreiben Sie damit die Bewegung, Kameraführung und
            Bildveränderung, die zwischen Startbild (bzw. Start- und Endbild)
            erwartet wird.
          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 des Startbilds, wird streng als erstes Bild des generierten
            Videos verwendet. **Erforderlich**


            **Bildgrenzen:**

            - Formate: JPEG, JPG, PNG (Transparenz nicht unterstützt), BMP, WEBP

            - Auflösung: Breite und Höhe in `[240, 8000]` Pixel

            - Seitenverhältnis: 1:8 ~ 8:1

            - Dateigröße: max. `20MB`
          example: https://example.com/first_frame.jpg
        image_end:
          type: string
          format: uri
          description: >-
            URL des Endbilds, wird streng als letztes Bild des generierten
            Videos verwendet. Optional


            **Einschränkung:** muss zusammen mit `image_start` verwendet werden,
            **nur ein Endbild zu übergeben wird nicht unterstützt**.


            **Bildgrenzen:**

            - Formate: JPEG, JPG, PNG (Transparenz nicht unterstützt), BMP, WEBP

            - Auflösung: Breite und Höhe in `[240, 8000]` Pixel

            - Seitenverhältnis: 1:8 ~ 8:1

            - Dateigröße: max. `20MB`
          example: https://example.com/last_frame.jpg
        duration:
          type: integer
          description: >-
            Dauer des generierten Videos (Sekunden), Standard `5`


            **Zulässige Werte:**

            - Eine beliebige ganze Zahl zwischen `2` und `30`

            - `-1`: intelligente Dauer, das Modell bestimmt die Ausgabelänge
            anhand von Prompt und Eingabematerial


            **Abrechnung der intelligenten Dauer:** Bei der Übermittlung ist
            nicht bekannt, wie lang das Ergebnis wird, daher wird zum Höchstwert
            von `30` Sekunden **vorab reserviert**; nach erfolgreicher Aufgabe
            wird nach der tatsächlichen Ausgabedauer abgerechnet und der zu viel
            eingefrorene Anteil automatisch freigegeben. Reicht das Guthaben für
            die volle Reservierung nicht aus, geben Sie stattdessen eine
            konkrete Sekundenzahl an.
          default: 5
          example: 5
        quality:
          type: string
          description: >-
            Videoauflösung, Standard `720p`


            **Optionen:**

            - `480p`: geringere Schärfe, niedrigster Preis (Abrechnungsbasis)

            - `720p`: Standardschärfe, dies ist der Standardwert, Preis 2x von
            `480p`

            - `1080p`: hohe Schärfe, Preis 4x von `480p`
          enum:
            - 480p
            - 720p
            - 1080p
          default: 720p
          example: 720p
        aspect_ratio:
          type: string
          description: >-
            Seitenverhältnis des Videos, Standard `adaptive`


            **Optionen:**

            - `adaptive`: adaptiv, das Modell empfiehlt anhand des Verhältnisses
            des Eingabematerials und der Absicht des Prompts ein passendes
            Seitenverhältnis, dies ist der Standardwert

            - `16:9` (Querformat), `9:16` (Hochformat), `1:1` (quadratisch),
            `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: >-
            Ob das Ausgabevideo eine Tonspur enthält, Standard `true`


            **Optionen:**

            - `true`: das Ausgabevideo enthält Ton (Stimmen, Soundeffekte,
            Hintergrundmusik), dies ist der Standardwert

            - `false`: stummes Video


            **Ton an oder aus kostet gleich viel**, es fallen keine Zusatzkosten
            an.
          default: true
          example: true
        seed:
          type: integer
          description: >-
            Zufallsseed zur Reproduktion von Ergebnissen, standardmäßig zufällig


            **Hinweise:**

            - Bereich: `0` ~ `2147483647`

            - Ein fester Seed reduziert beim Iterieren am Prompt die Variation
            und verbessert die Reproduzierbarkeit
          minimum: 0
          maximum: 2147483647
          example: 42
        callback_url:
          type: string
          description: >-
            HTTPS-Callback-URL nach Aufgabenabschluss


            **Callback-Zeitpunkte:**

            - Wird ausgelöst bei Aufgabenabschluss (completed), Fehler (failed)
            oder Abbruch (cancelled)

            - Wird nach Bestätigung der Abrechnung gesendet


            **Sicherheitseinschränkungen:**

            - Nur HTTPS-Protokoll unterstützt

            - Callbacks an interne IP-Adressen sind verboten (127.0.0.1,
            10.x.x.x, 172.16-31.x.x, 192.168.x.x usw.)

            - URL-Länge maximal `2048` Zeichen


            **Callback-Mechanismus:**

            - Timeout: `10` Sekunden

            - Maximal `3` Wiederholungsversuche nach Fehler (jeweils nach
            `1`/`2`/`4` Sekunden)

            - Das Format des Callback-Antwortkörpers entspricht dem
            Rückgabeformat der Aufgabenabfrage-Schnittstelle

            - Ein 2xx-Statuscode gilt als Erfolg, andere Statuscodes lösen
            Wiederholungsversuche aus
          format: uri
          example: https://your-domain.com/webhooks/video-task-completed
    VideoGenerationResponse:
      type: object
      properties:
        created:
          type: integer
          description: Zeitstempel der Aufgabenerstellung
          example: 1761313744
        id:
          type: string
          description: Aufgaben-ID
          example: task-unified-1774857405-abc123
        model:
          type: string
          description: Tatsächlich verwendeter Modellname
          example: wan3.0-image-to-video
        object:
          type: string
          enum:
            - video.generation.task
          description: Spezifischer Aufgabentyp
        progress:
          type: integer
          description: Aufgabenfortschritt in Prozent (0-100)
          minimum: 0
          maximum: 100
          example: 0
        status:
          type: string
          description: Aufgabenstatus
          enum:
            - pending
            - processing
            - completed
            - failed
          example: pending
        task_info:
          $ref: '#/components/schemas/VideoTaskInfo'
          description: Detaillierte Informationen zur Videoaufgabe
        type:
          type: string
          enum:
            - text
            - image
            - audio
            - video
          description: Aufgaben-Ausgabetyp
          example: video
        usage:
          $ref: '#/components/schemas/VideoUsage'
          description: Nutzungs- und Abrechnungsinformationen
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: Fehlercode-Bezeichner
            message:
              type: string
              description: Fehlerbeschreibung
            type:
              type: string
              description: Fehlertyp
    VideoTaskInfo:
      type: object
      properties:
        can_cancel:
          type: boolean
          description: Ob die Aufgabe abgebrochen werden kann
          example: true
        estimated_time:
          type: integer
          description: Geschätzte Abschlusszeit (Sekunden)
          minimum: 0
          example: 165
        video_duration:
          type: integer
          description: Videodauer (Sekunden)
          example: 8
    VideoUsage:
      type: object
      description: Nutzungs- und Abrechnungsinformationen
      properties:
        billing_rule:
          type: string
          description: Abrechnungsregel
          enum:
            - per_call
            - per_token
            - per_second
          example: per_second
        credits_reserved:
          type: number
          description: Geschätzter Guthabenverbrauch
          minimum: 0
          example: 50
        user_group:
          type: string
          description: Benutzergruppenkategorie
          example: default
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        ##Alle Schnittstellen erfordern eine Authentifizierung mit Bearer
        Token##


        **API Key erhalten:**


        Besuchen Sie die
        [API-Key-Verwaltungsseite](https://evolink.ai/dashboard/keys), um Ihren
        API Key zu erhalten


        **Fügen Sie ihn im Anfrage-Header hinzu:**

        ```

        Authorization: Bearer YOUR_API_KEY

        ```

````