Submit a video generation request
Submits an asynchronous video generation job. Returns 202 immediately with a job id (prefixed vjob_); poll GET /api/v1/videos/{id} until status is completed, then download via unsigned_urls. Billing: credits are reserved at submit from duration × resolution, and settled on the actual delivered seconds (usage.cost in the poll response).
/api/v1/videosAuthorizations
AuthorizationrequiredAPI key as bearer token in the Authorization header.
Body
modelrequiredThe video generation model ID (provider-qualified).
"alibaba/wan2.7-t2v"promptrequiredThe text prompt describing the video to generate.
durationVideo length in seconds. Defaults to 2. Each model has tighter bounds — e.g. reference-to-video (r2v) allows 2–10s; out-of-range values return 400 before any credits are reserved.
5resolutionOutput quality tier, default "720p". Supported tiers vary per model; an unsupported tier returns 400 before any credits are reserved, and the error lists the tiers the model does support.
480p720p1080p"720p"aspect_ratioAspect ratio. Common values: "16:9", "9:16", "1:1", "4:3", "3:4"; the exact set depends on the model (some also take wide ratios like "21:9"). Unsupported combinations return 400 before credits are reserved; modes that take an input frame derive the ratio from the frame and ignore this field.
16:99:161:14:33:43:22:321:99:21"16:9"frame_imagesFirst/last keyframe images (image-to-video, keyframe-to-video). Accepts bare URL strings, or objects { type: "image", image_url: { url }, frame_type: "first" | "last" }.
input_referencesReference assets (reference-to-video): guide generation with reference items — prefer object form { type: "image", image_url: { url } } (bare URL strings are also accepted and treated as image references). Image references are the most widely supported; audio/video reference objects are forwarded as-is and only take effect on models that support them — other models use the image references and ignore the rest. Only models with an r2v mode accept this field.
input_videoSource video (video-edit models only; a BazaarLink extension field). Accepts a URL string, { video_url: { url } }, or { url }. Ignored by non-video-edit models. Editing bills on source seconds + delivered output seconds.
generate_audioWhether to also generate audio. Only effective on audio-capable models; audio seconds bill at a higher per-second rate.
watermarkWhether to watermark the output. Defaults to false — BazaarLink actively disables upstream default watermarks unless you explicitly pass true.
seedSampling seed. Reproducibility guarantees vary by model.
callback_urlA webhook URL called on the job's terminal state, so you don't have to poll. HTTPS only, and SSRF-checked (private/internal addresses rejected) before any credits are reserved. Fires exactly once, only from the request that wins the terminal-state determination; delivery is retried on failure (2 attempts, 2s/8s backoff), and exhausting retries never affects billing or the job's real status. No signature in v1 — treat the callback as a hint, and confirm status/amount by calling GET /v1/videos/{id} with your API key before acting on it. ⚠️ unsigned_urls in the webhook payload are absolute URLs, unlike the relative paths returned by the poll endpoint.