Skip to main content
POST
/
v1
/
tasks
Wan Series
curl --request POST \
  --url https://www.qingbo.dev/v1/tasks \
  --header 'Content-Type: application/json' \
  --data '
{
  "model": "<string>",
  "action": "<string>",
  "prompt": "<string>",
  "video_urls": [
    "<string>"
  ],
  "image_urls": [
    "<string>"
  ],
  "aspect_ratio": "<string>",
  "resolution": "<string>",
  "duration": 123,
  "callback_url": "<string>",
  "callback_events": [
    "<string>"
  ],
  "watermark": true,
  "prompt_extend": true,
  "metadata": {}
}
'
import requests

url = "https://www.qingbo.dev/v1/tasks"

payload = {
"model": "<string>",
"action": "<string>",
"prompt": "<string>",
"video_urls": ["<string>"],
"image_urls": ["<string>"],
"aspect_ratio": "<string>",
"resolution": "<string>",
"duration": 123,
"callback_url": "<string>",
"callback_events": ["<string>"],
"watermark": True,
"prompt_extend": True,
"metadata": {}
}
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
model: '<string>',
action: '<string>',
prompt: '<string>',
video_urls: ['<string>'],
image_urls: ['<string>'],
aspect_ratio: '<string>',
resolution: '<string>',
duration: 123,
callback_url: '<string>',
callback_events: ['<string>'],
watermark: true,
prompt_extend: true,
metadata: {}
})
};

fetch('https://www.qingbo.dev/v1/tasks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://www.qingbo.dev/v1/tasks"

payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"action\": \"<string>\",\n \"prompt\": \"<string>\",\n \"video_urls\": [\n \"<string>\"\n ],\n \"image_urls\": [\n \"<string>\"\n ],\n \"aspect_ratio\": \"<string>\",\n \"resolution\": \"<string>\",\n \"duration\": 123,\n \"callback_url\": \"<string>\",\n \"callback_events\": [\n \"<string>\"\n ],\n \"watermark\": true,\n \"prompt_extend\": true,\n \"metadata\": {}\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://www.qingbo.dev/v1/tasks")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"action\": \"<string>\",\n \"prompt\": \"<string>\",\n \"video_urls\": [\n \"<string>\"\n ],\n \"image_urls\": [\n \"<string>\"\n ],\n \"aspect_ratio\": \"<string>\",\n \"resolution\": \"<string>\",\n \"duration\": 123,\n \"callback_url\": \"<string>\",\n \"callback_events\": [\n \"<string>\"\n ],\n \"watermark\": true,\n \"prompt_extend\": true,\n \"metadata\": {}\n}")
.asString();
{
  "task_id": "task-wave1775285160b950328499",
  "model": "wan2.7-videoedit",
  "action": "edit",
  "status": "queued",
  "created_at": 1775285160040,
  "progress": 0
}
Alibaba Tongyi Wanxiang 2.7 video-edit edition. Purpose-built for video-rewriting workflows — feed in a source video plus a text instruction (and up to 4 optional style reference images), get back a new video with style transfer / content replacement / full rewrite. Unlike T2V/I2V, VideoEdit requires video_urls and operates on “reworking an existing video”. Billed by resolution, with linear scaling by source-video duration.
Other tiers in the Wan 2.7 family (T2V / I2V / R2V) are not yet available; please contact sales if you need them.

Pricing

ResolutionUnit price
720P$0.07055 / sec
1080P$0.11645 / sec
VideoEdit is billed by output-video duration; when duration=0 follows the source video, billing is based on the source-video duration.

Examples

curl -X POST https://www.qingbo.dev/v1/tasks \
  -H "Authorization: Bearer $WAVE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "wan2.7-videoedit",
    "action": "edit",
    "prompt": "Change the scene to a snowy day, keep the character motion",
    "video_urls": ["https://cdn.example.com/source.mp4"],
    "duration": 0,
    "resolution": "1080p"
  }'
curl -X POST https://www.qingbo.dev/v1/tasks \
  -H "Authorization: Bearer $WAVE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "wan2.7-videoedit",
    "action": "style_transfer",
    "prompt": "Transfer the entire video to ink-wash painting style",
    "video_urls": ["https://cdn.example.com/source.mp4"],
    "image_urls": [
      "https://cdn.example.com/style-1.jpg",
      "https://cdn.example.com/style-2.jpg"
    ],
    "duration": 0,
    "resolution": "1080p",
    "aspect_ratio": "adaptive"
  }'
curl -X POST https://www.qingbo.dev/v1/tasks \
  -H "Authorization: Bearer $WAVE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "wan2.7-videoedit",
    "action": "video_edit",
    "prompt": "Replace the background with a neon-lit city street",
    "video_urls": ["https://cdn.example.com/source.mp4"],
    "metadata": {"audio_setting": "origin"},
    "duration": 8,
    "resolution": "1080p"
  }'
{
  "task_id": "task-wave1775285160b950328499",
  "model": "wan2.7-videoedit",
  "action": "edit",
  "status": "queued",
  "created_at": 1775285160040,
  "progress": 0
}
After submission, poll status with GET /v1/tasks/{task_id}; see Task System for details.

Available Models

Model IDDescription
wan2.7-videoeditVideo editing — style transfer / content replacement / full rewrite, 720P/1080P, 0-10 sec, ≤ 4 reference images

Common Parameters

model
string
required
Fixed to wan2.7-videoedit
action
string
default:"edit"
Operation type. Allowed values:
  • edit — video edit (default)
  • video_edit — equivalent to edit
  • style_transfer — style transfer
prompt
string
required
Edit instruction text describing the target effect (replacement / transfer / rewrite), up to 5000 characters
video_urls
string[]
required
Source video URL array (single element), required:
  • Base64 not currently supported
  • Public download URL required
image_urls
string[]
Style / content reference image URL array, up to 4
aspect_ratio
string
default:"adaptive"
Frame aspect ratio. Allowed values:
  • 16:9 — landscape widescreen
  • 9:16 — portrait
  • 1:1 — square
  • 4:3 — landscape
  • 3:4 — portrait
  • adaptive — follow source-video ratio (recommended)
resolution
string
default:"720p"
Output resolution. Allowed values:
  • 720p
  • 1080p
duration
integer
default:"0"
Video duration in seconds, range 0-10:
  • 0 — follow source-video duration (recommended)
  • 1-10 — specify output duration
callback_url
string
Webhook callback URL, invoked when the task reaches a terminal state. See Callback Mechanism
callback_events
string[]
Subscribed callback event types; defaults to terminal events

Model-specific Parameters

watermark
boolean
default:"false"
Add an AI-generated watermark to the bottom-right corner
prompt_extend
boolean
default:"true"
Smart prompt rewriting — the backend auto-expands the edit instruction toward the target style
metadata
object
Additional parameter object. Commonly used audio_setting controls the output audio-track strategy:
  • auto — auto-generate audio matching the edited video (default)
  • origin — keep the source video’s original audio track
Example:
{"metadata": {"audio_setting": "origin"}}

Resource Limits

ItemLimit
Source videoMP4/MOV, ≤ 100MB, 2-30 sec, public download required
Style reference imageUp to 4, each ≤ 30MB, JPG/PNG/WEBP
Prompt≤ 5000 characters
OutputMP4, link valid for 24 hours, please download promptly