Create a video task (Volcengine Ark shape)

The vendor-shaped entry point for Bytedance Seedance. If you already have Volcengine Ark code, point base_url at Amux — request and response shapes match what your client already sends.

This endpoint is asynchronous: submitting returns a task ID and you poll for the result. That is the vendor API's own contract, not an Amux limitation.

The task ID is an Amux ID

The id you get back is the Amux task ID, not the upstream one. The upstream handle stays internal: it would reveal which provider served the call, and it is not accepted on any Amux endpoint.

Every retrieval endpoint accepts only this ID. GET /v1/tasks/{id} and the Ark-shaped alias below read the same task, so SDKs that build the polling URL themselves keep working.

Three differences from the MiniMax shape

The two request bodies look almost identical — same flat parameters, same heterogeneous content[]. These are the three places that catch people out:

MiniMax shapeThis one
PromptRequiredOptional — frames or reference material alone are enough
Duration4-15s, no automatic mode-1 (model picks) or 4-30s / 4-15s depending on the model
CombiningFrames and reference material can be given togetherMutually exclusive — image-to-video and multimodal reference are two different modes

Billing is per token, not per second

Routing, price book and the reservation taken at submit time are the same as /v1/tasks. Choosing this endpoint changes the wire format, nothing else.

This model is billed per output token, which is unusual among the video models here — the others are billed per second of output. The upstream's own conversion is:

tokens = width x height x frames / 1024      frames = seconds x 24 + 1

Width and height follow the chosen resolution and the resulting aspect ratio, so a higher resolution usually costs more, driven by token count rather than unit price. 1080p and 4k each carry their own rate and do not move in the same direction (on seedance-2.0, 4k is priced below every other tier); read the per-tier rates off the pricing page.

A request that includes reference video moves to a lower token rate, and the discount applies to the whole task rather than just the input part. Reference images and reference audio are free; the cost of reference video is already inside the returned token count, so it is not billed separately.

The reservation covers 15 seconds of output, plus another 30 seconds when a reference video is present, and the difference is released at settlement.

post/api/v3/contents/generations/tasks

Request

  • Base URL: https://gateway.amux.ai
  • URL: https://gateway.amux.ai/api/v3/contents/generations/tasks
  • Auth: HTTP bearer

Request body

modelstring required

The Amux model ID. Four models serve this endpoint today, and they differ item by item:

ModelResolutionDurationOther
bytedance/seedance-2.5480p 720p 1080p-1 or 4-30s30/10/10 reference material; has output_format and omni_reference_task_type
bytedance/seedance-2.0480p 720p 1080p 4k-1 or 4-15s9/3/3 reference material
bytedance/seedance-2.0-fast480p 720p-1 or 4-15ssame as above
bytedance/seedance-2.0-mini480p 720p-1 or 4-15ssame as above

Asking for a tier a model does not have is rejected, not quietly downgraded: getting 720p when you asked for 1080p, and being billed for 720p, is worse than a clear error.

You can also point this at an endpoint ID (ep-…) from your own account — the upstream accepts either, and the mapping is per channel.

resolution'480p' | '720p' | '1080p' | '4k'

Output resolution tier. A higher tier mostly costs more because it produces more tokens, not because it carries a different unit price — the exceptions are 1080p and 4k, which each sit on their own rate.

Which tiers are legal depends on the model; see the table on model. 4k is only available on bytedance/seedance-2.0.

⚠️ 1080p and 4k output is 10-bit H.265/HEVC, which a few players cannot open.

durationinteger

Output length in seconds. -1 lets the model pick within the legal range, and all four models accept it (it is also the default on 2.5).

The range differs per model: 4-30s on 2.5, 4-15s on all three 2.0 models.

⚠️ Length drives the token count, which is what you are billed on.

ratio'adaptive' | '21:9' | '16:9' | '4:3' | '1:1' | '3:4' | '9:16'

Aspect ratio. adaptive follows the input material.

⚠️ bytedance/seedance-2.5 accepts only adaptive when a first frame is given, or for video edit / extend tasks: the output ratio always follows that image or the source video. The 2.0 models do not carry this restriction — they can be given an explicit ratio.

generate_audioboolean

Whether the output carries a soundtrack. On by default — the model generates matching dialogue, effects and score from the prompt and the visuals. Pass false explicitly for a silent video.

watermarkboolean

Whether to stamp an AIGC watermark on the output.

output_format'mp4' | 'mov'

Container format of the generated file. Only bytedance/seedance-2.5 has this parameter.

mov is the high-colour-fidelity format for post-production (H.264 + yuv444p + PCM); some players cannot open it.

return_last_frameboolean

Whether to also return the last frame as a PNG (no watermark, same dimensions as the video).

Feed it back as the first frame of the next call to chain continuous segments.

omni_reference_task_type'auto' | 'reference' | 'edit' | 'extend'

Sub-type of an omni-reference task. Only bytedance/seedance-2.5 has this parameter.

auto lets the model decide from the material and the prompt; naming it explicitly moves validation to submit time instead of failing asynchronously once the task is already running.

⚠️ edit carries two hard constraints: ratio must be adaptive and duration must be -1, and at least one reference video is required.

priorityinteger

Queue priority; higher goes first. It only reorders the queue within one endpoint and never interrupts a task already running.

execution_expires_afterinteger

Task timeout in seconds, counted from creation; 48 hours by default. Past it the task is terminated and marked expired.

safety_identifierstring

A stable, unique identifier for your end user, used for abuse attribution. Send a hash rather than a plaintext username or email.

On /v1/tasks this field is called user.

callback_urlstring uri

Called back when the task reaches a terminal state. This is Amux's webhook_url -- we simply accept it under the vendor's field name; the payload matches the unified endpoint exactly (the {event, sent_at, task} envelope, an Amux-Signature header, and backoff retries).

https only, and never a private address. The URL is validated at submit time.

Example request

{
  "model": "bytedance/seedance-2.5",
  "content": [
    {
      "type": "text",
      "text": "A ginger cat running through fresh snow, slow motion"
    }
  ],
  "resolution": "720p",
  "duration": -1
}

Response

Accepted. The body carries only id — take it to GET /v1/tasks/{id} (or the alias below) and poll.

idstring

The Amux task ID. Every retrieval endpoint accepts only this ID.

Changes

No recorded changes to this operation across all 1 revision of this API.