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

# Créer une tâche d’édition multimodale Kling

> Créez une tâche d’édition vidéo multimodale Kling via CometAPI : POST /kling/v1/videos/multi-elements pour combiner plusieurs éléments et générer des vidéos de manière asynchrone.

Utilisez ce endpoint pour soumettre le job final d’édition vidéo multimodale une fois que votre session et vos sélections sont prêtes.

## Workflow complet

<Steps>
  <Step title="Initialiser la session d’édition">
    Commencez par [Initialize Video for Editing](./initialize-video-for-editing) pour obtenir le `session_id` du clip que vous souhaitez modifier.
  </Step>

  <Step title="Construire la zone de sélection">
    Utilisez [Add Video Selection](./add-video-selection) et, si nécessaire, [Preview Selected Video Area](./preview-selected-video-area) pour affiner la région d’édition.
  </Step>

  <Step title="Soumettre la tâche finale">
    Envoyez le `session_id`, le `edit_mode`, le `prompt` final, ainsi que tous les paramètres de génération facultatifs via ce endpoint, puis enregistrez l’id de tâche renvoyé pour les vérifications de statut.
  </Step>
</Steps>

## Avant de l’appeler

* Assurez-vous que la session de sélection est déjà initialisée
* Vérifiez que votre sélection de région est correcte avant de consommer un appel de génération
* Exécutez les appels de suivi de sélection sur le même compte et avec le `session_id` exact renvoyé lors de l’initialisation
* Définissez `edit_mode` sur `addition`, `swap` ou `removal`
* Fournissez `image_list` pour `addition` et `swap` ; omettez `image_list` pour `removal`
* Envoyez `duration` sous forme de chaîne comme `"5"` ou `"10"` ; les exemples transmettent explicitement `"5"`
* Traitez cette route comme l’étape finale de génération, et non comme l’étape de configuration
* Ajoutez `image_list`, `negative_prompt`, `mode`, `duration`, `callback_url` ou `external_task_id` uniquement lorsque le workflow d’édition en a besoin

