Create Video Generation
Create a BytePlus Seedance video generation task.
Returns immediately with {"id": "<task_id>"}.
Poll GET /v1/video/generations/{id} until status is
succeeded, failed, or expired.
Pass callback_url to receive a POST notification when the task
status changes. We intercept the BytePlus callback, update our DB,
then forward the full task payload to your URL.
Authorizations
Enter your MeshAPI key (rsk_...) or, for the admin-keys endpoints, a dashboard session token — sent as Authorization: Bearer <token>.
Headers
Dated version of the API contract to pin this request to. Omit it and the request is served under 2026-08 — the oldest supported version, so an existing integration is never moved by a release. A malformed or unsupported value is rejected with 400 invalid_api_version rather than falling back silently. The version actually served is echoed as X-Mesh-Version on every response, including errors.
2026-08, 2026-09 Body
Which model generates the video. Use an id from GET /v1/models.
Your prompt, plus any images, video or audio the model should work from.
Continue from one of your earlier finished videos instead of uploading it again.
We POST the finished task here when the model supports callbacks; a model that does not is refused rather than silently never calling you. Delivery is best effort and is not retried, so keep polling as your fallback.
Also return a still of the final frame, so you can chain it into the next clip.
Pick a faster or cheaper processing tier, where the model offers one.
Seconds before an unfinished task is given up on. Defaults to 48 hours.
Generate a soundtrack along with the picture.
Generate a quick low-resolution preview instead of the finished video.
Output resolution, such as 720p or 1080p, or an exact size like 1280x720 on the models that take one.
Aspect ratio, such as 16:9 or 9:16. Use adaptive to follow your input.
How long the video should be, in seconds.
1 <= x <= 300Make the video as long as the source video you sent, instead of a fixed length. Cannot be combined with duration.
Skip some prompt pre-processing so generation starts sooner.
Exact number of frames, as an alternative to duration.
Reuse a seed to get a similar result again.
Hold the camera still instead of letting it move.
Add the model's watermark to the output.
A stable, anonymised id for the person making the request, used for abuse detection.
Nudge this task ahead of your other queued tasks.
0 <= x <= 9Your own id for this task, echoed back so you can match it to your records.
Let the model compose the video as several shots.
What to keep out of the generated video.
How closely to follow the prompt. Higher stays nearer your wording; lower gives the model more freedom.
1 <= x <= 10Let the model expand your prompt with extra detail before it generates.
A named visual style, on models that offer them.
How much the subjects in frame are allowed to move.
Add background music to the generated video.
Keep the audio from your source video instead of generating new audio.
Which kinds of sound to generate: speech, effects, or both.
Container for the returned file. The accepted values are the model's own and the value is passed through unchecked.
Say up front whether you are generating from references, editing a video, or extending one, so a mismatch is caught when you submit rather than failing later.
Let the model look up current details mentioned in your prompt.
Encode at a higher bitrate for a cleaner picture and a larger file.
How many refinement steps to run. More can improve quality and takes longer.
1 <= x <= 100Run the model's own content check on the result.
How much the model reasons about your prompt before it starts generating.
Your own labels for this request, echoed back on the usage row and available as a filter and a group-by dimension in the usage API. String keys to string values. Never put personal or sensitive data here — tags are stored with the usage record and are not redacted.
Response
Task created; poll the returned id for status
The submit response, which carries one field retrieval cannot.
MESH-714. unsupported_params is the parameters the caller sent that the
SERVED provider drops — knowable only at submit, and reconstructing it on a
later read would mean persisting it per task. It is on a subclass rather than
on VideoTaskResponse because that model is also what the poll and list
paths return AND what upstream payloads are parsed into, so a field there
would appear as a null on responses that can never populate it.
Null (not absent) when nothing was dropped, like every other optional field.