Save creative draft
/api/v1/mv/draftsAuthentication · x-api-key
Save creative choices without purchasing generation. Updates require expectedVersion to match the stored revision; stale updates return 409.
Request
Unknown fields are not accepted.
-
Request ·
sourceRequiredobjectPublic source media or product reference.
Must match at least one alternative.
2 fields / alternatives
-
Request ·
source · anyOf 1AlternativeobjectUnknown fields are not accepted.
2 fields
-
Request ·
source · anyOf 1.clipIdRequiredstringSource clip identifier.
Minimum characters: 1.
-
Request ·
source · anyOf 1.typeRequired"suno"Source or product type discriminator.
-
-
Request ·
source · anyOf 2AlternativeobjectUnknown fields are not accepted.
6 fields
-
Request ·
source · anyOf 2.audioUrlRequiredstringPublic HTTP(S) audio URL.
Format: uri.
-
Request ·
source · anyOf 2.typeRequired"audio"Source or product type discriminator.
-
Request ·
source · anyOf 2.durationSecOptionalnumberRequested or known media duration in seconds.
Exclusive lower bound: 0.
-
Request ·
source · anyOf 2.lyricsOptionalstringLyrics or lyric context supplied to the operation.
Maximum characters: 5000.
-
Request ·
source · anyOf 2.musicStyleOptionalstringOptional song genre, mood or musical style used to guide automatic visual planning.
Maximum characters: 500.
-
Request ·
source · anyOf 2.titleOptionalstringOptional customer-facing title.
Maximum characters: 200.
-
-
-
Request ·
aspectRatioOptional"16:9" | "9:16" | "1:1" | "4:3" | "3:4"Requested output aspect ratio.
-
Request ·
characterImageOptionalstringPublic character reference image URL.
Format: uri.
-
Request ·
descriptionOptionalstringOptional customer-facing resource description.
Maximum characters: 2000.
-
Request ·
engineVersionOptional"vidu-v2" | "omn-v1"Generation option for this draft. Defaults to vidu-v2; omn-v1 requires successful capability and preflight checks.
Default: "vidu-v2".
-
Request ·
performanceModeOptional"auto" | "story" | "perform" | "dance" | "sing" | "sing_perform" | "sing_dance" | "sing_play"Omit or use auto for song-led planning. On Omn V1, auto and story use narrative rendering without forced stage performance. story, sing_dance (singing and dancing) and sing_play (singing while playing an instrument) are Omn-only; perform means stage or instrumental performance. Singing and dance require explicit selection.
Default: "auto".
-
Request ·
referenceImagesOptionalarray<string>Public reference image URLs.
Maximum items: 6.
1 field
-
Request ·
referenceImages[]Each itemstringFormat: uri.
-
-
Request ·
renderTierOptional"draft" | "standard" | "hd" | "ultra"Omn V1 only. draft delivers 540p; standard 720p; hd 1080p; ultra 720p, 1080p or 1440p. When omitted: resolution=1440p or quality="high" selects ultra, standard quality selects draft at 540p and standard at 720p and hd at 1080p. Native shot rendering offers these tiers for both managed versions subject to capability and preflight checks. Dance motion transfer supports draft or standard only.
-
Request ·
resolutionOptional"540p" | "720p" | "1080p" | "1440p"Omn V1 delivery resolution. Defaults to the selected tier's default, or 720p. Must match renderTier when supplied.
Default: "540p".
-
Request ·
scheduleOptional"standard" | "economy"Omn V1 only. economy renders shots only in the off-peak window at the same video price as standard scheduling, with a longer delivery window: shots start between 00:00 and 07:40 Beijing time (no new shot in the window's last 20 minutes, so none runs into peak pricing). MVView.generation.scheduleWindow reports the window the waiting shots are bought in; its offPeakEndsAt is the 08:00 window end.
-
Request ·
styleIdOptional"auto" | "cinematic" | "anime" | "ink" | "3d" | "vaporwave" | "brand"Omit or use auto to let the planner choose visual art direction.
Default: "auto".
-
Request ·
subtitlesOptionalbooleanWhether subtitles are enabled for the MV.
Responses
200 OK
application/json
-
Response 200 ·
briefRequiredobjectSaved creative choices and source media. Omitted visual style and performance use automatic song-led planning.
Unknown fields are not accepted.
12 fields
-
Response 200 ·
brief.sourceRequiredobjectMust match at least one alternative.
2 fields / alternatives
-
Response 200 ·
brief.source · anyOf 1AlternativeobjectUnknown fields are not accepted.
2 fields
-
Response 200 ·
brief.source · anyOf 1.clipIdRequiredstringMinimum characters: 1.
-
Response 200 ·
brief.source · anyOf 1.typeRequired"suno"
-
-
Response 200 ·
brief.source · anyOf 2AlternativeobjectUnknown fields are not accepted.
6 fields
-
Response 200 ·
brief.source · anyOf 2.audioUrlRequiredstringFormat: uri.
-
Response 200 ·
brief.source · anyOf 2.typeRequired"audio" -
Response 200 ·
brief.source · anyOf 2.durationSecOptionalnumberExclusive lower bound: 0.
-
Response 200 ·
brief.source · anyOf 2.lyricsOptionalstringMaximum characters: 5000.
-
Response 200 ·
brief.source · anyOf 2.musicStyleOptionalstringOptional song genre, mood or musical style used to guide automatic visual planning.
Maximum characters: 500.
-
Response 200 ·
brief.source · anyOf 2.titleOptionalstringMaximum characters: 200.
-
-
-
Response 200 ·
brief.aspectRatioOptional"16:9" | "9:16" | "1:1" | "4:3" | "3:4" -
Response 200 ·
brief.characterImageOptionalstringFormat: uri.
-
Response 200 ·
brief.descriptionOptionalstringMaximum characters: 2000.
-
Response 200 ·
brief.engineVersionOptional"vidu-v2" | "omn-v1"Generation option for this draft. Defaults to vidu-v2; omn-v1 requires successful capability and preflight checks.
Default: "vidu-v2".
-
Response 200 ·
brief.performanceModeOptional"auto" | "story" | "perform" | "dance" | "sing" | "sing_perform" | "sing_dance" | "sing_play"Omit or use auto for song-led planning. On Omn V1, auto and story use narrative rendering without forced stage performance. story, sing_dance (singing and dancing) and sing_play (singing while playing an instrument) are Omn-only; perform means stage or instrumental performance. Singing and dance require explicit selection.
Default: "auto".
-
Response 200 ·
brief.referenceImagesOptionalarray<string>Maximum items: 6.
1 field
-
Response 200 ·
brief.referenceImages[]Each itemstringFormat: uri.
-
-
Response 200 ·
brief.renderTierOptional"draft" | "standard" | "hd" | "ultra"Omn V1 only. draft delivers 540p; standard 720p; hd 1080p; ultra 720p, 1080p or 1440p. When omitted: resolution=1440p or quality="high" selects ultra, standard quality selects draft at 540p and standard at 720p and hd at 1080p. Native shot rendering offers these tiers for both managed versions subject to capability and preflight checks. Dance motion transfer supports draft or standard only.
-
Response 200 ·
brief.resolutionOptional"540p" | "720p" | "1080p" | "1440p"Omn V1 delivery resolution. Defaults to the selected tier's default, or 720p. Must match renderTier when supplied.
Default: "540p".
-
Response 200 ·
brief.scheduleOptional"standard" | "economy"Omn V1 only. economy renders shots only in the off-peak window at the same video price as standard scheduling, with a longer delivery window: shots start between 00:00 and 07:40 Beijing time (no new shot in the window's last 20 minutes, so none runs into peak pricing). MVView.generation.scheduleWindow reports the window the waiting shots are bought in; its offPeakEndsAt is the 08:00 window end.
-
Response 200 ·
brief.styleIdOptional"auto" | "cinematic" | "anime" | "ink" | "3d" | "vaporwave" | "brand"Omit or use auto to let the planner choose visual art direction.
Default: "auto".
-
Response 200 ·
brief.subtitlesOptionalboolean
-
-
Response 200 ·
expiresAtRequiredstring -
Response 200 ·
idRequiredstring -
Response 200 ·
planRequiredobject5 fields
-
Response 200 ·
plan.performanceModeRequired"auto" | "story" | "perform" | "dance" | "sing" | "sing_perform" | "sing_dance" | "sing_play" -
Response 200 ·
plan.requiresPortraitRequiredboolean -
Response 200 ·
plan.statusRequired"action_required" | "ready_for_preflight" -
Response 200 ·
plan.styleRequiredstring -
Response 200 ·
plan.warningCodesOptionalarray<string>Advisory adjustments applied when this draft is compiled, for example MV_SUBTITLE_DISABLED_NO_TIMELINE for an Omn V1 audio draft without subtitle timing.
1 field
-
Response 200 ·
plan.warningCodes[]Each itemstringMV advisory warning codes. Non-fatal: the request still succeeds; these flag degraded, adjusted, or automatically recovered inputs and are projected into public Task warningCodes. Omn review codes (MV_NATIVE_CREATIVE_*, MV_NATIVE_SHOT_INTERNAL_CUT, MV_NATIVE_FRAME_BORDERS) describe the delivered video; their observations and affected scenes are in `quality` of GET /api/v1/tasks/{taskId}/workflow.
-
-
-
Response 200 ·
versionRequiredstring | integerMust match at least one alternative.
2 fields / alternatives
-
Response 200 ·
version · anyOf 1AlternativestringFormat: integer. Default: 0.
-
Response 200 ·
version · anyOf 2Alternativeinteger
-
400 Bad Request
application/json
-
Response 400 ·
errorRequiredobject3 fields
-
Response 400 ·
error.codeRequiredstringApplication-specific error code (see error catalog)
-
Response 400 ·
error.messageRequiredstringHuman readable error message
-
Response 400 ·
error.detailsOptionalobjectAdditional error details (optional)
-
-
Response 400 ·
successRequiredfalseAlways false for error responses
401 Unauthorized
application/json
-
Response 401 ·
errorRequiredobject3 fields
-
Response 401 ·
error.codeRequiredstringApplication-specific error code (see error catalog)
-
Response 401 ·
error.messageRequiredstringHuman readable error message
-
Response 401 ·
error.detailsOptionalobjectAdditional error details (optional)
-
-
Response 401 ·
successRequiredfalseAlways false for error responses
403 Forbidden
application/json
-
Response 403 ·
errorRequiredobject3 fields
-
Response 403 ·
error.codeRequiredstringApplication-specific error code (see error catalog)
-
Response 403 ·
error.messageRequiredstringHuman readable error message
-
Response 403 ·
error.detailsOptionalobjectAdditional error details (optional)
-
-
Response 403 ·
successRequiredfalseAlways false for error responses
404 Not Found
application/json
-
Response 404 ·
errorRequiredobject3 fields
-
Response 404 ·
error.codeRequiredstringApplication-specific error code (see error catalog)
-
Response 404 ·
error.messageRequiredstringHuman readable error message
-
Response 404 ·
error.detailsOptionalobjectAdditional error details (optional)
-
-
Response 404 ·
successRequiredfalseAlways false for error responses
409 Conflict
application/json
-
Response 409 ·
errorRequiredobject3 fields
-
Response 409 ·
error.codeRequiredstringApplication-specific error code (see error catalog)
-
Response 409 ·
error.messageRequiredstringHuman readable error message
-
Response 409 ·
error.detailsOptionalobjectAdditional error details (optional)
-
-
Response 409 ·
successRequiredfalseAlways false for error responses
429 Too Many Requests
Request allowance or task admission capacity exceeded. Follow Retry-After when present; otherwise wait for active tasks and use bounded backoff. Limits do not guarantee throughput. For SSE, this is the HTTP connection response, not an event.
application/json
-
Response 429 ·
errorRequiredobject3 fields
-
Response 429 ·
error.codeRequiredstringRATE_LIMITED for request and task admission rejections.
-
Response 429 ·
error.messageRequiredstring -
Response 429 ·
error.detailsOptionalobjectOptional and scope-dependent. Request limits supply scope/policy/type/limit/current/retryAfterSec. Task admission supplies inFlight/limit/tier, plus scope=apiKey for a key cap. IP rejection can omit details. In-flight rejection does not promise Retry-After.
8 fields
-
Response 429 ·
error.details.currentOptionalintegerMinimum: 0.
-
Response 429 ·
error.details.inFlightOptionalintegerMinimum: 0.
-
Response 429 ·
error.details.limitOptionalintegerMinimum: 0.
-
Response 429 ·
error.details.policyOptional"operation" | "query" -
Response 429 ·
error.details.retryAfterSecOptionalintegerMinimum: 1.
-
Response 429 ·
error.details.scopeOptional"user" | "api-key" | "ip" | "apiKey" -
Response 429 ·
error.details.tierOptional"FREE" | "PREMIUM" | "ENTERPRISE" -
Response 429 ·
error.details.typeOptional"rps" | "daily" | "monthly"
-
-
-
Response 429 ·
successRequiredfalseDefault: false.
500 Internal Server Error
application/json
-
Response 500 ·
errorRequiredobject3 fields
-
Response 500 ·
error.codeRequiredstringApplication-specific error code (see error catalog)
-
Response 500 ·
error.messageRequiredstringHuman readable error message
-
Response 500 ·
error.detailsOptionalobjectAdditional error details (optional)
-
-
Response 500 ·
successRequiredfalseAlways false for error responses