<Tip>
  Pour la référence complète des paramètres, consultez la [documentation de l’API Kling](https://kling.ai/document-api/apiReference/model/multiElements).
</Tip>


## OpenAPI

````yaml api/openapi/video/kling/multimodal-video-editing/post-create-task.openapi.json POST /kling/v1/videos/multi-elements
openapi: 3.1.0
info:
  title: Create Task API
  version: 1.0.0
  description: >-
    Submit the final Kling multimodal video-editing job after the selection
    session is ready.
servers:
  - url: https://api.cometapi.com
security:
  - bearerAuth: []
paths:
  /kling/v1/videos/multi-elements:
    post:
      summary: Create a Kling multimodal edit task
      description: >-
        Send the `session_id`, `edit_mode`, and final edit prompt after the
        selection area has already been prepared.
      operationId: create_task
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - session_id
                - edit_mode
                - prompt
              allOf:
                - if:
                    properties:
                      edit_mode:
                        const: addition
                    required:
                      - edit_mode
                  then:
                    required:
                      - image_list
                - if:
                    properties:
                      edit_mode:
                        const: swap
                    required:
                      - edit_mode
                  then:
                    required:
                      - image_list
              properties:
                session_id:
                  type: string
                  description: >-
                    Selection session id returned by init-selection. Follow-up
                    calls must use the same account and exact session id.
                edit_mode:
                  type: string
                  description: >-
                    Editing operation for the selected video region. Use
                    `addition` to add an element, `swap` to replace a selected
                    element, or `removal` to remove it.
                  enum:
                    - addition
                    - swap
                    - removal
                prompt:
                  type: string
                  description: >-
                    Instruction describing the desired edit. Reference the
                    source video as `<<<video_1>>>` and any reference image as
                    `<<<image_1>>>`.
                model_name:
                  type: string
                  description: >-
                    Kling model variant for the final edit task. Omit to use
                    `kling-v1-6`.
                  enum:
                    - kling-v1-6
                  default: kling-v1-6
                image_list:
                  type: array
                  description: >-
                    Image references used by `addition` and `swap` tasks. Omit
                    this field for `removal` tasks.
                  minItems: 1
                  items:
                    type: object
                    required:
                      - image
                    properties:
                      image:
                        type: string
                negative_prompt:
                  type: string
                  description: Elements to avoid in the edited result.
                mode:
                  type: string
                  description: Generation mode. Use `std` or `pro`.
                  enum:
                    - std
                    - pro
                duration:
                  type: string
                  description: Requested output duration in seconds.
                callback_url:
                  type: string
                  description: Webhook URL to receive task status updates.
                external_task_id:
                  type: string
                  description: >-
                    Custom task id for your own tracking. Must be unique per
                    account.
              default:
                session_id: <session_id>
                edit_mode: removal
                prompt: Delete the selected object from <<<video_1>>>
                mode: std
                duration: '5'
            examples:
              Default:
                summary: Multi-elements edit task
                value:
                  session_id: <session_id>
                  edit_mode: removal
                  prompt: Delete the selected object from <<<video_1>>>
                  mode: std
                  duration: '5'
              Addition:
                summary: Add an image element to the selected area
                value:
                  session_id: <session_id>
                  edit_mode: addition
                  image_list:
                    - image: https://your-image-host/object-to-add.jpg
                  prompt: >-
                    Add <<<image_1>>> naturally into <<<video_1>>> at the
                    selected area
                  mode: std
                  duration: '5'
              Swap:
                summary: Swap the selected element with an image reference
                value:
                  session_id: <session_id>
                  edit_mode: swap
                  image_list:
                    - image: https://your-image-host/new-object.jpg
                  prompt: >-
                    Use <<<image_1>>> to replace the selected object in
                    <<<video_1>>>
                  mode: std
                  duration: '5'
      responses:
        '200':
          description: Task accepted.
          content:
            application/json:
              schema:
                type: object
                required:
                  - code
                  - message
                  - data
                properties:
                  code:
                    type: integer
                  message:
                    type: string
                  data:
                    type: object
                    properties:
                      task_id:
                        type: string
                      task_status:
                        type: string
                      created_at:
                        type: integer
                      updated_at:
                        type: integer
                    additionalProperties: true
      x-codeSamples:
        - lang: Shell
          label: Default
          source: |
            curl https://api.cometapi.com/kling/v1/videos/multi-elements \
              -H "Authorization: Bearer $COMETAPI_KEY" \
              -H "Content-Type: application/json" \
              -d '{
                  "session_id": "<session_id>",
                  "edit_mode": "removal",
                  "prompt": "Delete the selected object from <<<video_1>>>",
                  "mode": "std",
                  "duration": "5"
                }'
        - lang: Python
          label: Default
          source: |
            import os
            import requests

            response = requests.post(
                "https://api.cometapi.com/kling/v1/videos/multi-elements",
                headers={"Authorization": "Bearer " + os.environ["COMETAPI_KEY"]},
                json={
                  "session_id": "<session_id>",
                  "edit_mode": "removal",
                  "prompt": "Delete the selected object from <<<video_1>>>",
                  "mode": "std",
                  "duration": "5"
                },
            )

            result = response.json()
            print(result.get("code"), result.get("data", {}).get("task_id"))
        - lang: JavaScript
          label: Default
          source: >
            const response = await
            fetch("https://api.cometapi.com/kling/v1/videos/multi-elements", {
              method: "POST",
              headers: {
                Authorization: `Bearer ${process.env.COMETAPI_KEY}`,
                "Content-Type": "application/json",
              },
              body: JSON.stringify({
                "session_id": "<session_id>",
                "edit_mode": "removal",
                "prompt": "Delete the selected object from <<<video_1>>>",
                "mode": "std",
                "duration": "5"
              }),
            });


            const result = await response.json();

            console.log(result.code, result.data?.task_id);
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Bearer token authentication. Use your CometAPI key.

````