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

# VideoRetalk Videogenerierung

> - Audiobetriebene Lippensynchron-Videogenerierung – ersetzt die Lippenbewegungen der Person im Video durch passende Bewegungen zur Zielaudiodatei
- Asynchroner Verarbeitungsmodus; verwenden Sie die zurückgegebene Aufgaben-ID, um das [Ergebnis abzufragen](/de/api-manual/task-management/get-task-detail)
- Generierte Videolinks sind 24 Stunden gültig – bitte rechtzeitig speichern

**Typische Anwendungsfälle:**
- Mehrsprachige Synchronisation: Lippenbewegungen im Originalvideo durch eine andere Sprache ersetzen
- Virtueller Moderator: Charaktervideo mit TTS-generiertem Audio antreiben
- Werbung: dasselbe Videomaterial schnell in mehrsprachigen Versionen produzieren
- Bildung und Training: Vorlesungsvideos durch Erklärungen in verschiedenen Sprachen ersetzen

**Hinweise:**
- Eingabe-URLs müssen öffentlich zugänglich sein
- Das Video muss ein menschliches Gesicht enthalten; andernfalls schlägt die Aufgabe fehl
- `ref_image_url` angeben, wenn mehrere Gesichter im Video vorhanden sind



## OpenAPI

````yaml de/api-manual/video-series/videoretalk/videoretalk-video-generate.json POST /v1/videos/generations
openapi: 3.1.0
info:
  title: VideoRetalk Lippensynchron-Videogenerierung API
  description: >-
    Audiobetriebene Lippensynchron-Videogenerierung. Geben Sie ein sprechendes
    Video und eine Zielaudiodatei an, um die Lippenbewegungen der Person im
    Video durch passende Bewegungen zur Zielaudiodatei zu ersetzen.
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://api.evolink.ai
    description: Produktionsumgebung
security:
  - bearerAuth: []
tags:
  - name: Lippensynchron-Video
    description: VideoRetalk Lippensynchron-Videogenerierung API-Endpunkte
