{
  "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",
        "operationId": "create_task",
        "description": "Send the `session_id`, `edit_mode`, and final edit prompt after the selection area has already been prepared.",
        "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 \\\n  -H \"Authorization: Bearer $COMETAPI_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n      \"session_id\": \"<session_id>\",\n      \"edit_mode\": \"removal\",\n      \"prompt\": \"Delete the selected object from <<<video_1>>>\",\n      \"mode\": \"std\",\n      \"duration\": \"5\"\n    }'\n"
          },
          {
            "lang": "Python",
            "label": "Default",
            "source": "import os\nimport requests\n\nresponse = requests.post(\n    \"https://api.cometapi.com/kling/v1/videos/multi-elements\",\n    headers={\"Authorization\": \"Bearer \" + os.environ[\"COMETAPI_KEY\"]},\n    json={\n      \"session_id\": \"<session_id>\",\n      \"edit_mode\": \"removal\",\n      \"prompt\": \"Delete the selected object from <<<video_1>>>\",\n      \"mode\": \"std\",\n      \"duration\": \"5\"\n    },\n)\n\nresult = response.json()\nprint(result.get(\"code\"), result.get(\"data\", {}).get(\"task_id\"))\n"
          },
          {
            "lang": "JavaScript",
            "label": "Default",
            "source": "const response = await fetch(\"https://api.cometapi.com/kling/v1/videos/multi-elements\", {\n  method: \"POST\",\n  headers: {\n    Authorization: `Bearer ${process.env.COMETAPI_KEY}`,\n    \"Content-Type\": \"application/json\",\n  },\n  body: JSON.stringify({\n    \"session_id\": \"<session_id>\",\n    \"edit_mode\": \"removal\",\n    \"prompt\": \"Delete the selected object from <<<video_1>>>\",\n    \"mode\": \"std\",\n    \"duration\": \"5\"\n  }),\n});\n\nconst result = await response.json();\nconsole.log(result.code, result.data?.task_id);\n"
          }
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "Bearer token authentication. Use your CometAPI key."
      }
    }
  }
}
