Amux

Create task

Last updated September 8, 2026

Submit an async task for bytedance/doubao-seedance-2-0-fast through the unified entry point. Flat request body.

Submit a bytedance/doubao-seedance-2-0-fast video task through the unified entry point. The body is flat: prompt, material and parameters all at the top level.

POSThttps://gateway.amux.ai/v1/tasks

Authorization

header
AuthorizationstringRequired

Bearer <your Amux key> Your Amux API key.

Request

application/json
modelstringRequired

Always bytedance/doubao-seedance-2-0-fast. The bare doubao-seedance-2-0-fast works too, and it is case-insensitive.

promptstring

What to generate. Optional -- media alone is enough.

mediaarray<object>

Input material; each item states its role in type (the vendor shape calls that

field role). Only publicly reachable https URLs.

mediaarray<object>
type"first_frame" | "last_frame" | "reference_image" | "reference_video" | "reference_audio"Required

What this material is for. Limits: one first frame, one last frame, 9 reference images, 3 reference videos and 3 reference audio clips (video and audio clips run 2-15s each and cap at 15s combined).

⚠️ Audio alone is not accepted — at least one reference video or image is required.

⚠️ Frames and reference material are mutually exclusive — the vendor defines first frame, first-and-last frame and omni reference as three separate modes; mixing them is rejected.

urlstringRequired

A publicly reachable https URL. The model fetches it itself; we never do.

resolution"480p" | "720p"Default "720p"

Output resolution tier. This model offers 480p / 720p.

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 token rate.

durationintegerDefault -1

Output length in seconds: -1 or an integer from 4 to 15. -1 lets the model pick within that range.

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

aspect_ratio"adaptive" | "21:9" | "16:9" | "4:3" | "1:1" | "3:4" | "9:16"Default "adaptive"

Aspect ratio. adaptive follows the input material.

This model can be given a concrete ratio, first-frame scenes included — that restriction belongs to Seedance 2.5 only.

generate_audiobooleanDefault true

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.

watermarkbooleanDefault false

Whether to stamp an "AI generated" watermark in the bottom-right corner.

return_last_framebooleanDefault false

Whether to also return the last frame as a PNG (no watermark, same

dimensions as the video). Feed it back as the next segment's first frame

to chain continuous video.

web_searchbooleanDefault false

Web search. With it on, the model decides for itself whether to search the

web (products, weather and the like) -- better currency, some added latency.

Required: the vendor shape spells this tools: [{ type: "web_search" }] --

one capability, two wire formats.

priorityintegerDefault 0

Queue priority; higher goes first. It reorders the queue within one

endpoint only and never interrupts a task already running.

execution_expires_afterintegerDefault 172800

Task timeout in seconds, counted from creation; 48 hours by default. Past

it the task is terminated and marked expired.

userstring

A stable, unique identifier for your end user, used for abuse attribution.

Send a hash rather than a plaintext username or email.

webhook_urlstring

Where to POST the result once the task is terminal. The vendor shape calls this

callback_url -- one thing, two names. Must be a deliverable public https URL.

Response

200response

Accepted. Poll GET /v1/tasks/{id} with the returned id.

400response

Invalid parameters, an impossible material combination, or a 1.x parameter this generation does not accept.

402response

The available balance does not cover the reservation upper bound.

503response

No provider is currently available for this model.

How it relates to the native shape

Billing, routing and the reservation are identical; only the wire format differs:

Native shapeThis one
Prompt and materialOne content[] arrayprompt plus media[]
Material rolerolemedia[].type
Material URLNested image_url.urlFlat media[].url
Ratio parameterratioaspect_ratio
Web searchtools: [{ type: "web_search" }]Boolean web_search
End-user identifiersafety_identifieruser
Usage and cost on retrievalNoYes

Value ranges

ParameterThis model
resolution480p / 720p
duration-1 or an integer from 4 to 15
ratio / aspect_ratioadaptive or one of six ratios; a first-frame scene may also name one
Material limits1 first frame, 1 last frame, 9 reference images, 3 reference videos, 3 reference audio clips (2-15s each, 15s combined)
Audio alonenot allowed — at least one reference video or image
output_formatnot available
omni_reference_task_typenot available

prompt is optionalmedia alone is enough, the opposite of the MiniMax shape.

Billing is per token

usage.output_video_tokens is what the charge is computed from, and cost is that number times the token rate. Reference images and audio are free; a request carrying reference video moves the whole task to a lower rate.

Submitting returns a task ID

Poll the retrieval endpoint with id. Ten-odd minutes for one clip is normal, so do not hold an HTTP connection open for it.

cURL
curl https://gateway.amux.ai/v1/tasks \
  -H "Authorization: Bearer $AMUX_API_KEY" \
  -d '{
    "model": "bytedance/doubao-seedance-2-0-fast",
    "prompt": "A ginger cat running through fresh snow, slow motion",
    "resolution": "720p",
    "duration": -1
  }'
{
  "id": "task_01M1VD9E8WRYVBR7ES10SNQQQT",
  "status": "queued",
  "model": "bytedance/doubao-seedance-2-0-fast",
  "created_at": "<string>",
  "output": {
    "images": [
      {}
    ],
    "videos": [
      {
        "index": 0,
        "url": "<string>"
      }
    ]
  },
  "usage": {
    "input_tokens": 0,
    "output_tokens": 0,
    "total_tokens": 0,
    "output_video_tokens": 0
  },
  "cost": "0.83",
  "notes": [
    "<string>"
  ],
  "error": {
    "message": "<string>",
    "code": "<string>"
  }
}