paths:
  /v1/videos/generations:
    post:
      tags:
        - Lippensynchron-Video
      summary: VideoRetalk Lippensynchron-Videogenerierung
      description: >-
        - Audiobetriebene Lippensynchron-Videogenerierung – ersetzt die
        Lippenbewegungen der Person im Video durch passende Bewegungen zur
        Zielaudiodatei

        - Asynchroner Verarbeitungsmodus; verwenden Sie die zurückgegebene
        Aufgaben-ID, um das [Ergebnis
        abzufragen](/de/api-manual/task-management/get-task-detail)

        - Generierte Videolinks sind 24 Stunden gültig – bitte rechtzeitig
        speichern


        **Typische Anwendungsfälle:**

        - Mehrsprachige Synchronisation: Lippenbewegungen im Originalvideo durch
        eine andere Sprache ersetzen

        - Virtueller Moderator: Charaktervideo mit TTS-generiertem Audio
        antreiben

        - Werbung: dasselbe Videomaterial schnell in mehrsprachigen Versionen
        produzieren

        - Bildung und Training: Vorlesungsvideos durch Erklärungen in
        verschiedenen Sprachen ersetzen


        **Hinweise:**

        - Eingabe-URLs müssen öffentlich zugänglich sein

        - Das Video muss ein menschliches Gesicht enthalten; andernfalls schlägt
        die Aufgabe fehl

        - `ref_image_url` angeben, wenn mehrere Gesichter im Video vorhanden
        sind
      operationId: createVideoRetalkGeneration
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VideoRetalkRequest'
            examples:
              minimal:
                summary: Minimaler Aufruf
                value:
                  model: videoretalk
                  video_url: https://example.com/speaker.mp4
                  audio_url: https://example.com/target-speech.wav
              multi_face:
                summary: Mehrere Gesichter + Videoerweiterung
                value:
                  model: videoretalk
                  video_url: https://example.com/two-people-talking.mp4
                  audio_url: https://example.com/long-speech.wav
                  ref_image_url: https://example.com/target-person-face.jpg
                  video_extension: true
                  query_face_threshold: 150
              adjust_threshold:
                summary: Gesichtserkennungsempfindlichkeit anpassen
                value:
                  model: videoretalk
                  video_url: https://example.com/speaker.mp4
                  audio_url: https://example.com/speech.wav
                  query_face_threshold: 140
      responses:
        '200':
          description: Lippensynchron-Videogenerierungsaufgabe erfolgreich erstellt
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VideoRetalkResponse'
        '400':
          description: Ungültige Anfrageparameter
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: missing_required_params
                  message: 'Missing required parameter: video_url or audio_url'
                  type: invalid_request_error
        '401':
          description: Nicht authentifiziert, 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 Guthaben, 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: videoretalk'
                  type: invalid_request_error
        '429':
          description: Anfragelimit ü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:
    VideoRetalkRequest:
      type: object
      required:
        - model
        - video_url
        - audio_url
      properties:
        model:
          type: string
          description: Modellname
          enum:
            - videoretalk
          default: videoretalk
          example: videoretalk
        video_url:
          type: string
          format: uri
          description: >-
            Eingabevideo-URL mit der Person, deren Lippenbewegungen ersetzt
            werden sollen


            **Anforderungen:**

            - Öffentlich zugängliche Video-URL

            - Formate: MP4, MOV und andere gängige Formate

            - Das Video muss ein klar sichtbares menschliches Gesicht enthalten

            - Empfohlene Länge: `2` ~ `300` Sekunden
          example: https://example.com/speaker.mp4
        audio_url:
          type: string
          format: uri
          description: >-
            Zielaudio-URL – die Person im Video wird ihre Lippen zu diesem Audio
            synchronisieren


            **Anforderungen:**

            - Öffentlich zugängliche Audio-URL

            - Formate: WAV, MP3, M4A und andere gängige Formate

            - Empfohlen: menschliche Sprachinhalte
          example: https://example.com/target-speech.wav
        ref_image_url:
          type: string
          format: uri
          description: >-
            Referenzgesichtsbild-URL


            Wenn das Video **mehrere Gesichter** enthält, verwenden Sie dieses
            Bild, um das Zielgesicht anzugeben, dessen Lippenbewegungen ersetzt
            werden sollen


            **Anforderungen:**

            - Das Bild sollte eine klare Frontansicht des Gesichts der
            Zielperson zeigen

            - Nur erforderlich, wenn das Video mehrere Gesichter enthält
          example: https://example.com/target-person-face.jpg
        video_extension:
          type: boolean
          description: >-
            Gibt an, ob das Video automatisch auf die Audiolänge erweitert
            werden soll, wenn das Audio länger als das Video ist


            - `true`: Ausgabelänge = Audiolänge (Video wird automatisch
            erweitert)

            - `false`: Ausgabelänge = min(Videolänge, Audiolänge)
          default: false
          example: false
        query_face_threshold:
          type: integer
          description: >-
            Konfidenzschwellenwert für die Gesichtserkennung


            - Bereich: `120` ~ `200`

            - Niedrigere Werte erleichtern die Erkennung (können zu
            Fehlerkennung führen)

            - Höhere Werte sind strenger (können zu fehlgeschlagener Erkennung
            führen)

            - Wenn `Kein passendes Gesicht gefunden` gemeldet wird, Wert
            verringern (z. B. `140`)

            - Wenn das falsche Gesicht erkannt wird, Wert erhöhen (z. B. `190`)
          default: 170
          minimum: 120
          maximum: 200
          example: 170
        callback_url:
          type: string
          description: >-
            HTTPS-Callback-URL, die nach Abschluss der Aufgabe aufgerufen wird


            **Auslösebedingungen:**

            - Wird ausgelöst, wenn die Aufgabe abgeschlossen, fehlgeschlagen
            oder abgebrochen wurde

            - Wird nach Abrechnungsbestätigung gesendet


            **Sicherheitsbeschränkungen:**

            - Nur HTTPS

            - Interne IP-Adressen werden blockiert (127.0.0.1, 10.x.x.x,
            172.16-31.x.x, 192.168.x.x usw.)

            - URL-Länge darf `2048` Zeichen nicht überschreiten


            **Callback-Verhalten:**

            - Timeout: `10` Sekunden

            - Bis zu `3` Wiederholungsversuche nach Fehlern (nach 1s / 2s / 4s)

            - Antwortformat entspricht der Aufgaben-Abfrage-API

            - HTTP-2xx-Statuscode gilt als Erfolg; andere Codes lösen einen
            Wiederholungsversuch aus
          format: uri
          example: https://your-domain.com/webhooks/video-task-completed
    VideoRetalkResponse:
      type: object
      properties:
        created:
          type: integer
          description: Zeitstempel der Aufgabenerstellung
          example: 1775200000
        id:
          type: string
          description: Aufgaben-ID
          example: task-unified-1775200000-xyz12345
        model:
          type: string
          description: Tatsächlich verwendeter Modellname
          example: videoretalk
        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

            | Status | Fortschritt | Beschreibung |
            |------|----------|------|
            | `pending` | 0~10 | Wartet auf Verarbeitung |
            | `processing` | 10~80 | In Bearbeitung |
            | `completed` | 100 | Abgeschlossen |
            | `failed` | 0 | Fehlgeschlagen |
          enum:
            - pending
            - processing
            - completed
            - failed
          example: pending
        task_info:
          $ref: '#/components/schemas/VideoTaskInfo'
          description: Details zur Videoaufgabe
        type:
          type: string
          enum:
            - video
          description: Ausgabetyp der Aufgabe
          example: video
        usage:
          $ref: '#/components/schemas/VideoUsage'
          description: Nutzungs- und Abrechnungsinformationen
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: Fehlercodekennung
            message:
              type: string
              description: Fehlerbeschreibung
            type:
              type: string
              description: Fehlertyp
    VideoTaskInfo:
      type: object
      properties:
        can_cancel:
          type: boolean
          description: Gibt an, ob die Aufgabe abgebrochen werden kann
          example: false
        estimated_time:
          type: integer
          description: Geschätzte Abschlusszeit (Sekunden)
          minimum: 0
          example: 90
        video_duration:
          type: integer
          description: Geschätzte Videolänge (Sekunden)
          example: 0
    VideoUsage:
      type: object
      description: Nutzungsinformationen
      properties:
        billing_rule:
          type: string
          description: Abrechnungsregel
          enum:
            - per_second
          example: per_second
        credits_reserved:
          type: number
          description: >-
            Geschätzte zu verbrauchende Credits (basierend auf Video- und
            Audiolänge)
          minimum: 0
          example: 480
        user_group:
          type: string
          description: Benutzergruppenkategorie
          example: default
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        ##Alle Endpunkte erfordern eine Bearer-Token-Authentifizierung##


        **API-Schlüssel abrufen:**


        Besuchen Sie die
        [API-Schlüsselverwaltungsseite](https://evolink.ai/dashboard/keys), um
        Ihren API-Schlüssel zu erhalten


        **Fügen Sie folgenden Header zu jeder Anfrage hinzu:**

        ```

        Authorization: Bearer YOUR_API_KEY

        ```

````